1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        SQL 語法速成手冊,果斷收藏

        共 9101字,需瀏覽 19分鐘

         ·

        2020-12-02 13:41

        來源:https://juejin.im/post/5c7e524af265da2d914db18f

        本文針對關(guān)系型數(shù)據(jù)庫的一般語法。限于篇幅,本文側(cè)重說明用法,不會展開講解特性、原理。

        一、基本概念

        數(shù)據(jù)庫術(shù)語

        • 數(shù)據(jù)庫(database)?- 保存有組織的數(shù)據(jù)的容器(通常是一個(gè)文件或一組文件)。

        • 數(shù)據(jù)表(table)?- 某種特定類型數(shù)據(jù)的結(jié)構(gòu)化清單。

        • 模式(schema)?- 關(guān)于數(shù)據(jù)庫和表的布局及特性的信息。模式定義了數(shù)據(jù)在表中如何存儲,包含存儲什么樣的數(shù)據(jù),數(shù)據(jù)如何分解,各部分信息如何命名等信息。數(shù)據(jù)庫和表都有模式。

        • 列(column)?- 表中的一個(gè)字段。所有表都是由一個(gè)或多個(gè)列組成的。

        • 行(row)?- 表中的一個(gè)記錄。

        • 主鍵(primary key)?- 一列(或一組列),其值能夠唯一標(biāo)識表中每一行。

        SQL 語法

        SQL(Structured Query Language),標(biāo)準(zhǔn) SQL 由 ANSI 標(biāo)準(zhǔn)委員會管理,從而稱為 ANSI SQL。各個(gè) DBMS 都有自己的實(shí)現(xiàn),如 PL/SQL、Transact-SQL 等。

        SQL 語法結(jié)構(gòu)

        SQL 語法結(jié)構(gòu)包括:

        • 子句?- 是語句和查詢的組成成分。(在某些情況下,這些都是可選的。)

        • 表達(dá)式?- 可以產(chǎn)生任何標(biāo)量值,或由列和行的數(shù)據(jù)庫表

        • 謂詞?- 給需要評估的 SQL 三值邏輯(3VL)(true/false/unknown)或布爾真值指定條件,并限制語句和查詢的效果,或改變程序流程。

        • 查詢?- 基于特定條件檢索數(shù)據(jù)。這是 SQL 的一個(gè)重要組成部分。

        • 語句?- 可以持久地影響綱要和數(shù)據(jù),也可以控制數(shù)據(jù)庫事務(wù)、程序流程、連接、會話或診斷。

        SQL 語法要點(diǎn)

        • SQL 語句不區(qū)分大小寫,但是數(shù)據(jù)庫表名、列名和值是否區(qū)分,依賴于具體的 DBMS 以及配置。

        例如:SELECT?與?select?、Select?是相同的。

        • 多條 SQL 語句必須以分號(;)分隔。

        • 處理 SQL 語句時(shí),所有空格都被忽略。SQL 語句可以寫成一行,也可以分寫為多行。

        -- 一行 SQL 語句
        UPDATE user SET username='robot', password='robot' WHERE username = 'root';

        -- 多行 SQL 語句
        UPDATE user
        SET username='robot', password='robot'
        WHERE username = 'root';
        • SQL 支持三種注釋

        ## 注釋1
        -- 注釋2
        /* 注釋3 */

        SQL 分類

        數(shù)據(jù)定義語言(DDL)

        數(shù)據(jù)定義語言(Data Definition Language,DDL)是 SQL 語言集中負(fù)責(zé)數(shù)據(jù)結(jié)構(gòu)定義與數(shù)據(jù)庫對象定義的語言。

        DDL 的主要功能是定義數(shù)據(jù)庫對象。

        DDL 的核心指令是?CREATE、ALTER、DROP。

        數(shù)據(jù)操縱語言(DML)

        數(shù)據(jù)操縱語言(Data Manipulation Language, DML)是用于數(shù)據(jù)庫操作,對數(shù)據(jù)庫其中的對象和數(shù)據(jù)運(yùn)行訪問工作的編程語句。

        DML 的主要功能是?訪問數(shù)據(jù),因此其語法都是以讀寫數(shù)據(jù)庫為主。

        DML 的核心指令是?INSERTUPDATE、DELETE、SELECT。這四個(gè)指令合稱 CRUD(Create, Read, Update, Delete),即增刪改查。

        事務(wù)控制語言(TCL)

        事務(wù)控制語言 (Transaction Control Language, TCL) 用于管理數(shù)據(jù)庫中的事務(wù)。這些用于管理由 DML 語句所做的更改。它還允許將語句分組為邏輯事務(wù)。

        TCL 的核心指令是?COMMIT、ROLLBACK。

        數(shù)據(jù)控制語言(DCL)

        數(shù)據(jù)控制語言 (Data Control Language, DCL) 是一種可對數(shù)據(jù)訪問權(quán)進(jìn)行控制的指令,它可以控制特定用戶賬戶對數(shù)據(jù)表、查看表、預(yù)存程序、用戶自定義函數(shù)等數(shù)據(jù)庫對象的控制權(quán)。

        DCL 的核心指令是?GRANT、REVOKE。

        DCL 以控制用戶的訪問權(quán)限為主,因此其指令作法并不復(fù)雜,可利用 DCL 控制的權(quán)限有:CONNECTSELECTINSERT、UPDATEDELETE、EXECUTE、USAGE、REFERENCES。

        根據(jù)不同的 DBMS 以及不同的安全性實(shí)體,其支持的權(quán)限控制也有所不同。

        (以下為 DML 語句用法)

        二、增刪改查

        增刪改查,又稱為 CRUD,數(shù)據(jù)庫基本操作中的基本操作。

        插入數(shù)據(jù)

        • INSERT INTO?語句用于向表中插入新記錄。

        插入完整的行

        INSERT INTO user
        VALUES (10, 'root', 'root', '[email protected]')
        ;

        插入行的一部分

        INSERT INTO user(username, password, email)
        VALUES ('admin', 'admin', '[email protected]')
        ;

        插入查詢出來的數(shù)據(jù)

        INSERT INTO user(username)
        SELECT name
        FROM account
        ;

        更新數(shù)據(jù)

        • UPDATE?語句用于更新表中的記錄。

        UPDATE user
        SET username='robot', password='robot'
        WHERE username = 'root';

        刪除數(shù)據(jù)

        • DELETE?語句用于刪除表中的記錄。

        • TRUNCATE TABLE?可以清空表,也就是刪除所有行。

        刪除表中的指定數(shù)據(jù)

        DELETE FROM user
        WHERE username = 'robot';

        清空表中的數(shù)據(jù)

        TRUNCATE TABLE user;

        查詢數(shù)據(jù)

        • SELECT?語句用于從數(shù)據(jù)庫中查詢數(shù)據(jù)。

        • DISTINCT?用于返回唯一不同的值。它作用于所有列,也就是說所有列的值都相同才算相同。

        • LIMIT?限制返回的行數(shù)??梢杂袃蓚€(gè)參數(shù),第一個(gè)參數(shù)為起始行,從 0 開始;第二個(gè)參數(shù)為返回的總行數(shù)。

          • ASC?:升序(默認(rèn))

          • DESC?:降序

        查詢單列

        SELECT prod_name
        FROM products;

        查詢多列

        SELECT prod_id, prod_name, prod_price
        FROM products;

        查詢所有列

        ELECT *
        FROM products;

        查詢不同的值

        SELECT DISTINCT
        vend_id FROM products;

        限制查詢結(jié)果

        -- 返回前 5
        SELECT * FROM mytable LIMIT 5;
        SELECT * FROM mytable LIMIT 0, 5;
        -- 返回第 3 ~ 5
        SELECT * FROM mytable LIMIT 2, 3;

        三、子查詢

        子查詢是嵌套在較大查詢中的 SQL 查詢。子查詢也稱為內(nèi)部查詢內(nèi)部選擇,而包含子查詢的語句也稱為外部查詢外部選擇。

        • 子查詢可以嵌套在?SELECT,INSERT,UPDATE?或?DELETE?語句內(nèi)或另一個(gè)子查詢中。

        • 子查詢通常會在另一個(gè)?SELECT?語句的?WHERE?子句中添加。

        • 您可以使用比較運(yùn)算符,如?>,<,或?=。比較運(yùn)算符也可以是多行運(yùn)算符,如?IN,ANY?或?ALL。

        • 子查詢必須被圓括號?()?括起來。

        • 內(nèi)部查詢首先在其父查詢之前執(zhí)行,以便可以將內(nèi)部查詢的結(jié)果傳遞給外部查詢。執(zhí)行過程可以參考下圖:

        子查詢的子查詢

        SELECT cust_name, cust_contact
        FROM customers
        WHERE cust_id IN (SELECT cust_id
        FROM orders
        WHERE order_num IN (SELECT order_num
        FROM orderitems
        WHERE prod_id = 'RGAN01')
        )
        ;

        WHERE

        • WHERE?子句用于過濾記錄,即縮小訪問數(shù)據(jù)的范圍。

        • WHERE?后跟一個(gè)返回?true?或?false?的條件。

        • WHERE?可以與?SELECT,UPDATE?和?DELETE?一起使用。

        • 可以在?WHERE?子句中使用的操作符

        SELECT?語句中的?WHERE?子句

        SELECT * FROM Customers
        WHERE cust_name = 'Kids Place';

        UPDATE?語句中的?WHERE?子句

        UPDATE Customers
        SET cust_name = 'Jack Jones'
        WHERE cust_name = 'Kids Place';

        DELETE?語句中的?WHERE?子句

        DELETE FROM Customers
        WHERE cust_name = 'Kids Place';

        IN 和 BETWEEN

        • IN?操作符在?WHERE?子句中使用,作用是在指定的幾個(gè)特定值中任選一個(gè)值。

        • BETWEEN?操作符在?WHERE?子句中使用,作用是選取介于某個(gè)范圍內(nèi)的值。

        IN 示例

        SELECT *
        FROM products
        WHERE vend_id IN ('DLL01', 'BRS01')
        ;

        BETWEEN 示例

        SELECT *
        FROM products
        WHERE prod_price BETWEEN 3 AND 5;

        AND、OR、NOT

        • AND、OR、NOT?是用于對過濾條件的邏輯處理指令。

        • AND?優(yōu)先級高于?OR,為了明確處理順序,可以使用?()。

        • AND?操作符表示左右條件都要滿足。

        • OR?操作符表示左右條件滿足任意一個(gè)即可。

        • NOT?操作符用于否定一個(gè)條件。

        AND 示例

        SELECT prod_id, prod_name, prod_price
        FROM products
        WHERE vend_id = 'DLL01' AND prod_price <= 4;

        OR 示例

        SELECT prod_id, prod_name, prod_price
        FROM products
        WHERE vend_id = 'DLL01' OR vend_id = 'BRS01';

        NOT 示例

        SELECT *
        FROM products
        WHERE prod_price NOT BETWEEN 3 AND 5;

        LIKE

        • LIKE?操作符在?WHERE?子句中使用,作用是確定字符串是否匹配模式。

        • 只有字段是文本值時(shí)才使用?LIKE。

        • LIKE?支持兩個(gè)通配符匹配選項(xiàng):%?和?_。

        • 不要濫用通配符,通配符位于開頭處匹配會非常慢。

        • %?表示任何字符出現(xiàn)任意次數(shù)。

        • _?表示任何字符出現(xiàn)一次。

        % 示例

        SELECT prod_id, prod_name, prod_price
        FROM products
        WHERE prod_name LIKE '%bean bag%';

        _ 示例

        SELECT prod_id, prod_name, prod_price
        FROM products
        WHERE prod_name LIKE '__ inch teddy bear';

        四、連接和組合

        連接(JOIN)

        • 如果一個(gè)?JOIN?至少有一個(gè)公共字段并且它們之間存在關(guān)系,則該?JOIN?可以在兩個(gè)或多個(gè)表上工作。

        • 連接用于連接多個(gè)表,使用?JOIN?關(guān)鍵字,并且條件語句使用?ON?而不是?WHERE。

        • JOIN?保持基表(結(jié)構(gòu)和數(shù)據(jù))不變。

        • JOIN?有兩種連接類型:內(nèi)連接和外連接。

        • 內(nèi)連接又稱等值連接,使用 INNER?JOIN?關(guān)鍵字。在沒有條件語句的情況下返回笛卡爾積。

          • 自連接可以看成內(nèi)連接的一種,只是連接的表是自身而已。

        • 自然連接是把同名列通過 = 測試連接起來的,同名列可以有多個(gè)。

        • 內(nèi)連接 vs 自然連接

          • 內(nèi)連接提供連接的列,而自然連接自動連接所有同名列。

        • 外連接返回一個(gè)表中的所有行,并且僅返回來自次表中滿足連接條件的那些行,即兩個(gè)表中的列是相等的。外連接分為左外連接、右外連接、全外連接(Mysql 不支持)。

          • 左外連接就是保留左表沒有關(guān)聯(lián)的行。

          • 右外連接就是保留右表沒有關(guān)聯(lián)的行。

        • 連接 vs 子查詢

          • 連接可以替換子查詢,并且比子查詢的效率一般會更快。

        內(nèi)連接(INNER JOIN)

        SELECT vend_name, prod_name, prod_price
        FROM vendors INNER JOIN products
        ON vendors.vend_id = products.vend_id;

        自連接

        SELECT c1.cust_id, c1.cust_name, c1.cust_contact
        FROM customers c1, customers c2
        WHERE c1.cust_name = c2.cust_name
        AND c2.cust_contact = 'Jim Jones';

        自然連接(NATURAL JOIN)

        SELECT *
        FROM Products
        NATURAL JOIN Customers;

        左連接(LEFT JOIN)

        SELECT customers.cust_id, orders.order_num
        FROM customers LEFT JOIN orders
        ON customers.cust_id = orders.cust_id;

        右連接(RIGHT JOIN)

        SELECT customers.cust_id, orders.order_num
        FROM customers RIGHT JOIN orders
        ON customers.cust_id = orders.cust_id;

        組合(UNION)

        • UNION?運(yùn)算符將兩個(gè)或更多查詢的結(jié)果組合起來,并生成一個(gè)結(jié)果集,其中包含來自?UNION?中參與查詢的提取行。

        • UNION?基本規(guī)則

          • 所有查詢的列數(shù)和列順序必須相同。

          • 每個(gè)查詢中涉及表的列的數(shù)據(jù)類型必須相同或兼容。

          • 通常返回的列名取自第一個(gè)查詢。

        • 默認(rèn)會去除相同行,如果需要保留相同行,使用?UNION ALL。

        • 只能包含一個(gè)?ORDER BY?子句,并且必須位于語句的最后。

        • 應(yīng)用場景

          • 在一個(gè)查詢中從不同的表返回結(jié)構(gòu)數(shù)據(jù)。

          • 對一個(gè)表執(zhí)行多個(gè)查詢,按一個(gè)查詢返回?cái)?shù)據(jù)。

        組合查詢

        SELECT cust_name, cust_contact, cust_email
        FROM customers
        WHERE cust_state IN ('IL', 'IN', 'MI')
        UNION
        SELECT cust_name, cust_contact, cust_email
        FROM customers
        WHERE cust_name
        = 'Fun4All';

        JOIN vs UNION

        • JOIN vs UNION

          • JOIN?中連接表的列可能不同,但在?UNION?中,所有查詢的列數(shù)和列順序必須相同。

          • UNION?將查詢之后的行放在一起(垂直放置),但?JOIN?將查詢之后的列放在一起(水平放置),即它構(gòu)成一個(gè)笛卡爾積。

        五、函數(shù)

        ? 注意:不同數(shù)據(jù)庫的函數(shù)往往各不相同,因此不可移植。本節(jié)主要以 Mysql 的函數(shù)為例。

        文本處理

        其中,?SOUNDEX()?可以將一個(gè)字符串轉(zhuǎn)換為描述其語音表示的字母數(shù)字模式。

        SELECT *
        FROM mytable
        WHERE SOUNDEX(col1)
        = SOUNDEX('apple')

        日期和時(shí)間處理

        • 日期格式:YYYY-MM-DD

        • 時(shí)間格式:HH:MM:SS

        mysql> SELECT NOW();

        2018-4-14 20:25:11

        數(shù)值處理

        匯總

        使用 DISTINCT 可以讓匯總函數(shù)值匯總不同的值。

        SELECT AVG(DISTINCT col1) AS avg_col
        FROM mytable

        六、排序和分組

        ORDER BY

        • ORDER BY?用于對結(jié)果集進(jìn)行排序。

          • ASC?:升序(默認(rèn))

          • DESC?:降序

        • 可以按多個(gè)列進(jìn)行排序,并且為每個(gè)列指定不同的排序方式

        指定多個(gè)列的排序方向

        SELECT * FROM products
        ORDER BY prod_price DESC, prod_name ASC;

        GROUP BY

        • GROUP BY?子句將記錄分組到匯總行中。

        • GROUP BY?為每個(gè)組返回一個(gè)記錄。

        • GROUP BY?通常還涉及聚合:COUNT,MAX,SUM,AVG 等。

        • GROUP BY?可以按一列或多列進(jìn)行分組。

        • GROUP BY?按分組字段進(jìn)行排序后,ORDER BY?可以以匯總字段來進(jìn)行排序。

        分組

        SELECT cust_name, COUNT(cust_address) AS addr_num
        FROM Customers GROUP BY cust_name;

        分組后排序

        SELECT cust_name, COUNT(cust_address) AS addr_num
        FROM Customers GROUP BY cust_name
        ORDER BY cust_name DESC;

        HAVING

        • HAVING?用于對匯總的?GROUP BY?結(jié)果進(jìn)行過濾。

        • HAVING?要求存在一個(gè)?GROUP BY?子句。

        • WHERE?和?HAVING?可以在相同的查詢中。

        • HAVING?vs?WHERE

          • WHERE?和?HAVING?都是用于過濾。

          • HAVING?適用于匯總的組記錄;而 WHERE 適用于單個(gè)記錄。

        使用 WHERE 和 HAVING 過濾數(shù)據(jù)

        SELECT cust_name, COUNT(*) AS num
        FROM Customers
        WHERE cust_email IS NOT NULL
        GROUP BY cust_name
        HAVING COUNT(*) >
        = 1;

        (以下為 DDL 語句用法)

        七、數(shù)據(jù)定義

        DDL 的主要功能是定義數(shù)據(jù)庫對象(如:數(shù)據(jù)庫、數(shù)據(jù)表、視圖、索引等)。

        數(shù)據(jù)庫(DATABASE)

        創(chuàng)建數(shù)據(jù)庫

        CREATE DATABASE test;

        刪除數(shù)據(jù)庫

        DROP DATABASE test;

        選擇數(shù)據(jù)庫

        USE test;

        數(shù)據(jù)表(TABLE)

        創(chuàng)建數(shù)據(jù)表

        普通創(chuàng)建

        CREATE TABLE user (
        id int(10)
        unsigned NOT NULL COMMENT 'Id',
        username varchar(64) NOT NULL DEFAULT 'default' COMMENT '用戶名',
        password varchar(64) NOT NULL DEFAULT 'default' COMMENT '密碼',
        email varchar(64) NOT NULL DEFAULT 'default' COMMENT '郵箱'
        ) COMMENT
        ='用戶表';

        根據(jù)已有的表創(chuàng)建新表

        CREATE TABLE vip_user AS
        SELECT * FROM user;

        刪除數(shù)據(jù)表

        DROP TABLE user;

        修改數(shù)據(jù)表

        添加列

        ALTER TABLE user
        ADD age int(3)
        ;

        刪除列

        ALTER TABLE user
        DROP COLUMN age;

        修改列

        ALTER TABLE `user`
        MODIFY COLUMN age tinyint;

        添加主鍵

        ALTER TABLE user
        ADD PRIMARY KEY (id)
        ;

        刪除主鍵

        ALTER TABLE user
        DROP PRIMARY KEY;

        視圖(VIEW)

        • 定義

          • 視圖是基于 SQL 語句的結(jié)果集的可視化的表。

          • 視圖是虛擬的表,本身不包含數(shù)據(jù),也就不能對其進(jìn)行索引操作。對視圖的操作和對普通表的操作一樣。

        • 作用

          • 簡化復(fù)雜的 SQL 操作,比如復(fù)雜的聯(lián)結(jié);

          • 只使用實(shí)際表的一部分?jǐn)?shù)據(jù);

          • 通過只給用戶訪問視圖的權(quán)限,保證數(shù)據(jù)的安全性;

          • 更改數(shù)據(jù)格式和表示。

        創(chuàng)建視圖

        CREATE VIEW top_10_user_view AS
        SELECT id, username
        FROM user
        WHERE id < 10;

        刪除視圖

        DROP VIEW top_10_user_view;

        索引(INDEX)

        • 作用

          • 通過索引可以更加快速高效地查詢數(shù)據(jù)。

          • 用戶無法看到索引,它們只能被用來加速查詢。

        • 注意

          • 更新一個(gè)包含索引的表需要比更新一個(gè)沒有索引的表花費(fèi)更多的時(shí)間,這是由于索引本身也需要更新。因此,理想的做法是僅僅在常常被搜索的列(以及表)上面創(chuàng)建索引。

        • 唯一索引

          • 唯一索引表明此索引的每一個(gè)索引值只對應(yīng)唯一的數(shù)據(jù)記錄。

        創(chuàng)建索引

        CREATE INDEX user_index
        ON user (id)
        ;

        創(chuàng)建唯一索引

        CREATE UNIQUE INDEX user_index
        ON user (id)
        ;

        刪除索引

        ALTER TABLE user
        DROP INDEX user_index;

        約束

        SQL 約束用于規(guī)定表中的數(shù)據(jù)規(guī)則。

        • 如果存在違反約束的數(shù)據(jù)行為,行為會被約束終止。

        • 約束可以在創(chuàng)建表時(shí)規(guī)定(通過 CREATE TABLE 語句),或者在表創(chuàng)建之后規(guī)定(通過 ALTER TABLE 語句)。

        • 約束類型

          • NOT NULL?- 指示某列不能存儲 NULL 值。

          • UNIQUE?- 保證某列的每行必須有唯一的值。

          • PRIMARY KEY?- NOT NULL 和 UNIQUE 的結(jié)合。確保某列(或兩個(gè)列多個(gè)列的結(jié)合)有唯一標(biāo)識,有助于更容易更快速地找到表中的一個(gè)特定的記錄。

          • FOREIGN KEY?- 保證一個(gè)表中的數(shù)據(jù)匹配另一個(gè)表中的值的參照完整性。

          • CHECK?- 保證列中的值符合指定的條件。

          • DEFAULT?- 規(guī)定沒有給列賦值時(shí)的默認(rèn)值。

        創(chuàng)建表時(shí)使用約束條件:

        CREATE TABLE Users (
        Id INT(10)
        UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增Id',
        Username VARCHAR(64) NOT NULL UNIQUE DEFAULT 'default' COMMENT '用戶名',
        Password VARCHAR(64) NOT NULL DEFAULT 'default' COMMENT '密碼',
        Email VARCHAR(64) NOT NULL DEFAULT 'default' COMMENT '郵箱地址',
        Enabled TINYINT(4) DEFAULT NULL COMMENT '是否有效',
        PRIMARY KEY (Id)
        ) ENGINE
        =InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='用戶表';

        (以下為 TCL 語句用法)

        八、事務(wù)處理

        • 不能回退 SELECT 語句,回退 SELECT 語句也沒意義;也不能回退 CREATE 和 DROP 語句。

        • MySQL 默認(rèn)是隱式提交,每執(zhí)行一條語句就把這條語句當(dāng)成一個(gè)事務(wù)然后進(jìn)行提交。當(dāng)出現(xiàn)?START TRANSACTION?語句時(shí),會關(guān)閉隱式提交;當(dāng)?COMMIT?或?ROLLBACK?語句執(zhí)行后,事務(wù)會自動關(guān)閉,重新恢復(fù)隱式提交。

        • 通過?set autocommit=0?可以取消自動提交,直到?set autocommit=1?才會提交;autocommit 標(biāo)記是針對每個(gè)連接而不是針對服務(wù)器的。

        • 指令

          • START TRANSACTION?- 指令用于標(biāo)記事務(wù)的起始點(diǎn)。

          • SAVEPOINT?- 指令用于創(chuàng)建保留點(diǎn)。

          • ROLLBACK TO?- 指令用于回滾到指定的保留點(diǎn);如果沒有設(shè)置保留點(diǎn),則回退到?START TRANSACTION?語句處。

          • COMMIT?- 提交事務(wù)。

        -- 開始事務(wù)
        START TRANSACTION;

        -- 插入操作 A
        INSERT INTO `user`
        VALUES (1, 'root1', 'root1', '[email protected]');

        -- 創(chuàng)建保留點(diǎn) updateA
        SAVEPOINT updateA;

        -- 插入操作 B
        INSERT INTO `user`
        VALUES (2, 'root2', 'root2', '[email protected]');

        -- 回滾到保留點(diǎn) updateA
        ROLLBACK TO updateA;

        -- 提交事務(wù),只有操作 A 生效
        COMMIT;

        (以下為 DCL 語句用法)

        九、權(quán)限控制

        • GRANT 和 REVOKE 可在幾個(gè)層次上控制訪問權(quán)限:

          • 整個(gè)服務(wù)器,使用 GRANT ALL 和 REVOKE ALL;

          • 整個(gè)數(shù)據(jù)庫,使用 ON database.*;

          • 特定的表,使用 ON database.table;

          • 特定的列;

          • 特定的存儲過程。

        • 新創(chuàng)建的賬戶沒有任何權(quán)限。

        • 賬戶用 username@host 的形式定義,username@% 使用的是默認(rèn)主機(jī)名。

        • MySQL 的賬戶信息保存在 mysql 這個(gè)數(shù)據(jù)庫中。

          USE mysql;
          SELECT user FROM user;
          復(fù)制代碼

        創(chuàng)建賬戶

        CREATE USER myuser IDENTIFIED BY 'mypassword';

        修改賬戶名

        UPDATE user SET user='newuser' WHERE user='myuser';
        FLUSH PRIVILEGES;

        刪除賬戶

        DROP USER myuser;

        查看權(quán)限

        SHOW GRANTS FOR myuser;

        授予權(quán)限

        GRANT SELECT, INSERT ON *.* TO myuser;

        刪除權(quán)限

        REVOKE SELECT, INSERT ON *.* FROM myuser;

        更改密碼

        SET PASSWORD FOR myuser = 'mypass';

        十、存儲過程

        • 存儲過程可以看成是對一系列 SQL 操作的批處理;

        • 使用存儲過程的好處

          • 代碼封裝,保證了一定的安全性;

          • 代碼復(fù)用;

          • 由于是預(yù)先編譯,因此具有很高的性能。

        • 創(chuàng)建存儲過程

          • 命令行中創(chuàng)建存儲過程需要自定義分隔符,因?yàn)槊钚惺且?;?為結(jié)束符,而存儲過程中也包含了分號,因此會錯(cuò)誤把這部分分號當(dāng)成是結(jié)束符,造成語法錯(cuò)誤。

          • 包含 in、out 和 inout 三種參數(shù)。

          • 給變量賦值都需要用 select into 語句。

          • 每次只能給一個(gè)變量賦值,不支持集合的操作。

        創(chuàng)建存儲過程

        DROP PROCEDURE IF EXISTS `proc_adder`;
        DELIMITER ;;
        CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_adder`(IN a int, IN b int, OUT sum int)
        BEGIN
        DECLARE c int;
        if a is null then set a = 0;
        end if;

        if b is null then set b = 0;
        end if;

        set sum = a + b;
        END
        ;;
        DELIMITER ;

        使用存儲過程

        set @b=5;
        call proc_adder(2,@b,@s);
        select @s as sum;

        十一、游標(biāo)

        • 游標(biāo)(cursor)是一個(gè)存儲在 DBMS 服務(wù)器上的數(shù)據(jù)庫查詢,它不是一條 SELECT 語句,而是被該語句檢索出來的結(jié)果集。

        • 在存儲過程中使用游標(biāo)可以對一個(gè)結(jié)果集進(jìn)行移動遍歷。

        • 游標(biāo)主要用于交互式應(yīng)用,其中用戶需要對數(shù)據(jù)集中的任意行進(jìn)行瀏覽和修改。

        • 使用游標(biāo)的四個(gè)步驟:

          • 聲明游標(biāo),這個(gè)過程沒有實(shí)際檢索出數(shù)據(jù);

          • 打開游標(biāo);

          • 取出數(shù)據(jù);

          • 關(guān)閉游標(biāo);

        DELIMITER $
        CREATE PROCEDURE getTotal()
        BEGIN
        DECLARE total INT
        ;
        -- 創(chuàng)建接收游標(biāo)數(shù)據(jù)的變量
        DECLARE sid INT;
        DECLARE sname VARCHAR(10);
        -- 創(chuàng)建總數(shù)變量
        DECLARE sage INT;
        -- 創(chuàng)建結(jié)束標(biāo)志變量
        DECLARE done INT DEFAULT false;
        -- 創(chuàng)建游標(biāo)
        DECLARE cur CURSOR FOR SELECT id,name,age from cursor_table where age>30;
        -- 指定游標(biāo)循環(huán)結(jié)束時(shí)的返回值
        DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = true;
        SET total = 0;
        OPEN cur;
        FETCH cur INTO sid, sname, sage;
        WHILE(NOT done)
        DO
        SET total = total + 1;
        FETCH cur INTO sid, sname, sage;
        END WHILE;

        CLOSE cur;
        SELECT total;
        END $
        DELIMITER ;

        -- 調(diào)用存儲過程
        call getTotal();

        十二、觸發(fā)器

        觸發(fā)器是一種與表操作有關(guān)的數(shù)據(jù)庫對象,當(dāng)觸發(fā)器所在表上出現(xiàn)指定事件時(shí),將調(diào)用該對象,即表的操作事件觸發(fā)表上的觸發(fā)器的執(zhí)行。

        可以使用觸發(fā)器來進(jìn)行審計(jì)跟蹤,把修改記錄到另外一張表中。

        MySQL 不允許在觸發(fā)器中使用 CALL 語句 ,也就是不能調(diào)用存儲過程。

        BEGIN?和?END

        當(dāng)觸發(fā)器的觸發(fā)條件滿足時(shí),將會執(zhí)行?BEGIN?和?END?之間的觸發(fā)器執(zhí)行動作。

        ? 注意:在 MySQL 中,分號?;?是語句結(jié)束的標(biāo)識符,遇到分號表示該段語句已經(jīng)結(jié)束,MySQL 可以開始執(zhí)行了。因此,解釋器遇到觸發(fā)器執(zhí)行動作中的分號后就開始執(zhí)行,然后會報(bào)錯(cuò),因?yàn)闆]有找到和 BEGIN 匹配的 END。

        這時(shí)就會用到?DELIMITER?命令(DELIMITER 是定界符,分隔符的意思)。它是一條命令,不需要語句結(jié)束標(biāo)識,語法為:DELIMITER new_delemiter。new_delemiter?可以設(shè)為 1 個(gè)或多個(gè)長度的符號,默認(rèn)的是分號?;,我們可以把它修改為其他符號,如?$?-?DELIMITER $?。在這之后的語句,以分號結(jié)束,解釋器不會有什么反應(yīng),只有遇到了?$,才認(rèn)為是語句結(jié)束。注意,使用完之后,我們還應(yīng)該記得把它給修改回來。

        NEW?和?OLD

        • MySQL 中定義了?NEW?和?OLD?關(guān)鍵字,用來表示觸發(fā)器的所在表中,觸發(fā)了觸發(fā)器的那一行數(shù)據(jù)。

        • 在?INSERT?型觸發(fā)器中,NEW?用來表示將要(BEFORE)或已經(jīng)(AFTER)插入的新數(shù)據(jù);

        • 在?UPDATE?型觸發(fā)器中,OLD?用來表示將要或已經(jīng)被修改的原數(shù)據(jù),NEW?用來表示將要或已經(jīng)修改為的新數(shù)據(jù);

        • 在?DELETE?型觸發(fā)器中,OLD?用來表示將要或已經(jīng)被刪除的原數(shù)據(jù);

        • 使用方法:?NEW.columnName?(columnName 為相應(yīng)數(shù)據(jù)表某一列名)

        創(chuàng)建觸發(fā)器

        提示:為了理解觸發(fā)器的要點(diǎn),有必要先了解一下創(chuàng)建觸發(fā)器的指令。

        CREATE TRIGGER?指令用于創(chuàng)建觸發(fā)器。

        語法:

        CREATE TRIGGER trigger_name
        trigger_time
        trigger_event
        ON table_name
        FOR EACH ROW
        BEGIN
        trigger_statements
        END;

        說明:

        • trigger_name:觸發(fā)器名

        • trigger_time: 觸發(fā)器的觸發(fā)時(shí)機(jī)。取值為?BEFORE?或?AFTER。

        • trigger_event: 觸發(fā)器的監(jiān)聽事件。取值為?INSERT、UPDATE?或?DELETE

        • table_name: 觸發(fā)器的監(jiān)聽目標(biāo)。指定在哪張表上建立觸發(fā)器。

        • FOR EACH ROW: 行級監(jiān)視,Mysql 固定寫法,其他 DBMS 不同。

        • trigger_statements: 觸發(fā)器執(zhí)行動作。是一條或多條 SQL 語句的列表,列表內(nèi)的每條語句都必須用分號?;?來結(jié)尾。

        示例:

        DELIMITER $
        CREATE TRIGGER `trigger_insert_user`
        AFTER INSERT ON `user`
        FOR EACH ROW
        BEGIN
        INSERT INTO `user_history`(user_id, operate_type, operate_time)
        VALUES (NEW.id, 'add a user', now());
        END $
        DELIMITER ;

        查看觸發(fā)器

        SHOW TRIGGERS;

        刪除觸發(fā)器

        DROP TRIGGER IF EXISTS trigger_insert_user;
        瀏覽 38
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            色婷婷在线观看视频| 婷婷综合素质二区| aaa精品| 国产福利在线视频| 91爽爽| 天堂网在线观看| 黄色免费视频| 欧美日韩岛国| 日本50路熟女| 国产三级在线播放| 国产成人AV在线播放| 国产一级a毛一级a毛视频在线网站)| 亚洲日韩精品成人无码专区AV | 俺去也视频| 亚欧洲精品在线视频免费观看| 粉嫩小泬粉嫩小泬在线| 国产又爽又黄网站免费观看| 精品精品视频| 中文字幕你懂的在线三级| 中文字幕永久免费| 不卡视频在线观看| 又大又粗又爽| 逼逼影院| 精品无码AV一区二区三区| 五月色视频| 国产精品三级片| 欧美77777| 国产欧美精品一区二区色综合| 2025AV在线| 亚洲精品国产精品国自产A片同性| 成人一区二区在线| 亚洲无码久久飞鱼网站| 欧美口爆| 91久久国产| 青春草在线视频观看| 婷婷五月欧美| 91网站在线播放| 在线观看免费a片| 日韩va亚洲va欧美va高清| 99精品视频在线观看| 九九超碰| 欧美成人在线观看视频| 蜜芽AV在线| 国产日韩一区二区三区| 玖玖综合网| 五月一区| 婷婷A片| 手机看片福利一区二区| 日韩A片| 亚洲免费性爱视频| 99热国产免费| 新妺妺窝窝777777野外| 特级欧美AAAAAA| 91大神shunv| 成人性爱视频在线| 色色射| 女同一区二区三区| 青青草无码在线视频| 天天干天天干天天干| 免费无码国产在线观看| 色色热| 人妻少妇一区| 国产一区二区三区在线视频| 伦理被部长侵犯HD中字| 精品国产A片| 综合伊人大香蕉| 操逼网123首页| 学生妹一级| 日韩精品一区二区三免费视频| 在线观看av网站中文字幕| 99热超碰| 久久久久久av| 自拍偷拍视频网址| 欧美美穴| 人人妻人人爽人人澡人人精品| 欧美精品成人免码在线| 国产口爆在线| 成人在线A片| 美女极度色诱图片www视频| 怡春院院成人免费视频| www.199麻豆在线观看网站| 日韩加勒比在线| 波多野结衣无码AV专区| 奇米狠狠777| 精品成人无码一区二区三区| 日韩毛片在线视频x| 青操AV| 中文字幕免费AV| 佳佳女王footjob超级爽| 蜜臀久久99精品久久久巴士| www.日韩| 天天日天天干天天操| 黄色伊人| 黄色片在线| 欧美视频在线播放| 无码群交东京热| 俺来也俺也啪www色| 无码123| 日韩人妻无码一区| 精品91海角乱| 人妻骚逼| 高h视频在线观看| 久久国产av| 婷婷久| 久久无码一区| 国产午夜无码福利视频| 玉米地一级婬片A片| 九九视频免费在线观看| 日本色色视频| 国产秘久久一区二区| 日本亚洲欧美| 国产a√| 国产中文字幕视频| 99精品丰满人妻无码一区二区| 无码av在线观看| 婷婷五月天激情四射| 伊人久操| 99综合| 骚逼影院| 日韩成人网站| 青草av在| 乱伦99| 亚洲成人免费在线视频| 国产精品视频你懂的| 久久精品国产AV一区二区三区| 久久澡| 91插插网| 操b视频在线免费观看| 三级视频国产| 国产人妻一区二区精选| 欧美激情区| 午夜激情免费| 国产精品成人免费久久黄AV片 | 国产精品久久久91| 操B视频在线免费观看| 久久亚洲热| 国产一区二区不卡视频| 操小嫩逼视频| 成人免费一区| 91.www91成人影视在线观看91成人网址9| 精品一区二区三区在线观看| 免费无码在线| 囯产精品久久久久久久久| 日韩五月天| 欧美不卡一区| 日韩综合在线| 一区二区三区精品婷婷| wwwxx在线观看| 特级西西| 国产黄片在线播放| 国产精品秘ThePorn| 亚洲黄在线观看| 国产黄色片视频| 日本视频一区二区三区| 99爱爱| 日韩福利在线观看| AV免费网站| 欧美成人图片视频在线| 国产精品视频一区二区三区在线观看| 久久精品性爱| 91精品视频在线免费观看| 超碰天堂| 狠狠插狠狠操| 尤物最新网址| 午夜性爱网| 国产午夜激情| 久久99精品国产.久久久久| 四川揉BBB搡BBB| 先锋影音资源一区| 四川美人搡BBw搡BBw| 色婷婷五月天在线观看| 无码成人AV| 亚洲国产中文字幕| 精品无码视频| 少妇BBBBBB| 黄色成人视频网站在线观看 | 黄一级| 91视频入口| 污网站18禁| 日本视频一区二区| 精品乱子伦一区二区三区免费播成 | 超碰亚洲| 欧美精品午夜福利无码| 91精品少妇| 中文精品在线| 操逼电影网站| 西西4444www大胆无| 懂色aV| 国产精品无毛五区六区| 少妇搡BBBB搡BBB搡毛片| 91视频福利| 日韩激情av| 丁香五月天啪啪| 老司机无码视频| 尤物视频在线播放| 三级黄色免费| 能看毛片的网站| 九九九AV| 亚洲性爱一级片| 強姧伦一区二区三区在线播放| 在线免费看黄色| 99在线观看视频| 日韩无码人妻系列| 国产18禁网站| 天天爽天天日| 国产美女自拍视频| 在线观看免费黄色视频| 欧美一级黄片免费看| 在线免费观看成人视频| av资源在线看| 97超碰在| 日韩欧美在线观看视频| 日韩精品毛片一区二区视频免费| 日本黄色A片免费看| 国产在线毛片| 在线观看亚洲天堂| 九九热毛片在线观看| 狠狠操夜夜操| 一区二区三区在线观看免费| 在线视频免费观看| 99在线免费观看视频| 欧美特级黄片| 影音先锋AV资源在线| 在线观看亚洲专区| 亚洲黄色免费网站| 欧美日逼小视频| 97在线免费| 日韩av小电影| 老司机av| 空姐白洁| 尹人大香蕉网| 人人插人人射| 日本黄色一级视频| 另类老妇性BBBWBBW| 九色蝌蚪9l视频蝌蚪9l视频成人熟妇| 高潮流水视频| 欧美强开小嫩苞| 色欲影视插综合一区二区三区| 伊人偷拍视频| 中文字幕黄色片| 人人妻人人爽人人澡人人精品| 国产操逼网站| 一级A毛片| 欧美成人在线免费视频| 欧美国产综合| 香蕉av在线播放| 91色在线视频| 九九亚洲| 婷婷综合在线| 亚洲精品少妇| 视频一区二区三| 色哟哟av| 午夜视频99| 天天看天天爽| wwwxxx18| 午夜黄片| 97人妻精品一区二区三区软件| 日本女人牲交视频| 逼特逼在线观看| 日韩av中文字幕在线播放 | 91麻豆精品国产91久久久吃药| 九九偷拍视频| 中文字幕免费中文| 天天草天天撸| 无码一区二区三区在线| 亚洲区综合| 性久久久久久久久久| 国产精品卡一卡二| 日韩视频播放在线综合| 一区二区三区Av| 日韩黄色视频网站| 欧美九九| 欧美性性性| 黄色A片一级| 大香蕉国产视频| 三级成人AV| 翔田千里50岁无码| 大鸡巴导航| 男人操女人视频网站| 麻豆影音先锋| 在线观看黄色视频网站| 午夜精品在线观看| 中文字幕av第一页| 青青草超碰| 台湾无码精品| 亚洲特级毛片| 天天色天天色| 免费在线观看视频a| 欧美精品区| 欧美国产在线观看综合| 无码国产精品一区二区视频| 一本色道久久综合无码人妻| 撸撸操在线视频观看只有精品| 国产一级自拍| 97激情| 婷婷九月色| 日本中文字幕中文翻译歌词| 亚洲精品三级片| 亚洲成人人妻| 婷色五月天| 无码不卡视频| 天天撸天天日| 精品一区二区三区四区视频| 欧美亚洲国产精品| 午夜福利视频网站| 无码成人片| 操逼免费观看视频| 欧洲成人在线视频| 成人a级网站| 国产欧美岛国| 免费在线黄色电影| 日韩中字无码| 99精品视频免费| 奶大丰满一乱一视频一区二区三区在 | 热久久在线| 黄色电影中文字幕| 成人精品| 丰满人妻一区二区三区四区53 | 色婷婷AV一区二区三区软件| 天天综合字幕一区二区| 看黄片com| 伊人在线视频| 国产免费av在线| 人妻无码一区二区三区摄像头| 少妇搡BBBB搡BBB搡毛片| 亚洲激情一区| 日韩精品成人专区无码| 精品国产女人| 婷婷色在线| 免费无码国产在线| 亚洲第一AV| 思思热这里只有精品| 国产精品免费人成人网站酒店| 在线免费黄片| 日韩无码链接| 亚洲永久| 99热这里是精品| 神马久久午夜| 亚洲欧美91| 成人免费在线| 亚洲精品无码在线播放| 日韩成人性爱| 欧美综合亚洲图片综合区| 一本道综合网| www.天天干| 老太老熟女城中层露脸60| 丁香五月中文字幕| 欧美色图在线观看视频| 人人操在线观看| 中文字幕一区三区人妻视频| 91丨PORNY丨丰满人妻网站| 久久久中文字幕| 国产在线免费视频| 色就是色欧美成人网| 操学生妹| 无码欧美| 台湾精品无码| 日韩中文字幕在线观看| 黄在线| 色一区二区| 色小说在线| 97色综合| 青青免费在线视频| 国产黄色视频在线| 无码av免费| 国产黄网| 日韩精品成人av| 国产激情在线视频| 麻豆视频一区二区三区| 麻豆成人91精品二区三区| 日韩精品丰满无码一级A片∴| 波多野结衣视频网站| 操人视频网站| 九九九免费视频| 日韩在线观看网址| 无码在线免费| 波多野结衣一级| 三级视频网站| 麻豆成人网| 芳芳的骚逼| 亚洲日韩视频在线播放| 翔田千里被躁120分钟| 国产视频一区二区在线观看| 日逼99| 99re这里| 久久草草热国产精| 波多野结衣东京热| 精品视频导航| 99热免费在线观看| 免费观看黄色AV| 天堂网在线视频| 一区视频免费观看| 免费看无码网站成人A片| 亚洲午夜精品成人毛片| 91视频免费看| www.俺去| 性猛交╳XXX乱大交| 日韩一级高清| 国产操逼图片| 日韩精品五区| 91精品国产一区三一| 一区二区不卡视频| 在线视频99| 国产清纯可爱美女自卫裸贷偷情| 亚洲区在线| 无码xx| 丰滿人妻一区二区三区| 最新亚洲中文字幕| 大香蕉伊人在线观看| 国产小电影在线观看| 久久V| 天天肏天天肏| 无码精品一区二区三区在线观看| 翔田千里一区二区三区| 人人舔人人爱| 操逼操逼操逼| 中文在线无码| 竹菊影视一区二区三区| 99热热久久| 久婷婷| 国产高清无码免费| 噜噜噜在线视频| 亚洲s在线| 琪琪色在线视频| 欧洲AV片| 毛片国产| 91干逼| 在线观看视频日韩| 尤物网在线| 国产www视频| 青娱乐精品视频| 日韩精品在线观看免费| 日韩AV一区二区在线观看| 黄片高清无码| 国产精品色综合| 女人操逼视频| 青草草在线| 免费v在线观看| 婷婷色av| 无码人妻一区二区三区免水牛视频| 国家一级A片| 人人肏人人摸| 日韩不卡一区二区三区| 亚洲无码影院| 日韩AV一级片| 台湾色综合| 九色自拍| 蜜桃91精品入口| 国产免费网址| 国产人妖在线| h片在线免费观看视频| 超碰中文在线| 在线中文av| 精品一区二区三区四| 综合欧美国产视频二区| 久久穴| 亚洲熟女一区二区| 粉嫩AV蜜乳AV蜜臀AV蜂腰AV| 亚洲高清视频免费| 午夜免费性爱视频| 四川BBB搡BBB搡多人乱| 国产又黄又| 激情小视频国产在线播放| 色色国产| 日韩一区二| 狠狠色AV| 97超碰人妻| 激情五月婷婷综合| 在线成人亚洲| 成人在线精品| 精品国产A片| 久久国产精| 精品久久久久久久久久| 日韩欧美成人在线观看| 在线免费AV片| 国产性色| 久久久久久综合| 国产3p露脸普通话对白| 99精品视频在线| 毛片h| 少妇人妻一区二区三区| 九九99电影| 插菊花综合网3| 人人艹在线| 新超碰在线观看| 色伊人| 91无码人妻精品一区二区蜜桃| 东京热网站在线观看| 中文字幕在线观看视频www| AV午夜| 一本色道久久综合亚洲怎么玩| 亚洲群交| 91久久| 在线观看日韩欧美| wwwxx在线观看| 亚洲国产高清视频| 中文无码日本一级A片人| 精品一区二区三区四区学生| 黄片网址| 免费黄色视频大全| 日韩无码中文字幕视频| www.91超碰在线| 青娱乐精品视频| 欧美图片小说| 欧美精品乱码99久久蜜桃| 一区无码视频| 中文字幕毛片| 国产免费自拍视频| 青青草小视频| 亚洲欧美婷婷五月色综合| 青娱乐国产在线| 久久久噜噜噜| 国产av中文| 久久久www成人免费毛片| 91你懂的| 国产无码免费在线观看| 大鸡巴草逼| 成人毛片在线大全免费| 国产福利视频在线观看| 日本在线小视频| 中文在线无码| 天天毛片| 久操无码视频| 山东wBBBB搡wBBBB| 无码一区二区在线观看| 四虎影成人精品A片| 91精品人妻人人爽| av在线天堂| 免费一级无码成人片| 香蕉视频毛片| 无套内射在线播放| 日韩AV在线直播| 99视频网| 色天天综合| 狠狠色噜噜狠狠狠7777| 91网站在线免费观看| 亚洲男人天堂| 亚洲中文字幕免费观看| caopeng97| 亚洲精品秘一区二区三区影| 国产成人毛片18女人18精品| 西西444WWW大胆无| 国产精品黄色电影| 五月天婷婷色色| 夜操操| 天天干天天日蜜臀色欲av| 午夜黄色视频| 欧美熟妇精品一级A片视色| 自拍成人视频| 五月丁香六月激情综合| 欧美性爱a视频| 中文字幕在线观看完整av| 国产一页| 久热国产精品| 亚洲国产电影| 青春草在线视频免费观看| 国产粉嫩小泬白浆18p| 大香蕉777| 五月天av在线| 欧美成人超碰| 日韩一级毛| 国产suv精品一区二区6精华液 | 久久福利电影| 午夜视频99| 婷婷五月天激情网| 免费草逼视频| 亚洲无码大全| 黑人精品欧美一区二区蜜桃| 日韩欧美三级在线| 在线观看亚州| 短发妹子双人啪啪秀| 天天操网| 日韩成人小电影| 欧美偷拍精品| 日韩精品成人片| 国产无码自拍偷拍| 久久网一区| 69久久久久久久久久| 99久久综合| 亚洲AV无码成人精品国产五月天| 国产精品久久无码| 午夜探花在线观看| 最近中文字幕在线观看| 婷婷乱伦| 蜜桃久久久久久久| 亚洲日韩在线播放| 久久av一区二区三区| 福利网站在线观看| 日韩精品人妻中文字幕第4区| 99久久精品国产一区二区三区| 青青草视频91| 性欧美丰满熟妇XXXX性久久久 | 午夜激情四射| 一二三四区视频| 狠狠干天天操| 午夜私人福利| 蜜桃成人久久| 日韩精品久| 午夜黄电影| 伊人在线| 国产成人精品免费视频| 大鸡巴久久久| 8x8x黄色| 五月色丁香| 国产成人亚洲综合AV婷婷| 免费看无码| 操逼三级片| 日韩av中文字幕在线播放| 综合天堂网| 亚洲AV日韩AV永久无码网站| 丰滿老婦BBwBBwBBw| 亚洲欧美一区二区三区在线| 成人h在线观看| 操天天| 青青草日逼视频| 久久久久久五月天| 操婷婷逼| 天堂AV无码AV| 少妇AAA级久久久无码精品片| 国产精品AV网站| 亚洲综合一二三区| 国产操B| 欧美成人黄色电影| 欧美日韩精品在线观看| 国产视频99| 久久黄色网址| 美女日屄| 少妇搡BBBB搡BBB搡造水多| 亚洲天堂精品在线| 在线亚洲色图| 亚洲网站免费观看| 99色婷婷| 青青草原国产视频| PORNY九色视频9l自拍| 偷拍内射| 日韩av电影免费在线观看| 激情啪啪网站| 欧美久久一区二区三区四区视频 | 中文字幕一二三四| 亚洲黄色视频在线免费观看| www.777熟女人妻| 精品视频久久久久久| 国产精品久久久久久久久久二区三区| 国产非洲欧美在线| 成人性生活一级片| 99视频在线| 成人视频免费观看18| 国产福利视频在线观看| 欧美激情一区| 高清无码在线看| 亚洲热视频| 亚洲无码视频播放| 婷婷99| 亚洲无码不卡| 久久人妻中文字幕| 黄色A级毛片| 青青草在线视频免费观看| 五月综合久久| 中文av字幕| 肏屄在线视频| 都市激情亚洲| 日本黄色大片| 熟女一区二区| 91视频一区二区三区| 男女内射视频| 日韩成人无码一区二区| 日本中文字幕无码| 97人妻精品一区二区三区| 操逼一区二区| 五月天无码视频| 亚洲中文字幕网| 久久精品中文字幕| 精品无码人妻| 国产亲子乱A片免费视频| 91麻豆精品| 免费黄色在线观看| 亚洲二区后入极品| 国产欧美一区二区三区视频| 欧美夜夜草视频| 午夜国产精品AV| 青草午夜| 亚洲国精产品| 亚洲性图第一页| 怡红院成人AV| 色呦呦视频| 欧美日韩综合网| 欧美麻豆| 少妇探花| 天干夜天干天天天爽视频| 国产aa片| 日韩欧美V| 国产精品色视频| 性满足BBWBBWBBW| 伊人精品视频| 久久久国产91桃色一区二区三区| 深夜无码| 果冻传媒A片一二三区| 国产日韩欧美在线观看| 亚洲日韩中文字幕| 亚洲无码高清在线观看视频| 91精品老司机| 日韩精品毛片一区二区视频免费| 中文字幕综合在线| 久久不雅视频| 国产欧美日韩综合在线视频| 三级在线网站| 69国产精品无码免费| 青青草原视频在线| 亚洲色图欧美另类| 免费超碰在线| 国精品伦一区一区三区有限公司| 成人精品午夜无码免费| 豆花视频| 国产三级电影| 秋霞无码一区二区三区| 91精品国产人妻| 91香蕉在线看| 亚洲无码av电影| 最近日本中文字幕中文翻译歌词 | 中文字幕免费AV| 国产人妻精品一区二区三区不卡 | 麻豆乱伦视频| 黄色AV免费在线观看| 可以免费看的av| 翔田千里无码XXXXXX| 中文字幕不卡+婷婷五月| 亚洲无码影院| 最新av资源| 西西888WWW大胆视频| 国产在线拍揄自揄拍无码男男 | 亚洲一级片| 国产成人无码区免费视频| 99AV| 三级无码高清| 69久久久久| 亚洲成人内射| a片在线免费看| 国产精品TV| 日逼黄片| 人妻无码一区二区三区免费| 亚洲99热| 屁屁影院CCYYCOM国产| 国产精品久久久久久精| 亚洲免费观看高清完整版在线| 天天撸天天干| 江苏妇搡BBBB搡BBBB| 国产精品不卡| 先锋影音资源站av每日资源在线| 乱伦AV网| 手机看片亚洲| 国产97在线观看| 国产色情在线观看| 日韩成人综合| 日本韩国叼嘿片| 日韩无码不卡电影| 国产SM视频| 黄色免费在线网站| 中文字幕乱码中文字幕电视剧| www.国产在线观看| 久久蜜| 亚洲东方在线| 日韩日逼网站| 日韩欧美中文字幕公布| 欧美成人精品在线观看| 久草美女| 中文字幕亚洲视频| 成人网一区二区| 色综合99久久久无码国产精品| 国产嘿嘿| 国产伦精一品二品三品app| 99久视频| 国产日韩欧美| 亚洲免费在线看| 午夜福利123| 日本有码在线| 日韩欧美视频一区| 人人草人人草| 免费看日韩毛片| 天天澡日日久| 伊人五月天| 欧美日韩国产在线播放| 东北嫖老熟女一区二区视频网站 | 中文字幕无码人妻在线视频| 亚洲AV男人天堂| 成人性生活视频| 亚洲欧洲免费看| 国产成人三级视频| 无码在线观看免费视频| 你懂的在线观看| 中文有码| 午夜伦理福利| 大伊香蕉视频| 国产—a毛—a毛A免费看图| 国产美女精品| 国产嫩草久久久一二三久久免费观看| 亚洲无码在线资源| 美国无码| 欧美一级特黄A片免费| 青草久久久| 一区二区Av| 人成在线视频| 亚洲一区三区| 国产久久在线| 懂色在线精品分类视频| 日韩一区二区三区四区久久久精品有吗 | 苍井空无码在线观看| 东京热在线视频观看| 中文无码熟妇人妻AV在线| 国产黄色AV片| 特级特黄AAAA免费看| 一级成人毛片| 99久久婷婷国产综合精品电影| 女侠吕四娘第二部| 黄色视频在线观看大全| 国产l精品久久久久久久久久| 日韩无码免费播放| 一区二区三区无码视频| 欧美性爱免费在线视频| 日本亚洲中文字幕| 一级a一级a爱片免费免免高潮 | 黑人中文字幕| 日本暖暖视频| 亚洲性爱影院| 黄色片免费观看| 人妻懂色av粉嫩av浪潮av| 亚洲家庭乱伦| 国产成人精品电影| 性欧美成人18| 91丨PORN首页| 天天爽天天爽成人A片影院| 欧美日韩性| 一本一道vs波多野结衣| 亚洲欧洲日本在线| 熟女嗷嗷叫高潮合集91| 中文字幕无码AV| 国内免费毛片| 不卡成人| 国产精品96久久久| 91大神在线免费看| 亚洲天堂中文| 蜜臀av一区二区| 天天日综合| 亚洲精品日日夜夜| 黄色免费一级片| 欧美亚洲成人在线| 日本三级片免费观看| 亚洲三级在线免费观看| 黄色一级免费电影| 水蜜桃视频在线观看| 一级片电影网站| 加勒比日韩| 黄色毛片在线观看| 成年人性生活免费视频| 91人人妻人人操| 免费黄色网页| 五月天激情午夜福利| 日韩v片| 青青超碰| 中文字幕在线观看完整av| 亚洲日皮| 亚洲精品成人av无码| 久久内射| 年轻女教师高潮2| AV片在线免费观看| 欧美日韩免费| 美女黄视频网站| 大香蕉伊人在线网| 激情亚洲| 蜜臀av网| 蜜桃91精品秘成人取精库| 极品美女扒开粉嫩小泬高潮一| 青青草原国产视频| 国产欧美精品一区二区色综合| 国产精品无毛五区六区| 在线观看AV网站| 天天干中文字幕| 亚洲草比视频网| 欧美成人网站免费在线观看| 肏屄视频免费观看| 国产一级婬片A片免费妖精视频 | a天堂在线| 你懂的在线网站| 午夜一级性爱片| 成人性爱视频免费观看| 青青草超碰在线| 国产精品9999久久久久仙踪林 | 国产成人精品123区免费视频 | 午夜九九九| 亚洲有码中文字幕| 操鸡视频在线观看| 97欧美| 成人av小说网站| 日日99| 国产在线a| 五月天堂婷婷| 一级黄色小视频| 91人妻人人澡人人爽| av网站导航| 国产91探花秘入口| 亚洲成人性爱av|