久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL語句有哪些

146次閱讀
沒有評論

共計 4664 個字符,預(yù)計需要花費 12 分鐘才能閱讀完成。

這篇文章給大家分享的是有關(guān) MySQL 語句有哪些的內(nèi)容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,一起跟隨丸趣 TV 小編過來看看吧。

SQL(Structured Query Language)語句,即結(jié)構(gòu)化查詢語言,是操作和檢索關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。SQL 語句一般分為以下幾種:

DCL(Database Control Language,數(shù)據(jù)控制語言)語句:主要由 GRANT 和 REVOKE 兩個關(guān)鍵字完成

DDL(Database Definition Language,數(shù)據(jù)定義語言)語句:主要由 CREATE、ALTER、DROP 和 TRUNCATE 四個關(guān)鍵字完成

DML(Database Manipulation Language,數(shù)據(jù)操作語言)語句:主要由 INSERT、UPDATE 和 DELETE 三個關(guān)鍵字完成

查詢語句:主要由 SELECT 語句完成

事務(wù)控制語句:主要由 COMMIT、ROLLBACK 和 SAVEPOINT 三個關(guān)鍵字完成

注:SQL 語句不區(qū)分大小寫,所以 create 和 CREATE 是相同的

一.DCL 語句

DCL 語句就是對用戶進行授權(quán)和授權(quán)收回的操作,可以對不同的用戶的權(quán)限進行控制,增加數(shù)據(jù)庫安全性,進行數(shù)據(jù)庫的維護。一般都是數(shù)據(jù)庫管理員使用超級用戶 root 進行操作。

MySQL 的權(quán)限命令是 grant,權(quán)限撤銷的命令時 revoke;

1.grant 授權(quán)格式:

grant  權(quán)限列表  on  庫. 表  to  用戶名 @ ip  identified by  密碼

2.revoke 回收權(quán)限格式:

revoke  權(quán)限列表  on  庫. 表  from  用戶名 @ ip

二.DDL 語句

數(shù)據(jù)庫對象:

表(table)、數(shù)據(jù)字典、約束(constraint)、視圖(view)、索引(index)、函數(shù)(function)、存儲過程(procedure)、觸發(fā)器(trigger)

CREATE、ALTER、DELETE 關(guān)鍵字分別是創(chuàng)建、修改和刪除數(shù)據(jù)庫對象的,此處使用我們使用最多的對表的操作來舉例

數(shù)據(jù)庫的數(shù)據(jù)類型可參考://www.jb51.net/article/55853.htm

數(shù)據(jù)庫的完整性約束可參考: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
);

注:查看表結(jié)構(gòu):DESCRIBE 表名;

2.ALTER:

1)添加列:

ALTER TABLE 表名
ADD column columnName1 datatype [default expr] [FIRST|AFTER colName];
columnName1:新添加的列名;
datatype:數(shù)據(jù)類型;
default expr:完整性約束;
FIRST|AFTER colName:插入位置,默認是插入在最后一列,F(xiàn)IRST 是在第一列,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

刪除表內(nèi)所有數(shù)據(jù)但保留表的結(jié)構(gòu),叫做“截斷”
TRUNCATE TABLE 表名;

e.g.

TRUNCATE TABLE student;

三.DML 語句

1.INSERT

標(biāo)準(zhǔn) SQL 語句只允許一次插入一條數(shù)據(jù),但 MySQL 對其進行擴展使其可以一次插入多條數(shù)據(jù)

插入一條數(shù)據(jù):

INSERT INTO 表名 VALUES(value1, value2, …);

插入多條數(shù)據(jù):

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

3.DELETE

DELETE FROM 表名 [WHERE CONDITION];

e.g. 將所有 1997 年出生的學(xué)生信息刪除

DELETE FROM student WHERE Birthday = 1997;

四. 查詢語句

1. 單表查詢:

SELECT COLUMN1, COLUMN2...
FROM  數(shù)據(jù)源
[WHERE CONDITION]
[GROUP BY columnName]
[ORDER BY columnName DESC|ASC]

e.g. 將計算機科學(xué)專業(yè)的學(xué)生選出來并按照學(xué)號降序排列,只顯示學(xué)生姓名

SELECT StuName FROM student 
WHERE StuMajor =  CS 
ORDER BY StuId DESC;

2. 多表查詢:

1)簡單的外連接方式

SELECT VALUE1[,VALUE2]...
FROM tableName1,tableName2
WHERE tableName1.column1 = tableName2.column2[AND ...];
WHERE  后跟的是連接條件和查詢條件

2)自連接:有時需要自己和自己進行連接,叫做自連接

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

對該表進行查詢操作:

SELECT employee.id, employee.name  員工名, manager.name  經(jīng)理名
FROM emp employee, emp manager
WHERE employee.managerId = manager.id;

該查詢語句使用自連接顯示員工和經(jīng)理的關(guān)系,其中:

 employee.name 員工名, manager.name 經(jīng)理名 員工名和經(jīng)理名是重命名,在顯示列時顯示員工名和經(jīng)理名;

 FROM emp employee, emp manager 兩個相同的表需要進行區(qū)分,起不同的名字;

 WHERE employee.managerId = manager.id 是連接條件

更多的多表連接可以參考:
https://www.jb51.net/article/154006.htm

五. 事務(wù)處理

1. 事務(wù)是由一步或幾步數(shù)據(jù)庫操作序列組成的邏輯執(zhí)行單元。

這系列操作要么全部執(zhí)行,要么全部放棄執(zhí)行。程序和事務(wù)是完全兩種不同的概念。一般而言,一段程序中可能包含多個事務(wù)。在 MySQL 中,有多種引擎,最常用的兩個引擎:InnoDB 和 MyISAM,其中 InnoDB 是支持事務(wù)的,而 MyISAM 是不支持的,可以在 config 配置文件中對其進行修改。

2. 事務(wù)的四個特性:

原子性(Atomicity):事務(wù)是應(yīng)用中最小的執(zhí)行單位。

一致性(Consistency):事務(wù)執(zhí)行的結(jié)果必須讓數(shù)據(jù)庫從一個一致性的狀態(tài)變成另外一個一致性的狀態(tài)。一致性是通過原子性保證的

隔離性(Isolation):各個事務(wù)執(zhí)行相互不干擾。

持續(xù)性(Durability):也成為持久性(Persistence),指事務(wù)一旦提交,將數(shù)據(jù)做的任何改變都保存進物理數(shù)據(jù)庫。

這四個特性也叫 ACID 性

3. 數(shù)據(jù)庫的事務(wù)由一組 DML 語句、一條 DDL 語句和一條 DCL 語句組成

DML 語句對數(shù)據(jù)進行操作

DDL 和 DCL 都各只有一條,因為 DDL 和 DCL 語句都會將事務(wù)提交

4. 事務(wù)的提交:

顯示提交:commit

自動提交:DDL/DCL 語句

MySQL 默認關(guān)閉事務(wù)(自動提交),在默認情況下,用戶輸入一條 DML 語句也會提交該操作,為了開啟事務(wù)可以通過以下語句對自動提交進行設(shè)置

SET AUTOCOMMIT = {0|1} 0 是關(guān)閉自動提交(開啟事務(wù)),1 是開啟自動提交(關(guān)閉事務(wù))

5. 事務(wù)的回滾(rollback)

事務(wù)包含的任意一個數(shù)據(jù)庫操作執(zhí)行失敗后執(zhí)行回滾事務(wù),將該事務(wù)中進行的操作全部失效。兩種方式:

顯示回滾:rollback

自動回滾:系統(tǒng)錯誤或強行退出

6. 例子:

若只是臨時開啟一個事務(wù)可以通過:start transaction 或 begin 開啟臨時事務(wù),在其之后的 DML 語句都不會立即執(zhí)行,直到出現(xiàn)事務(wù)的提交或回滾才結(jié)束事務(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; ②

①語句查詢的結(jié)果中包含插入的數(shù)據(jù),但如果此時在別的命令行窗口中執(zhí)行該語句,也不會看到以上的三條數(shù)據(jù),體現(xiàn)了事務(wù)的隔離性,這三條數(shù)據(jù)其實并沒有寫入物理數(shù)據(jù)庫;

在執(zhí)行了回滾操作后,在②的查詢語句的結(jié)果中看不到 begin 之后的那三條數(shù)據(jù)

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 設(shè)置中間點,可以設(shè)置回滾的位置,①處的查詢語句結(jié)果中包含三條插入數(shù)據(jù)的結(jié)果,但②處的查詢結(jié)果中不包含中間點 p 之后插入的數(shù)據(jù)。需要注意的是,回到中間點的回滾不會結(jié)束事務(wù)。

感謝各位的閱讀!關(guān)于“MySQL 語句有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-04發(fā)表,共計4664字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 西青区| 南漳县| 抚州市| 大安市| 固始县| 马公市| 琼中| 安陆市| 郎溪县| 淳安县| 当阳市| 普陀区| 容城县| 东台市| 富宁县| 芦山县| 岢岚县| 册亨县| 武胜县| 炉霍县| 海原县| 株洲县| 库尔勒市| 广德县| 徐闻县| 扶绥县| 凤冈县| 南汇区| 安陆市| 苍南县| 宣城市| 西丰县| 高安市| 体育| 额敏县| 田东县| 祁门县| 吉木乃县| 嘉禾县| 花莲市| 西贡区|