這篇文章給大家分享的是有關(guān)語(yǔ)句有哪些的內容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
SQL(Structured Query Language)語(yǔ)句,即結構化查詢(xún)語(yǔ)言,是操作和檢索關(guān)系數據庫的標準語(yǔ)言。SQL語(yǔ)句一般分為以下幾種:
DCL(Database Control Language,數據控制語(yǔ)言)語(yǔ)句:主要由GRANT和REVOKE兩個(gè)關(guān)鍵字完成
DDL(Database Definition Language,數據定義語(yǔ)言)語(yǔ)句:主要由CREATE、ALTER、DROP和TRUNCATE四個(gè)關(guān)鍵字完成
DML(Database Manipulation Language,數據操作語(yǔ)言)語(yǔ)句:主要由INSERT、UPDATE和DELETE三個(gè)關(guān)鍵字完成
查詢(xún)語(yǔ)句:主要由SELECT語(yǔ)句完成
事務(wù)控制語(yǔ)句:主要由COMMIT、ROLLBACK和SAVEPOINT三個(gè)關(guān)鍵字完成
注:SQL語(yǔ)句不區分大小寫(xiě),所以create和CREATE是相同的
一.DCL語(yǔ)句
DCL語(yǔ)句就是對用戶(hù)進(jìn)行授權和授權收回的操作,可以對不同的用戶(hù)的權限進(jìn)行控制,增加數據庫安全性,進(jìn)行數據庫的維護。一般都是數據庫管理員使用超級用戶(hù)root進(jìn)行操作。
MySQL的權限命令是grant,權限撤銷(xiāo)的命令時(shí)revoke;
1.grant授權格式:
grant 權限列表 on 庫.表 to 用戶(hù)名@'ip' identified by "密碼";
2.revoke回收權限格式:
revoke 權限列表 on 庫.表 from 用戶(hù)名@'ip';
二.DDL語(yǔ)句
數據庫對象:
表(table)、數據字典、約束(constraint)、視圖(view)、索引(index)、函數(function)、存儲過(guò)程(procedure)、觸發(fā)器(trigger)
CREATE、ALTER、DELETE關(guān)鍵字分別是創(chuàng )建、修改和刪除數據庫對象的,此處使用我們使用最多的對表的操作來(lái)舉例
數據庫的數據類(lèi)型可參考://www.jb51.net/article/55853.htm
數據庫的完整性約束可參考:https://www.jb51.net/article/154000.htm
1.CREATE:
CREATE TABLE [模式名.] 表名(
該表中的列定義
);
e.g.
CREATE TABLE test( StuId VARCHAR(8) PRIMARY KEY, StuName VARCHAR(30) NOT NULL, StuAge SMALLINT NOT NULL, StuBirth DATETIME );
注:查看表結構:DESCRIBE 表名;
2.ALTER:
1)添加列:
ALTER TABLE 表名
ADD column columnName1 datatype [default expr] [FIRST|AFTER colName];
columnName1:新添加的列名;
datatype:數據類(lèi)型;
default expr:完整性約束;
FIRST|AFTER colName:插入位置,默認是插入在最后一列,FIRST是在第一列,AFTER colName是在指定列后插入
e.g.
ALTER TABLE test ADD column StuMajor VARCHAR(20) NOT NULL AFTER StuName;
2)修改列
ALTER TABLE 表名 CHANGE oldName newName datatype;
e.g.
ALTER TABLE test CHANGE StuBirth Birthday year;
3)刪除列
ALTER TABLE 表名 DROP column columnName;
e.g.
ALTER TABLE test DROP column StuMajor;
4)修改表名
ALTER TABEL 表名 RENAME TO 新表名;
e.g.
ALTER TABLE test RENAME TO student;
3.DROP
刪除表
DROP TABLE 表名;
e.g.
DROP TABLE student;
4.TRUNCATE
刪除表內所有數據但保留表的結構,叫做“截斷”
TRUNCATE TABLE 表名;
e.g.
TRUNCATE TABLE student;
三.DML語(yǔ)句
1.INSERT
標準SQL語(yǔ)句只允許一次插入一條數據,但MySQL對其進(jìn)行擴展使其可以一次插入多條數據
插入一條數據:
INSERT INTO 表名 VALUES(value1, value2, ...);
插入多條數據:
INSERT INTO 表名 VALUES(value1,value2,...),(value1,value2,...),(value1,value2,...);
e.g.
INSERT INTO student VALUES(‘001','Lisa',20,1997),(‘002','Rose',21,1996);
2.UPDATE
UPDATE 表名 SET COLUMN1 = VALUE1[, COLUMN2 = VALUE2]...
[WHERE CONDITION];
e.g.將所有年齡大于20歲的學(xué)生的年齡+1
UPDATE student SET StuAge = StuAge+1 WHERE StuAge>20;
3.DELETE
DELETE FROM 表名 [WHERE CONDITION];
e.g.將所有1997年出生的學(xué)生信息刪除
DELETE FROM student WHERE Birthday = 1997;
四.查詢(xún)語(yǔ)句
1.單表查詢(xún):
SELECT COLUMN1, COLUMN2... FROM 數據源 [WHERE CONDITION] [GROUP BY columnName] [ORDER BY columnName DESC|ASC]
e.g.將計算機科學(xué)專(zhuān)業(yè)的學(xué)生選出來(lái)并按照學(xué)號降序排列,只顯示學(xué)生姓名
SELECT StuName FROM student WHERE StuMajor = 'CS' ORDER BY StuId DESC;
2.多表查詢(xún):
1)簡(jiǎn)單的外連接方式
SELECT VALUE1[,VALUE2]... FROM tableName1,tableName2 WHERE tableName1.column1 = tableName2.column2[AND ...]; WHERE 后跟的是連接條件和查詢(xún)條件
2)自連接:有時(shí)需要自己和自己進(jìn)行連接,叫做自連接
e.g.
有如下的表temp
CREATE TABLE emp( id INT AUTO_INCRETMENT PRIMARY KEY, name VARCAHR(255), mangerId INT, FOREIGN KEY(managerId) references temp(id) );
其中有四條記錄
id name managerId
1 aaa null
2 bbb 1
3 ccc 1
4 ddd 1
對該表進(jìn)行查詢(xún)操作:
SELECT employee.id, employee.name 員工名, manager.name 經(jīng)理名 FROM emp employee, emp manager WHERE employee.managerId = manager.id;
該查詢(xún)語(yǔ)句使用自連接顯示員工和經(jīng)理的關(guān)系,其中:
employee.name 員工名, manager.name 經(jīng)理名 員工名和經(jīng)理名是重命名,在顯示列時(shí)顯示員工名和經(jīng)理名;
FROM emp employee, emp manager 兩個(gè)相同的表需要進(jìn)行區分,起不同的名字;
WHERE employee.managerId = manager.id 是連接條件
更多的多表連接可以參考:
https://www.jb51.net/article/154006.htm
五.事務(wù)處理
1.事務(wù)是由一步或幾步數據庫操作序列組成的邏輯執行單元。
這系列操作要么全部執行,要么全部放棄執行。程序和事務(wù)是完全兩種不同的概念。一般而言,一段程序中可能包含多個(gè)事務(wù)。在MySQL中,有多種引擎,最常用的兩個(gè)引擎:InnoDB和MyISAM,其中InnoDB是支持事務(wù)的,而MyISAM是不支持的,可以在config配置文件中對其進(jìn)行修改。
2.事務(wù)的四個(gè)特性:
原子性(Atomicity):事務(wù)是應用中最小的執行單位。
一致性(Consistency):事務(wù)執行的結果必須讓數據庫從一個(gè)一致性的狀態(tài)變成另外一個(gè)一致性的狀態(tài)。一致性是通過(guò)原子性保證的
隔離性(Isolation):各個(gè)事務(wù)執行相互不干擾。
持續性(Durability):也成為持久性(Persistence),指事務(wù)一旦提交,將數據做的任何改變都保存進(jìn)物理數據庫。
這四個(gè)特性也叫ACID性
3.數據庫的事務(wù)由一組DML語(yǔ)句、一條DDL語(yǔ)句和一條DCL語(yǔ)句組成
DML語(yǔ)句對數據進(jìn)行操作
DDL和DCL都各只有一條,因為DDL和DCL語(yǔ)句都會(huì )將事務(wù)提交
4.事務(wù)的提交:
顯示提交:commit
自動(dòng)提交:DDL/DCL語(yǔ)句
MySQL默認關(guān)閉事務(wù)(自動(dòng)提交),在默認情況下,用戶(hù)輸入一條DML語(yǔ)句也會(huì )提交該操作,為了開(kāi)啟事務(wù)可以通過(guò)以下語(yǔ)句對自動(dòng)提交進(jìn)行設置
SET AUTOCOMMIT = {0|1} 0是關(guān)閉自動(dòng)提交(開(kāi)啟事務(wù)),1是開(kāi)啟自動(dòng)提交(關(guān)閉事務(wù))
5.事務(wù)的回滾(rollback)
事務(wù)包含的任意一個(gè)數據庫操作執行失敗后執行回滾事務(wù),將該事務(wù)中進(jìn)行的操作全部失效。兩種方式:
顯示回滾:rollback
自動(dòng)回滾:系統錯誤或強行退出
6.例子:
若只是臨時(shí)開(kāi)啟一個(gè)事務(wù)可以通過(guò):start transaction或begin開(kāi)啟臨時(shí)事務(wù),在其之后的DML語(yǔ)句都不會(huì )立即執行,直到出現事務(wù)的提交或回滾才結束事務(wù)。
e.g.1
BEGIN; INSERT INTO student VALUES(NULL,'001','aaa'); INSERT INTO student VALUES(NULL,'002','bbb'); INSERT INTO student VALUES(NULL,'003','ccc'); SELECT * FROM student; ① ROLLBACK; SELECT * FROM student; ②
①語(yǔ)句查詢(xún)的結果中包含插入的數據,但如果此時(shí)在別的命令行窗口中執行該語(yǔ)句,也不會(huì )看到以上的三條數據,體現了事務(wù)的隔離性,這三條數據其實(shí)并沒(méi)有寫(xiě)入物理數據庫;
在執行了回滾操作后,在②的查詢(xún)語(yǔ)句的結果中看不到begin之后的那三條數據
e.g.2
INSERT INTO student VALUES(NULL,'001','aaa'); INSERT INTO student VALUES(NULL,'002','bbb'); SAVEPOINT p; INSERT INTO student VALUES(NULL,'003','ccc'); SELECT * FROM student; ① ROLLBACK TO p; SELECT * FROM student; ②
MySQL還提供關(guān)鍵字SAVEPOINT設置中間點(diǎn),可以設置回滾的位置,①處的查詢(xún)語(yǔ)句結果中包含三條插入數據的結果,但②處的查詢(xún)結果中不包含中間點(diǎn)p之后插入的數據。需要注意的是,回到中間點(diǎn)的回滾不會(huì )結束事務(wù)。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站