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