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