最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL語句整理及匯總介紹

 更新時(shí)間:2019年01月04日 10:34:20   作者:sdr_zd  
今天小編就為大家分享一篇關(guān)于MySQL語句整理及匯總介紹,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧

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

  1. DCL(Database Control Language,數(shù)據(jù)控制語言)語句:主要由GRANT和REVOKE兩個(gè)關(guān)鍵字完成
  2. DDL(Database Definition Language,數(shù)據(jù)定義語言)語句:主要由CREATE、ALTER、DROP和TRUNCATE四個(gè)關(guān)鍵字完成
  3. DML(Database Manipulation Language,數(shù)據(jù)操作語言)語句:主要由INSERT、UPDATE和DELETE三個(gè)關(guān)鍵字完成
  4. 查詢語句:主要由SELECT語句完成
  5. 事務(wù)控制語句:主要由COMMIT、ROLLBACK和SAVEPOINT三個(gè)關(guān)鍵字完成

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

一.DCL語句

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

MySQL的權(quán)限命令是grant,權(quán)限撤銷的命令時(shí)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)、存儲(chǔ)過程(procedure)、觸發(fā)器(trigger)

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

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:插入位置,默認(rèn)是插入在最后一列,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),叫做“截?cái)唷?br /> TRUNCATE TABLE 表名;

e.g.

TRUNCATE TABLE student;

三.DML語句

1.INSERT

標(biāo)準(zhǔn)SQL語句只允許一次插入一條數(shù)據(jù),但MySQL對其進(jìn)行擴(kuò)展使其可以一次插入多條數(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>20;

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.將計(jì)算機(jī)科學(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)自連接:有時(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)行查詢操作:

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)理名是重命名,在顯示列時(shí)顯示員工名和經(jīng)理名;
  •  FROM emp employee, emp manager 兩個(gè)相同的表需要進(jìn)行區(qū)分,起不同的名字;
  •  WHERE employee.managerId = manager.id 是連接條件

更多的多表連接可以參考:
http://m.fzitv.net/article/154006.htm

五.事務(wù)處理

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

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

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

  • 原子性(Atomicity):事務(wù)是應(yīng)用中最小的執(zhí)行單位。
  • 一致性(Consistency):事務(wù)執(zhí)行的結(jié)果必須讓數(shù)據(jù)庫從一個(gè)一致性的狀態(tài)變成另外一個(gè)一致性的狀態(tài)。一致性是通過原子性保證的
  • 隔離性(Isolation):各個(gè)事務(wù)執(zhí)行相互不干擾。
  • 持續(xù)性(Durability):也成為持久性(Persistence),指事務(wù)一旦提交,將數(shù)據(jù)做的任何改變都保存進(jìn)物理數(shù)據(jù)庫。

這四個(gè)特性也叫ACID性

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

  • DML語句對數(shù)據(jù)進(jìn)行操作
  • DDL和DCL都各只有一條,因?yàn)镈DL和DCL語句都會(huì)將事務(wù)提交

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

  • 顯示提交:commit
  • 自動(dòng)提交:DDL/DCL語句

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

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

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

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

  • 顯示回滾:rollback
  • 自動(dòng)回滾:系統(tǒng)錯(cuò)誤或強(qiáng)行退出

6.例子:

若只是臨時(shí)開啟一個(gè)事務(wù)可以通過:start transaction或begin開啟臨時(shí)事務(wù),在其之后的DML語句都不會(huì)立即執(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ù),但如果此時(shí)在別的命令行窗口中執(zhí)行該語句,也不會(huì)看到以上的三條數(shù)據(jù),體現(xiàn)了事務(wù)的隔離性,這三條數(shù)據(jù)其實(shí)并沒有寫入物理數(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è)置中間點(diǎn),可以設(shè)置回滾的位置,①處的查詢語句結(jié)果中包含三條插入數(shù)據(jù)的結(jié)果,但②處的查詢結(jié)果中不包含中間點(diǎn)p之后插入的數(shù)據(jù)。需要注意的是,回到中間點(diǎn)的回滾不會(huì)結(jié)束事務(wù)。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • MySQL?8.0.35數(shù)據(jù)庫下載安裝以及環(huán)境變量的配置方法

    MySQL?8.0.35數(shù)據(jù)庫下載安裝以及環(huán)境變量的配置方法

    很多朋友剛開始接觸mysql數(shù)據(jù)庫服務(wù)器,這篇文章主要給大家介紹了關(guān)于MySQL?8.0.35數(shù)據(jù)庫下載安裝以及環(huán)境變量的配置方法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • 解決mysql登錄錯(cuò)誤:''Access denied for user ''root''@''localhost''

    解決mysql登錄錯(cuò)誤:''Access denied for user ''root''@''localhost''

    這篇文章主要介紹了mysql登錄錯(cuò)誤:'Access denied for user 'root'@'localhost',本文給出了操作過程及注意事項(xiàng),需要的朋友可以參考下
    2019-11-11
  • MySQL數(shù)據(jù)庫所在服務(wù)器磁盤滿了的故障分析和解決方法

    MySQL數(shù)據(jù)庫所在服務(wù)器磁盤滿了的故障分析和解決方法

    這篇文章主要給大家介紹了MySQL數(shù)據(jù)庫所在服務(wù)器磁盤滿了的故障分析和解決方法,文中通過代碼示例給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • MySQL8.0中的my.ini文件位置說明

    MySQL8.0中的my.ini文件位置說明

    這篇文章主要介紹了MySQL8.0中的my.ini文件位置說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • MySQL中的嵌套查詢

    MySQL中的嵌套查詢

    這篇文章主要介紹了MySQL中的嵌套查詢方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 教你3個(gè)步驟為Mysql添加只讀賬號

    教你3個(gè)步驟為Mysql添加只讀賬號

    只要公司有數(shù)據(jù)團(tuán)隊(duì)的那免不了讓這幫家伙把全公司的數(shù)據(jù)庫數(shù)據(jù)都摸一遍,但是要是直接把root用戶給了他們有點(diǎn)危險(xiǎn),于是只能給設(shè)權(quán)限,這篇文章主要給大家介紹了關(guān)于如何通過3個(gè)步驟為Mysql添加只讀賬號的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • MySQL的隱式鎖(Implicit Lock)原理實(shí)現(xiàn)

    MySQL的隱式鎖(Implicit Lock)原理實(shí)現(xiàn)

    MySQL的InnoDB存儲(chǔ)引擎中隱式鎖是一種自動(dòng)管理的鎖,用于保證事務(wù)在行級別操作時(shí)的數(shù)據(jù)一致性和安全性,本文主要介紹了MySQL的隱式鎖(Implicit Lock)原理實(shí)現(xiàn),感興趣的可以了解一下
    2025-03-03
  • MySQL 8.0新特性 — 管理端口的使用簡介

    MySQL 8.0新特性 — 管理端口的使用簡介

    這篇文章主要介紹了MySQL 8.0新特性 — 管理端口的使用簡介,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下
    2021-03-03
  • 淺談mysql可有類似oracle的nvl的函數(shù)

    淺談mysql可有類似oracle的nvl的函數(shù)

    下面小編就為大家?guī)硪黄獪\談mysql可有類似oracle的nvl的函數(shù)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • mysql 的indexof函數(shù)用法說明

    mysql 的indexof函數(shù)用法說明

    這篇文章主要介紹了mysql 的indexof函數(shù)用法說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12

最新評論

云浮市| 临城县| 贵南县| 定陶县| 佛教| 峨边| 堆龙德庆县| 门头沟区| 博罗县| 遂川县| 通州区| 东山县| 大荔县| 满洲里市| 柞水县| 界首市| 儋州市| 都江堰市| 汶上县| 沂源县| 托里县| 九龙县| 高邑县| 滦南县| 额尔古纳市| 惠州市| 盐山县| 娱乐| 神木县| 河东区| 雷州市| 吴堡县| 隆回县| 广丰县| 沁水县| 承德市| 梧州市| 高雄市| 民县| 柯坪县| 郓城县|