??專欄【MySQL】
??喜歡的詩句:更喜岷山千里雪 三軍過后盡開顏。
??音樂分享【如愿】
大一同學(xué)小吉,歡迎并且感謝大家指出我的問題??
內(nèi)容有點(diǎn)多,建議大家先看目錄。
??關(guān)系型數(shù)據(jù)庫
?概念
建立在關(guān)系模型基礎(chǔ)上,由多張相互連接的二維表組成的數(shù)據(jù)庫
?特點(diǎn)
??使用表存儲數(shù)據(jù),格式統(tǒng)一,便于維護(hù)
??使用SQL語言操作,標(biāo)準(zhǔn)統(tǒng)一,使用方便
??MySQL數(shù)據(jù)庫的數(shù)據(jù)類型
通過客戶端,連接MySQL數(shù)據(jù)庫管理系統(tǒng)(DBMS),然后通過SQL語句,通過數(shù)據(jù)庫管理系統(tǒng)創(chuàng)建數(shù)據(jù)庫
也可以通過SQL語句,通過數(shù)據(jù)庫管理系統(tǒng),在指定的數(shù)據(jù)庫中創(chuàng)建表
在一個(gè)數(shù)據(jù)庫服務(wù)器中是可以創(chuàng)建多個(gè)數(shù)據(jù)庫的,而在一個(gè)數(shù)據(jù)庫中,又可以創(chuàng)建多張表,在表中,我們又能存儲一條一條的結(jié)構(gòu)
??所以數(shù)據(jù)庫和表就是MySQL數(shù)據(jù)庫的數(shù)據(jù)類型
??SQL通用語法
??SQL語句可以單行或多行書寫,并且以分號結(jié)尾
??SQL語句可以使用空格或縮進(jìn)來增強(qiáng)語句的可讀性
??MySQL數(shù)據(jù)庫的SQL語句不區(qū)分大小寫,關(guān)鍵字建議大寫
??單行注釋:–注釋內(nèi)容(或#注釋內(nèi)容)
??多行注釋:/ * 注釋內(nèi)容 * /
??SQL分類
?DDL語句操作——數(shù)據(jù)庫
??查詢所有數(shù)據(jù)庫(所有數(shù)據(jù)庫的名字)
show databases;
??查詢當(dāng)前數(shù)據(jù)庫
select database();
??創(chuàng)建數(shù)據(jù)庫
create database itcast;
可以加一個(gè)判斷條件,如果不存在數(shù)據(jù)庫的話,就創(chuàng)建一個(gè),否則不創(chuàng)建
create database if not exists itcast;
??創(chuàng)建數(shù)據(jù)庫并設(shè)置字符集
create database 數(shù)據(jù)庫名稱 default charset 字符集;
??刪除數(shù)據(jù)庫
drop database 數(shù)據(jù)庫名稱;
可以加一個(gè)判斷條件,如果存在這個(gè)數(shù)據(jù)庫,就刪除,否則不刪除
;
drop database if exists 數(shù)據(jù)庫名稱
??使用數(shù)據(jù)庫
例如
use itcast;
表示我要切換到itcast數(shù)據(jù)庫
?DDL語句操作——表
??查詢當(dāng)前數(shù)據(jù)庫的所有表
show tables;
?創(chuàng)建表
SQL寫完后要加上分號,如果沒有分號,那么就可以寫多行
數(shù)據(jù)庫里面的字符串類型是varchar()
(()里面是字符串長度)不是string
??查詢表結(jié)構(gòu)
查詢
表
不是查詢 數(shù)據(jù)庫
desc 表名;
??查詢指定表的建表語句
show create table 表名;
?DDL表操作——修改表
??修改數(shù)據(jù)類型
alter table 表名 modify 字段名 新數(shù)據(jù)類型(長度);
??修改字段名和字段類型
alter table 表名 change 舊字段名 新字段名 類型(長度) [comment 注釋];
??修改表名
alter table 表名 rename to 新表名;
??刪除字段
alter table 表名 drop 字段名;
??添加字段
alter table 表名 add 字段名 字段數(shù)據(jù)類型 [comment 注釋];
??刪除表
drop table 表名;
可以添加一個(gè)判斷條件
drop table if exists 表名;
??刪除表,并且自動創(chuàng)建該表
truncate table 表名;
為什么要這樣子操作
雖然會重新創(chuàng)建該表,但是該表的所有數(shù)據(jù)都不存在了
?總結(jié)
?DML語句——添加數(shù)據(jù)
??給 指定 字段添加數(shù)據(jù)
insert into 表名(字段名1,字段名2, ……) value(值1,值2);
??給 全部 字段添加數(shù)據(jù)
insert into 表名 value (值1,值2);
??批量添加數(shù)據(jù)
insert into 表名(字段名1,字段名2,……) value(值1,值2……),(值1,值2……),(值1,值2……);
或者
insert into 表名 value(值1,值2……),(值1,值2……),(值1,值2……);
??注意
?DML語句——修改數(shù)據(jù)
update 表名 set 字段名1=值1,字段名2=值2,……[where 條件];
加上where,就是修改符合條件的數(shù)據(jù),否則修改的是所有數(shù)據(jù)
??注意
修改語句的條件(where)可以有,也可以沒有,如果沒有條件,那么會修改整張表的所有數(shù)據(jù)
?DML語句——?jiǎng)h除數(shù)據(jù)
delete form 表名 [where 條件]
加上where,就是修改符合條件的數(shù)據(jù),否則修改的是所有數(shù)據(jù)
??注意
修改語句的條件(where)可以有,也可以沒有,如果沒有條件,那么會修改整張表的所有數(shù)據(jù)
??????delete語句不能刪除某一個(gè)字段的值(但是可以用update刪除)
?總結(jié)
?DQL語句——查詢數(shù)據(jù)
??基本查詢
??查詢多個(gè)字段
select 字段1,字段2,字段3……form 表名;
select * from 表名;
??設(shè)置別名
select 字段1 [AS 別名1],[AS 別名2]……from 表名;
??去除重復(fù)記錄
select distinct 字段列表 form 表名;
??條件查詢
select 字段列表 from 表名 where 條件列表;
條件
??聚合函數(shù)
概念:就是將一列數(shù)據(jù)作為一個(gè)整體,進(jìn)行縱向計(jì)算
select 聚合函數(shù)(字段列表) from 表名;
??注意
null是不參與所有聚合函數(shù)的計(jì)算的
??分組查詢
select 字段列表 from 表名 [where 條件] group by 分組字段名 [having 分組后過濾條件];
??where和having的區(qū)別
執(zhí)行時(shí)機(jī)不同:where是分組之前進(jìn)行過濾,不滿足where條件,不參與分組,而having是分組之后對結(jié)果進(jìn)行過濾
判斷條件不同:where不能對聚合函數(shù)進(jìn)行判斷,而having可以
??注意
執(zhí)行順序:where>聚合函數(shù)>having
分組之后,查詢的字段一般是聚合函數(shù)和分組字段,查詢其他字段沒有意義
??排序查詢
select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2;
??????排序方式
asc
升序(默認(rèn))desc
降序
??注意
如果是多字段排序,當(dāng)?shù)谝粋€(gè)字段值相同時(shí),才會根據(jù)第二個(gè)字段排序
??分頁查詢
select 字段列表 from 表名 limit 起始索引,查詢記錄數(shù);
??注意
?DQL語句——執(zhí)行順序
?總結(jié)
?DCL語句—用戶管理
DCL可以用來管理數(shù)據(jù)庫成員,控制數(shù)據(jù)庫的訪問權(quán)限
??查詢用戶
use mysql;
select * from user;
可以直接查看用戶表
??創(chuàng)建用戶
create user '用戶名'@'主機(jī)名' identified by '密碼';
??修改用戶密碼
alter user '用戶名'@'主機(jī)名' identified with mysql_native_password by '新密碼';
??刪除用戶
drop user '用戶名'@'主機(jī)名';
??注意
主機(jī)名可以用%通配,使用%后,表明可以用任意主機(jī)進(jìn)行訪問
?DCL語句—權(quán)限控制
我們創(chuàng)建了用戶后,我們會發(fā)現(xiàn),用戶可以登錄上MySQL,但是不能訪問任何的數(shù)據(jù)庫,只能訪問一個(gè)系統(tǒng)庫
原因就是用戶創(chuàng)建好了之后,并沒有給用戶分配權(quán)限
??查詢權(quán)限
show grants for '用戶名'@'主機(jī)名';
??授予權(quán)限
grant 權(quán)限列表 on 數(shù)據(jù)庫名.表名 to '用戶名'@'主機(jī)名';
??撤銷權(quán)限
remove 權(quán)限列表 on 數(shù)據(jù)庫名.表名 from '用戶名'@'主機(jī)名';
?總結(jié)
文章來源:http://www.zghlxwxcb.cn/news/detail-487854.html
??如果大家有不明白的地方,或者文章有問題,歡迎大家在評論區(qū)討論,指正??文章來源地址http://www.zghlxwxcb.cn/news/detail-487854.html
到了這里,關(guān)于【從刪庫到跑路】MySQL系列——詳細(xì)講解SQL的DDL,DML,DQL,DCL語句的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!