一、在sql語言中,數(shù)據(jù)操縱與數(shù)據(jù)控制的區(qū)別
在SQL語言中,數(shù)據(jù)操縱和數(shù)據(jù)控制是兩個不同的方面。數(shù)據(jù)操縱通常是針對數(shù)據(jù)庫中存儲的實(shí)際數(shù)據(jù)進(jìn)行的操作。例如:
SELECT:用于查詢數(shù)據(jù)庫中的數(shù)據(jù)記錄。INSERT:用于向數(shù)據(jù)庫中插入新的數(shù)據(jù)記錄。UPDATE:用于更新數(shù)據(jù)庫中現(xiàn)有的數(shù)據(jù)記錄。DELETE:用于刪除數(shù)據(jù)庫中的數(shù)據(jù)記錄。這些命令都是針對數(shù)據(jù)庫中實(shí)際存儲的數(shù)據(jù)進(jìn)行的操作。另一方面,數(shù)據(jù)控制主要是針對數(shù)據(jù)庫中數(shù)據(jù)的訪問權(quán)限進(jìn)行的管理和控制,包括:
GRANT:用于為數(shù)據(jù)庫用戶授權(quán),賦予其訪問特定數(shù)據(jù)庫對象的權(quán)限。REVOKE:用于撤銷數(shù)據(jù)庫用戶的權(quán)限,收回其訪問特定數(shù)據(jù)庫對象的權(quán)限。CREATE USER:用于創(chuàng)建新的數(shù)據(jù)庫用戶。DROP USER:用于刪除數(shù)據(jù)庫用戶。這些命令用于限制用戶對數(shù)據(jù)庫中數(shù)據(jù)的訪問權(quán)限,并確保只有經(jīng)過授權(quán)的用戶才能夠訪問數(shù)據(jù)庫中的數(shù)據(jù)。
二、SQL程序語言類型
SQL程序語言有四種類型,對數(shù)據(jù)庫的基本操作都屬于這四類,它們分別為;數(shù)據(jù)定義語言(DDL)、數(shù)據(jù)查詢語言(DQL)、數(shù)據(jù)操縱語言(DML)、數(shù)據(jù)控制語言(DCL)。
1、數(shù)據(jù)定義語言(DDL)
DDL全稱是Data Definition Language,即數(shù)據(jù)定義語言,定義語言就是定義關(guān)系模式、刪除關(guān)系、修改關(guān)系模式以及創(chuàng)建數(shù)據(jù)庫中的各種對象,比如表、聚簇、索引、視圖、函數(shù)、存儲過程和觸發(fā)器等等。數(shù)據(jù)定義語言是由SQL語言集中負(fù)責(zé)數(shù)據(jù)結(jié)構(gòu)定義與數(shù)據(jù)庫對象定義的語言,并且由CREATE、ALTER、DROP和TRUNCATE四個語法組成。比如:
--創(chuàng)建一個student表 create table student( id int identity(1,1) not null, name varchar(20) null, course varchar(20) null, grade numeric null )
--student表增加一個年齡字段alter table student add age int NULL
--student表刪除年齡字段,刪除的字段前面需要加column,不然會報錯,而添加字段不需要加columnalter 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ù)為空
2、數(shù)據(jù)操縱語言(DML)
數(shù)據(jù)操縱語言全程是Data Manipulation Language,主要是進(jìn)行插入元組、刪除元組、修改元組的操作。主要有insert、update、delete語法組成。
--向student表中插入數(shù)據(jù) --數(shù)據(jù)庫插入數(shù)據(jù) 一次性插入多行多列 格式為INSERT INTO table (字段1, 字段2,字段3) VALUES (值1,值2,值3),(值1,值2,值3),...; INSERT INTO student (name, course,grade) VALUES ('張飛','語文',90),('劉備','數(shù)學(xué)',70),('關(guān)羽','歷史',25),('張?jiān)?,'英語',13);
--更新關(guān)羽的成績 update student set grade='18' where name='關(guān)羽'
--關(guān)羽因?yàn)闅v史成績太低,要退學(xué),所以刪除關(guān)羽這個學(xué)生 delete from student where name='關(guān)羽'
3、數(shù)據(jù)查詢語言(DQL)
數(shù)據(jù)查詢語言全稱是Data Query Language,所以是用來進(jìn)行數(shù)據(jù)庫中數(shù)據(jù)的查詢的,即最常用的select語句
--從student表中查詢所有的數(shù)據(jù) select * from student
--從student表中查詢姓名為張飛的學(xué)生 select * from student where name='張飛'
4、數(shù)據(jù)控制語言(DCL)
數(shù)據(jù)控制語言:Data Control Language。用來授權(quán)或回收訪問數(shù)據(jù)庫的某種特權(quán),并控制數(shù)據(jù)庫操縱事務(wù)發(fā)生的時間及效果,能夠?qū)?shù)據(jù)庫進(jìn)行監(jiān)視。比如常見的授權(quán)、取消授權(quán)、回滾、提交等等操作。
創(chuàng)建用戶的語法結(jié)構(gòu):
CREATE USER 用戶名@地址 IDENTIFIED BY '密碼'; --創(chuàng)建一個testuser用戶,密碼111111 create user testuser@localhost identified by '111111';
給用戶授權(quán)的語法結(jié)構(gòu):
GRANT 權(quán)限1, … , 權(quán)限n ON 數(shù)據(jù)庫.對象 TO 用戶名; --將test數(shù)據(jù)庫中所有對象(表、視圖、存儲過程,觸發(fā)器等。*表示所有對象)的create,alter,drop,insert,update,delete,select賦給testuser用戶 grant create,alter,drop,insert,update,delete,select on test.* to testuser@localhost;
撤銷授權(quán)的語法結(jié)構(gòu):
REVOKE權(quán)限1, … , 權(quán)限n ON 數(shù)據(jù)庫.對象 FORM 用戶名;--將test數(shù)據(jù)庫中所有對象的create,alter,drop權(quán)限撤銷revoke create,alter,drop on test.* to testuser@localhost;
查看用戶權(quán)限的語法結(jié)構(gòu):
SHOW GRANTS FOR 用戶名; --查看testuser的用戶權(quán)限 show grants for testuser@localhost;
刪除用戶的語法結(jié)構(gòu):
DROP USER 用戶名;--刪除testuser用戶drop user testuser@localhost;
三、SQL 概述
1、什么是 SQL
==SQL(Structured Query Language)==是“結(jié)構(gòu)化查詢語言”,它是對關(guān)系型數(shù)據(jù)庫的操作語言。它可以應(yīng)用到所有關(guān)系型數(shù)據(jù)庫中,例如:MySQL、Oracle、SQL Server 等。結(jié)構(gòu)化查詢語言是高級的非過程化編程語言,允許用戶在高層數(shù)據(jù)結(jié)構(gòu)上工作。它不要求用戶指定對數(shù)據(jù)的存放方法,也不需要用戶了解具體的數(shù)據(jù)存放方式,所以具有完全不同底層結(jié)構(gòu)的不同數(shù)據(jù)庫系統(tǒng), 可以使用相同的結(jié)構(gòu)化查詢語言作為數(shù)據(jù)輸入與管理的接口。結(jié)構(gòu)化查詢語言語句可以嵌套,這使它具有極大的靈活性和強(qiáng)大的功能。
SQL 標(biāo)準(zhǔn)(ANSI/ISO)有:
SQL-92:1992 年發(fā)布的 SQL 語言標(biāo)準(zhǔn);SQL:1999:1999 年發(fā)布的 SQL 語言標(biāo)簽;SQL:2003:2003 年發(fā)布的 SQL 語言標(biāo)簽。這些標(biāo)準(zhǔn)就與 JDK 的版本一樣,在新的版本中總要有一些語法的變化。不同時期的數(shù)據(jù)庫對不同標(biāo)準(zhǔn)做了實(shí)現(xiàn)。
雖然 SQL 可以用在所有關(guān)系型數(shù)據(jù)庫中,但很多數(shù)據(jù)庫還都有標(biāo)準(zhǔn)之后的一些語法,我們可以稱之為“方言”。例如 MySQL 中的 LIMIT 語句就是 MySQL 獨(dú)有的方言,其它數(shù)據(jù)庫都不支持!當(dāng)然,Oracle 或 SQL Server 都有自己的方言。
2、語法要求
SQL 語句可以單行或多行書寫,以分號結(jié)尾;可以用空格和縮進(jìn)來來增強(qiáng)語句的可讀性;關(guān)鍵字不區(qū)別大小寫,建議使用大寫。延伸閱讀1:SQL語言的功能
SQL數(shù)據(jù)定義功能:能夠定義數(shù)據(jù)庫的三級模式結(jié)構(gòu),即外模式、全局模式和內(nèi)模式結(jié)構(gòu)。在SQL中,外模式又叫做視圖(View),全局模式簡稱模式(Schema),內(nèi)模式由系統(tǒng)根據(jù)數(shù)據(jù)庫模式自動實(shí)現(xiàn),一般無需用戶過問。SQL數(shù)據(jù)操縱功能:包括對基本表和視圖的數(shù)據(jù)插入、刪除和修改,特別是具有很強(qiáng)的數(shù)據(jù)查詢功能。 [3]SQL的數(shù)據(jù)控制功能:主要是對用戶的訪問權(quán)限加以控制,以保證系統(tǒng)的安全性。