SQL通用語(yǔ)法以及分類(lèi)圖文詳解
MySQL的啟動(dòng)和連接&數(shù)據(jù)模型
MySQL的啟動(dòng)和停止
1.services.msc
2.命令行啟停
啟動(dòng):net start mysql80
停止:net stop mysql80
(命令行窗口以管理員權(quán)限打開(kāi),否則無(wú)訪問(wèn)系統(tǒng)服務(wù)權(quán)限)
MySQL數(shù)據(jù)庫(kù)客戶(hù)端連接
1.MySQL提供的客戶(hù)端命令行工具
(先確保mysql正在運(yùn)行中),否則會(huì)出現(xiàn)輸入密碼命令行窗口閃退的情況
mysql正常運(yùn)行中,在windows開(kāi)始菜單下找到:
單擊打開(kāi)命令行窗口后輸入MySQL密碼,即可進(jìn)入訪問(wèn)(密碼輸入錯(cuò)誤會(huì)閃退命令行窗口):
2.系統(tǒng)自帶的命令行執(zhí)行指令
(使用此方法必須提前配置系統(tǒng)的path環(huán)境變量)
mysql -u root -p[回車(chē)] -password
MySQL數(shù)據(jù)模型
1.在清楚MySQL數(shù)據(jù)模型前,需要先了解一個(gè)概念:關(guān)系型數(shù)據(jù)庫(kù)(RDBMS).
概念:建立在關(guān)系模型基礎(chǔ)上,由多張相互連接的二維表組成的數(shù)據(jù)庫(kù)
特點(diǎn):
- 使用表存儲(chǔ)結(jié)構(gòu),格式統(tǒng)一,便于維護(hù)
- 使用SQL語(yǔ)言操作,標(biāo)準(zhǔn)統(tǒng)一,便于操作
2.數(shù)據(jù)模型
SQL通用語(yǔ)法及分類(lèi)
1.SQL通用語(yǔ)法
- SOL語(yǔ)句可以單行或多行書(shū)寫(xiě)書(shū)寫(xiě),以分號(hào)結(jié)尾
- SQL語(yǔ)句可以使用空格和縮進(jìn)來(lái)增強(qiáng)程序的可讀性
- MySQL數(shù)據(jù)庫(kù)的SQL語(yǔ)句不區(qū)分大小寫(xiě),關(guān)鍵字建議使用大寫(xiě)
- 注釋?zhuān)?br />單行注釋?zhuān)?-注釋內(nèi)容 或者 #注釋內(nèi)容(MySQL特有)
多行注釋?zhuān)?*注釋內(nèi)容*/
2.SQL分類(lèi)
分類(lèi) | 全稱(chēng) | 說(shuō)明 |
---|---|---|
DDL | Date Definition Language | 數(shù)據(jù)定義語(yǔ)言,用來(lái)定義數(shù)據(jù)庫(kù)對(duì)象(數(shù)據(jù)庫(kù),表,字段,索引) |
DML | Date Manipulation Language | 數(shù)據(jù)庫(kù)操作語(yǔ)言,用來(lái)對(duì)數(shù)據(jù)庫(kù)表中的數(shù)據(jù)進(jìn)行增刪改 |
DQL | Date Query Language | 數(shù)據(jù)庫(kù)查詢(xún)語(yǔ)言,用來(lái)查詢(xún)數(shù)據(jù)庫(kù)中表的記錄 |
DCL | Date Control Language | 數(shù)據(jù)庫(kù)控制語(yǔ)言,用來(lái)創(chuàng)建數(shù)據(jù)庫(kù)用戶(hù),控制數(shù)據(jù)庫(kù)訪問(wèn)權(quán)限 |
Data Definition Language
DDL - 數(shù)據(jù)庫(kù)操作
查詢(xún)數(shù)據(jù)庫(kù)
創(chuàng)建數(shù)據(jù)庫(kù)
刪除數(shù)據(jù)庫(kù)
使用數(shù)據(jù)庫(kù)
使用上述指令進(jìn)行整體操作
DDL - 表操作
表操作 - 創(chuàng)建&&查詢(xún) 創(chuàng)建表
(創(chuàng)建表的最后一條語(yǔ)句不加逗號(hào),整條語(yǔ)句以分號(hào)結(jié)束)查詢(xún)當(dāng)前數(shù)據(jù)庫(kù)的所有表
查詢(xún)表結(jié)構(gòu)
查詢(xún)特定表的建表語(yǔ)句
使用上述指令進(jìn)行整體操作
表操作 - 數(shù)據(jù)類(lèi)型
MySQL中主要有數(shù)值類(lèi)型、日期類(lèi)型和字符串類(lèi)型。
數(shù)值-整數(shù)類(lèi)型
類(lèi)型名稱(chēng) | 說(shuō)明 | 存儲(chǔ)需求 | 有符號(hào)(SIGNED) | 無(wú)符號(hào)(UNSIGNED) |
---|---|---|---|---|
TINYINT | 很小的整數(shù) | 1byte | -128 - 127 | 0 - 255 |
SMALLINT | 小的整數(shù) | 2byte | -32768 - 32767 | 0 - 65535 |
MEDIUMINT | 中等大小的整數(shù) | 3byte | -8388608 - 8388607 | 0 - 16777215 |
INT(INTEGER) | 普通大小整數(shù) | 4byte | -2147483648 - 2147483647 | 0 - 4294967295 |
BIGINT | 大整數(shù) | 8byte | -9223372036854775808 - 9223372036854775807 | 0 - 18446744073709551615 |
dd
類(lèi)型名稱(chēng) | 說(shuō)明 | 存儲(chǔ)需求 | 有符號(hào)(SIGNED) | 無(wú)符號(hào)(UNSIGNED) |
---|---|---|---|---|
TINYINT | 很小的整數(shù) | 1byte | -128 - 127 | 0 - 255 |
SMALLINT | 小的整數(shù) | 2byte | -32768 - 32767 | 0 - 65535 |
MEDIUMINT | 中等大小的整數(shù) | 3byte | -8388608 - 8388607 | 0 - 16777215 |
INT(INTEGER) | 普通大小整數(shù) | 4byte | -2147483648 - 2147483647 | 0 - 4294967295 |
BIGINT | 大整數(shù) | 8byte | -9223372036854775808 - 9223372036854775807 | 0 - 18446744073709551615 |
數(shù)值-小數(shù)類(lèi)型
DECIMAL中的M:精度、D:標(biāo)度
精度M:整個(gè)數(shù)的長(zhǎng)度
標(biāo)度D:小數(shù)的位數(shù)
日期與時(shí)間類(lèi)型
類(lèi)型名稱(chēng) | 日期格式 | 日期范圍 | 存儲(chǔ)需求 |
---|---|---|---|
YEAR | YYYY | 1901-2155 | 1byte |
TIME | HH:MM:SS | -838:59:59-835:59:59 | 3byte |
DATE | YYYY-MM-DD | 1000-01-01~9999-12-31 | 3byte |
DATETIME | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00~9999-12-31 23:59:59 | 8byte |
TIMESTAMP | YYYY-MM-DD HH:MM:SS | 1970-01-01 00:00:01 UTC~2038-01-19 03:14:07 UTC | 4byte |
字符串類(lèi)型
類(lèi)型名稱(chēng) | 說(shuō)明 | 存儲(chǔ)需求 |
---|---|---|
CHAR(M) | 定長(zhǎng)文本字符串 | M字節(jié),1 - 255 |
VARCHAR(M) | 變長(zhǎng)文本字符串 | length +1字節(jié) |
TINYTEXT | 非常小的文本字符串 | length +1字節(jié) |
TEXT | 小的文本字符串 | length +2字節(jié) |
MEDIUMTEXT | 中等大小的文本字符串 | length +3字節(jié) |
LONGTEXT | 大的文本字符串 | length +4個(gè)字節(jié) |
EUNM | 枚舉類(lèi)型,只能有一個(gè)枚舉字符串值 | 1或2byte,取決于枚舉字符串的樹(shù)木 |
SET | 一個(gè)設(shè)置,字符串對(duì)象可以有一個(gè)或多個(gè)set成員 | 1,2,3,4或8,取決于集合成員的數(shù)量 |
類(lèi)型名稱(chēng) | 說(shuō)明 | 存儲(chǔ)需求 |
---|---|---|
BIT(M) | 位字段類(lèi)型 | (M+7)/8 byte |
BINARY(m) | 定長(zhǎng)二進(jìn)制字符串 | Mbyte |
VARBINARY(M) | 變長(zhǎng)二進(jìn)制字符串 | M+1byte |
TINYBLOB(M) | 非常小的BLOB | L+1 byte |
BOLB(M) | 小的BLOB | L+2byte |
MEDIUMBLOB(M) | 中等大小的BLOB | L+3byte |
LONGBLOB(M) | 非常大的BLOB | L+4byte |
表操作-修改&&刪除
添加字段
修改字段數(shù)據(jù)類(lèi)型
修改字段名和字段類(lèi)型
刪除表中的字段
修改表名
刪除表
格式化表(刪除表中的數(shù)據(jù)并重新創(chuàng)建)
使用上述指令進(jìn)行整體操作
DDL總結(jié)
DDL數(shù)據(jù)庫(kù)操作
- show databases;
顯示當(dāng)前的所有數(shù)據(jù)庫(kù) - create database [if not exists] 數(shù)據(jù)庫(kù)名;
創(chuàng)建數(shù)據(jù)庫(kù) - use 數(shù)據(jù)庫(kù)名;
使用/進(jìn)入當(dāng)前數(shù)據(jù)庫(kù) - select database();
查詢(xún)當(dāng)前所在數(shù)據(jù)庫(kù) - drop database [if exists] 數(shù)據(jù)庫(kù)名;
刪除當(dāng)前數(shù)據(jù)庫(kù)
DDL表操作
- show tables;
顯示當(dāng)前數(shù)據(jù)庫(kù)中的所有表 - create table 表名(字段 字段類(lèi)型 [comment '注釋'], 字段 字段類(lèi)型 [comment '注釋'] ...) [coomment '注釋'] ;
在當(dāng)前數(shù)據(jù)庫(kù)中新建一張表 - desc 表名;
查詢(xún)當(dāng)前表的結(jié)構(gòu) - show create table 表名;
顯示創(chuàng)建該表時(shí)的語(yǔ)句 - alter table add/modify/change/drop/rename to
添加字段,修改字段類(lèi)型,修改字段,刪除字段,重命名表 - drop table 表名;
刪除當(dāng)前表
(可視化工具 - dataTrip)??
Data Manipulation Language
DML - 插入數(shù)據(jù)insert
insert into 表名(字段,字段...) values(值1,值2...); -- 表中的字段和值一一對(duì)應(yīng)
insert into 表名(字段1,字段2...) values(值1,值2...),(值1,值2...); -- 一次添加多組數(shù)據(jù),字段值和值要一一對(duì)應(yīng)
insert into 表名 values(值1,值2...); -- 值要和表中的字段一一對(duì)應(yīng) insert into 表名 values(值1,值2...),(值1,值2...); -- 一次添加多組數(shù)據(jù),數(shù)據(jù)要和表中的字段一一對(duì)應(yīng)
插入數(shù)據(jù)的注意事項(xiàng)
- 插入的數(shù)據(jù)應(yīng)當(dāng)與表中的字段一一對(duì)應(yīng)
- 插入數(shù)據(jù)如果類(lèi)型是字符串或者日期,應(yīng)當(dāng)用引號(hào)修飾
- 添加的數(shù)據(jù)應(yīng)當(dāng)在定義的數(shù)據(jù)類(lèi)型的范圍內(nèi)
DML - 更新數(shù)據(jù)update
update 表名 set 字段1=值1,字段2=值2...[where 條件]; -- update是針對(duì)字段來(lái)進(jìn)行操作的
DML - 刪除數(shù)據(jù)delete
delete from 表名 [where 條件]; -- delete針對(duì)的操作對(duì)象是表中的一整條數(shù)據(jù)
使用上述SQL命令整體進(jìn)行表的數(shù)據(jù)操作:
使用insert向表中添加數(shù)據(jù):
使用update更新表中的數(shù)據(jù):
使用delete刪除表中的數(shù)據(jù):
Data Query Language
DQL --- 基礎(chǔ)查詢(xún)
查詢(xún)多個(gè)字段
select 字段1[as 別名],字段2[as 別名],字段3[as 別名]...from 表名; //as可以省略 select * from 表名; //返回表中的所有字段中的信息
查詢(xún)多個(gè)字段去重
select distinct 字段列表 from 表名; -- 去重查詢(xún)
DQL --- 條件查詢(xún)
select 字段列表 from 表明 where [條件列表];
使用上述查詢(xún)進(jìn)行整體操作:
DQL - 聚合函數(shù)
函數(shù) | 作用 |
avg() | 返回某列的平均值 |
sum() | 返回某列值的和 |
count() | 返回某列的行數(shù) |
max() | 返回某列的最大值 |
min() | 返回某列的最小值 |
select 聚合函數(shù)(字段列表) from 表名;
使用聚合函數(shù)進(jìn)行查詢(xún)時(shí),null不參與聚合函數(shù)的運(yùn)算,如果統(tǒng)計(jì)表的行數(shù),使用count(*)即可。
使用上述查詢(xún)進(jìn)行整體操作:
DQL - 分組查詢(xún)
select 字段列表 from 表名 [where條件] group by 分組字段名 [having分組后的過(guò)濾條件];
where和having的區(qū)別:
- where是對(duì)分組前的數(shù)據(jù)進(jìn)行過(guò)濾,不滿(mǎn)足分組條件的數(shù)據(jù)不參與分組,而having是對(duì)分組之后的數(shù)據(jù)進(jìn)行過(guò)濾
- where不能對(duì)聚合函數(shù)進(jìn)行判斷,having可以
使用上述查詢(xún):
DQL - 排序查詢(xún)
select 字段列表 from 表名 order by 字段名 排序方式,字段名,排序方式; //當(dāng)按照第一個(gè)字段排序時(shí)順序相同時(shí),就按照第二個(gè)字段及其規(guī)則進(jìn)行排序返回 //asc 升序排列(默認(rèn)值,可以省略) //desc 降序排列
DQL - 分頁(yè)查詢(xún)
select 字段列表 from 表名 limit 起始索引,每頁(yè)查詢(xún)的數(shù)據(jù)條數(shù); -- 起始索引為: (頁(yè)數(shù) - 1) * 每頁(yè)數(shù)據(jù)的條數(shù) -- 第一頁(yè)的起始索引可以省略
DDL - 語(yǔ)句執(zhí)行順序
- from -- 找到對(duì)應(yīng)的表
- where -- 根據(jù)條件進(jìn)行篩選
- group -- 篩選后分組
- select -- 選出處理后的數(shù)據(jù)
- order by -- 進(jìn)行數(shù)據(jù)的排序
- limit -- 數(shù)據(jù)分頁(yè)
DQL總結(jié)
-- 基礎(chǔ)查詢(xún) select 字段列表 from 表名; -- 條件查詢(xún) select 字段列表 form 表名 where 條件; -- 分組查詢(xún) select 字段列表 from 表名 [where條件] group by 分組字段名 [having過(guò)濾條件]; -- 排序查詢(xún) select 字段列表 from 表名 [where條件] order by 字段名 排序方式,字段名 排序方式; --分頁(yè)查詢(xún) select 字段列表 from 表名 [where條件] limit 起始索引,每頁(yè)查詢(xún)的信息條數(shù);
Data Control Language
DCL - 用戶(hù)管理
-- 使用管理員賬號(hào)進(jìn)入mysql數(shù)據(jù)庫(kù)下 -- 查詢(xún)用戶(hù) use mysql; select * from user; -- 創(chuàng)建用戶(hù) create user '用戶(hù)名'@'主機(jī)名' identified by '密碼'; -- 修改用戶(hù)密碼 alter user '用戶(hù)名'@'主機(jī)名' identified with mysql_native_password by '密碼'; -- 刪除用戶(hù) drop user '用戶(hù)名'@'主機(jī)名';
DCL - 權(quán)限控制
-- 查詢(xún)權(quán)限 show grants for '用戶(hù)名'@'主機(jī)名'; -- 授予權(quán)限 grant 權(quán)限列表 on 數(shù)據(jù)庫(kù)名.表名 to '用戶(hù)名'@'主機(jī)名'; -- 撤銷(xiāo)權(quán)限 revoke 權(quán)限列表 on 數(shù)據(jù)庫(kù)名.表名 from '用戶(hù)名'@'主機(jī)名';
總結(jié)
到此這篇關(guān)于SQL通用語(yǔ)法以及分類(lèi)的文章就介紹到這了,更多相關(guān)SQL通用語(yǔ)法及分類(lèi)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL 鎖的相關(guān)知識(shí)總結(jié)
這篇文章主要介紹了MySQL 鎖的相關(guān)知識(shí)總結(jié),幫助大家更好的理解和使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下2021-01-01Mysql中如何批量替換某個(gè)字段的值:replace
這篇文章主要介紹了Mysql中如何批量替換某個(gè)字段的值:replace,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09MySQL5.7安裝過(guò)程并重置root密碼的方法(shell 腳本)
由于 MySQL 5.7 版本的 root 密碼是首次啟動(dòng)時(shí)隨機(jī)生成的,并且還要求必須修改后才能使用。下面小編給大家分享使用shell 腳本完成安裝和設(shè)置新的 root 密碼的方法,一起看看吧2016-12-1219個(gè)MySQL性能優(yōu)化要點(diǎn)解析
這篇文章主要介紹了19個(gè)MySQL性能優(yōu)化要點(diǎn),并對(duì)其都進(jìn)行了深入解析,感興趣的小伙伴們可以參考一下2015-08-08Mysql循環(huán)插入數(shù)據(jù)的實(shí)現(xiàn)
這篇文章主要介紹了Mysql循環(huán)插入數(shù)據(jù)的實(shí)現(xiàn)過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08mysql字符串拼接并設(shè)置null值的實(shí)例方法
在本文中小編給大家整理的是關(guān)于mysql 字符串拼接+設(shè)置null值的實(shí)例內(nèi)容以及具體方法,需要的朋友們可以學(xué)習(xí)下。2019-09-09mysql重裝后出現(xiàn)亂碼設(shè)置為utf8可解決
mysql重裝后出現(xiàn)亂碼解決辦法:只能在配置文件中將database 和 server 字符集 設(shè)置為utf8 ,否則不起作用,具體如下感興趣的朋友可以參考下哈,希望對(duì)大家有所幫助2013-07-07