SQL語(yǔ)言:DDL、DML、DQL、DCL詳解
前言
SQL程序語(yǔ)言有四種類型,對(duì)數(shù)據(jù)庫(kù)的基本操作都屬于這四類,它們分別為;數(shù)據(jù)定義語(yǔ)言(DDL)、數(shù)據(jù)查詢語(yǔ)言(DQL)、數(shù)據(jù)操縱語(yǔ)言(DML)、數(shù)據(jù)控制語(yǔ)言(DCL)
數(shù)據(jù)定義語(yǔ)言(DDL)
DDL全稱是Data Definition Language,即數(shù)據(jù)定義語(yǔ)言,定義語(yǔ)言就是定義關(guān)系模式、刪除關(guān)系、修改關(guān)系模式以及創(chuàng)建數(shù)據(jù)庫(kù)中的各種對(duì)象,比如表、聚簇、索引、視圖、函數(shù)、存儲(chǔ)過程和觸發(fā)器等等。
數(shù)據(jù)定義語(yǔ)言是由SQL語(yǔ)言集中負(fù)責(zé)數(shù)據(jù)結(jié)構(gòu)定義與數(shù)據(jù)庫(kù)對(duì)象定義的語(yǔ)言,并且由CREATE、ALTER、DROP和TRUNCATE四個(gè)語(yǔ)法組成。比如:
--創(chuàng)建一個(gè)student表
create table student(
id int identity(1,1) not null,
name varchar(20) null,
course varchar(20) null,
grade numeric null
)
--student表增加一個(gè)年齡字段
alter table student add age int NULL
--student表刪除年齡字段,刪除的字段前面需要加column,不然會(huì)報(bào)錯(cuò),而添加字段不需要加column
alter table student drop Column age
--刪除student表
drop table student --刪除表的數(shù)據(jù)和表的結(jié)構(gòu)
truncate table student -- 只是清空表的數(shù)據(jù),,但并不刪除表的結(jié)構(gòu),student表還在只是數(shù)據(jù)為空
數(shù)據(jù)操縱語(yǔ)言(DML)
數(shù)據(jù)操縱語(yǔ)言全程是Data Manipulation Language,主要是進(jìn)行插入元組、刪除元組、修改元組的操作。主要有insert、update、delete語(yǔ)法組成。
--向student表中插入數(shù)據(jù)
--數(shù)據(jù)庫(kù)插入數(shù)據(jù) 一次性插入多行多列 格式為INSERT INTO table (字段1, 字段2,字段3) VALUES (值1,值2,值3),(值1,值2,值3),...;
INSERT INTO student (name, course,grade) VALUES ('張飛','語(yǔ)文',90),('劉備','數(shù)學(xué)',70),('關(guān)羽','歷史',25),('張?jiān)?,'英語(yǔ)',13);
--更新關(guān)羽的成績(jī)
update student set grade='18' where name='關(guān)羽'
--關(guān)羽因?yàn)闅v史成績(jī)太低,要退學(xué),所以刪除關(guān)羽這個(gè)學(xué)生
delete from student where name='關(guān)羽'
數(shù)據(jù)查詢語(yǔ)言(DQL)
數(shù)據(jù)查詢語(yǔ)言全稱是Data Query Language,所以是用來進(jìn)行數(shù)據(jù)庫(kù)中數(shù)據(jù)的查詢的,即最常用的select語(yǔ)句。
--從student表中查詢所有的數(shù)據(jù)
select * from student
--從student表中查詢姓名為張飛的學(xué)生
select * from student where name='張飛'
數(shù)據(jù)控制語(yǔ)言(DCL)
數(shù)據(jù)控制語(yǔ)言:Data Control Language。用來授權(quán)或回收訪問數(shù)據(jù)庫(kù)的某種特權(quán),并控制數(shù)據(jù)庫(kù)操縱事務(wù)發(fā)生的時(shí)間及效果,能夠?qū)?shù)據(jù)庫(kù)進(jìn)行監(jiān)視。
比如常見的授權(quán)、取消授權(quán)、回滾、提交等等操作。
1、創(chuàng)建用戶
語(yǔ)法結(jié)構(gòu):
CREATE USER 用戶名@地址 IDENTIFIED BY '密碼';
--創(chuàng)建一個(gè)testuser用戶,密碼111111
create user testuser@localhost identified by '111111';
2、給用戶授權(quán)
語(yǔ)法結(jié)構(gòu):
GRANT 權(quán)限1, … , 權(quán)限n ON 數(shù)據(jù)庫(kù).對(duì)象 TO 用戶名;
--將test數(shù)據(jù)庫(kù)中所有對(duì)象(表、視圖、存儲(chǔ)過程,觸發(fā)器等。*表示所有對(duì)象)的create,alter,drop,insert,update,delete,select賦給testuser用戶
grant create,alter,drop,insert,update,delete,select on test.* to testuser@localhost;
3、撤銷授權(quán)
語(yǔ)法結(jié)構(gòu):
REVOKE權(quán)限1, … , 權(quán)限n ON 數(shù)據(jù)庫(kù).對(duì)象 FORM 用戶名;
--將test數(shù)據(jù)庫(kù)中所有對(duì)象的create,alter,drop權(quán)限撤銷
revoke create,alter,drop on test.* to testuser@localhost;
4、查看用戶權(quán)限
語(yǔ)法結(jié)構(gòu):
SHOW GRANTS FOR 用戶名;
--查看testuser的用戶權(quán)限
show grants for testuser@localhost;
5、刪除用戶
語(yǔ)法結(jié)構(gòu):
DROP USER 用戶名;
--刪除testuser用戶
drop user testuser@localhost;
6、修改用戶密碼
語(yǔ)法結(jié)構(gòu):
USE mysql;
UPDATE USER SET PASSWORD=PASSWORD(‘密碼’) WHERE User=’用戶名’ and Host=’IP’;
FLUSH PRIVILEGES;
--將testuser的密碼改為123456
update user set password=password('123456') where user='testuser' and host=’localhost’;
FLUSH PRIVILEGES;
結(jié)尾
本文對(duì)SQL程序語(yǔ)言有四種操作語(yǔ)言做了一個(gè)簡(jiǎn)單的介紹和概括,對(duì)數(shù)據(jù)庫(kù)的基本操作都屬于這四類,它們分別為;數(shù)據(jù)定義語(yǔ)言(DDL)、數(shù)據(jù)查詢語(yǔ)言(DQL)、數(shù)據(jù)操縱語(yǔ)言(DML)、數(shù)據(jù)控制語(yǔ)言(DCL) 。