3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

MySQL数据库学习教程,从0到入门

發(fā)布時(shí)間:2023/12/31 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL数据库学习教程,从0到入门 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

mysql day01課堂筆記

1、什么是數(shù)據(jù)庫(kù)?什么是數(shù)據(jù)庫(kù)管理系統(tǒng)?什么是SQL?他們之間的關(guān)系是什么?

數(shù)據(jù)庫(kù):英文單詞DataBase,簡(jiǎn)稱DB。按照一定格式存儲(chǔ)數(shù)據(jù)的一些文件的組合。顧名思義:存儲(chǔ)數(shù)據(jù)的倉(cāng)庫(kù),實(shí)際上就是一堆文件。這些文件中存儲(chǔ)了具有特定格式的數(shù)據(jù)。數(shù)據(jù)庫(kù)管理系統(tǒng):DataBaseManagement,簡(jiǎn)稱DBMS。數(shù)據(jù)庫(kù)管理系統(tǒng)是專門用來(lái)管理數(shù)據(jù)庫(kù)中數(shù)據(jù)的,數(shù)據(jù)庫(kù)管理系統(tǒng)可以對(duì)數(shù)據(jù)庫(kù)當(dāng)中的數(shù)據(jù)進(jìn)行增刪改查。常見的數(shù)據(jù)庫(kù)管理系統(tǒng):MySQL、Oracle、MS SqlServer、DB2、sybase等....SQL:結(jié)構(gòu)化查詢語(yǔ)言程序員需要學(xué)習(xí)SQL語(yǔ)句,程序員通過(guò)編寫SQL語(yǔ)句,然后DBMS負(fù)責(zé)執(zhí)行SQL語(yǔ)句,最終來(lái)完成數(shù)據(jù)庫(kù)中數(shù)據(jù)的增刪改查操作。SQL是一套標(biāo)準(zhǔn),程序員主要學(xué)習(xí)的就是SQL語(yǔ)句,這個(gè)SQL在mysql中可以使用,同時(shí)在Oracle中也可以使用,在DB2中也可以使用。三者之間的關(guān)系?DBMS--執(zhí)行--> SQL --操作--> DB先安裝數(shù)據(jù)庫(kù)管理系統(tǒng)MySQL,然后學(xué)習(xí)SQL語(yǔ)句怎么寫,編寫SQL語(yǔ)句之后,DBMS 對(duì)SQL語(yǔ)句進(jìn)行執(zhí)行,最終來(lái)完成數(shù)據(jù)庫(kù)的數(shù)據(jù)管理。

2、安裝MySQL數(shù)據(jù)庫(kù)管理系統(tǒng)。
第一步:先安裝,選擇“經(jīng)典版”
第二步:需要進(jìn)行MySQL數(shù)據(jù)庫(kù)實(shí)例配置。

注意:一路下一步就行了!!!!!需要注意的事項(xiàng)?端口號(hào):端口號(hào)port是任何一個(gè)軟件/應(yīng)用都會(huì)有的,端口號(hào)是應(yīng)用的唯一代表。端口號(hào)通常和IP地址在一塊,IP地址用來(lái)定位計(jì)算機(jī)的,端口號(hào)port是用來(lái)定位計(jì)算機(jī)上某個(gè)服務(wù)的/某個(gè)應(yīng)用的!在同一臺(tái)計(jì)算機(jī)上,端口號(hào)不能重復(fù)。具有唯一性。mysql數(shù)據(jù)庫(kù)啟動(dòng)的時(shí)候,這個(gè)服務(wù)占有的默認(rèn)端口號(hào)是3306這是大家都知道的事兒。記住。字符編碼方式?設(shè)置mysql數(shù)據(jù)庫(kù)的字符編碼方式為 UTF8一定要注意:先選中第3個(gè)單選按鈕,然后再選擇utf8字符集。服務(wù)名稱?默認(rèn)是:MySQL不用改。選擇配置環(huán)境變量path:如果沒有選擇怎么辦?你可以手動(dòng)配置path=其它路徑;C:\Program Files (x86)\MySQL\MySQL Server 5.5\binmysql超級(jí)管理員用戶名不能改,一定是:root你需要設(shè)置mysql數(shù)據(jù)庫(kù)超級(jí)管理員的密碼。我們?cè)O(shè)置為123456設(shè)置密碼的同時(shí),可以激活root賬戶遠(yuǎn)程訪問(wèn)。激活:表示root賬號(hào)可以在外地登錄。不激活:表示root賬號(hào)只能在本機(jī)上使用。我這里選擇激活了!

3、MySQL數(shù)據(jù)庫(kù)的完美卸載!
第一步:雙擊安裝包進(jìn)行卸載刪除。
第二步:刪除目錄:
把C:\ProgramData下面的MySQL目錄干掉。
把C:\Program Files (x86)下面的MySQL目錄干掉。

這樣就卸載結(jié)束了!

4、看一下計(jì)算機(jī)上的服務(wù),找一找MySQL的服務(wù)在哪里?
計(jì)算機(jī)–>右鍵–>管理–>服務(wù)和應(yīng)用程序–>服務(wù)–>找mysql服務(wù)
MySQL的服務(wù),默認(rèn)是“啟動(dòng)”的狀態(tài),只有啟動(dòng)了mysql才能用。
默認(rèn)情況下是“自動(dòng)”啟動(dòng),自動(dòng)啟動(dòng)表示下一次重啟操作系統(tǒng)的時(shí)候
自動(dòng)啟動(dòng)該服務(wù)。

可以在服務(wù)上點(diǎn)擊右鍵:啟動(dòng)重啟服務(wù)停止服務(wù)...還可以改變服務(wù)的默認(rèn)配置:服務(wù)上點(diǎn)擊右鍵,屬性,然后可以選擇啟動(dòng)方式:自動(dòng)(延遲啟動(dòng))自動(dòng)手動(dòng)禁用

5、在windows操作系統(tǒng)當(dāng)中,怎么使用命令來(lái)啟動(dòng)和關(guān)閉mysql服務(wù)呢?
語(yǔ)法:
net stop 服務(wù)名稱;
net start 服務(wù)名稱;

其它服務(wù)的啟停都可以采用以上的命令。

6、mysql安裝了,服務(wù)啟動(dòng)了,怎么使用客戶端登錄mysql數(shù)據(jù)庫(kù)呢?
使用bin目錄下的mysql.exe命令來(lái)連接mysql數(shù)據(jù)庫(kù)服務(wù)器

本地登錄(顯示編寫密碼的形式):C:\Users\Administrator>mysql -uroot -p123456Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 1Server version: 5.5.36 MySQL Community Server (GPL)Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>本地登錄(隱藏密碼的形式):C:\Users\Administrator>mysql -uroot -pEnter password: ******Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 2Server version: 5.5.36 MySQL Community Server (GPL)Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

7、mysql常用命令:

退出mysql :exit查看mysql中有哪些數(shù)據(jù)庫(kù)?show databases; 注意:以分號(hào)結(jié)尾,分號(hào)是英文的分號(hào)。mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ mysql默認(rèn)自帶了4個(gè)數(shù)據(jù)庫(kù)。怎么選擇使用某個(gè)數(shù)據(jù)庫(kù)呢?mysql> use test;Database changed表示正在使用一個(gè)名字叫做test的數(shù)據(jù)庫(kù)。怎么創(chuàng)建數(shù)據(jù)庫(kù)呢?mysql> create database bjpowernode;Query OK, 1 row affected (0.00 sec)mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || bjpowernode || mysql || performance_schema || test |+--------------------+查看某個(gè)數(shù)據(jù)庫(kù)下有哪些表?mysql> show tables;注意:以上的命令不區(qū)分大小寫,都行。查看mysql數(shù)據(jù)庫(kù)的版本號(hào): mysql> select version();+-----------+| version() |+-----------+| 5.5.36 |+-----------+查看當(dāng)前使用的是哪個(gè)數(shù)據(jù)庫(kù)? mysql> select database(); +-------------+ | database() | +-------------+ | bjpowernode | +-------------+mysql> show -> databases -> ; +--------------------+ | Database | +--------------------+ | information_schema | | bjpowernode | | mysql | | performance_schema | | test | +--------------------+注意:mysql是不見“;”不執(zhí)行,“;”表示結(jié)束!mysql> show -> -> -> -> -> -> -> -> -> \c mysql> \c用來(lái)終止一條命令的輸入。

8、數(shù)據(jù)庫(kù)當(dāng)中最基本的單元是表:table

什么是表table?為什么用表來(lái)存儲(chǔ)數(shù)據(jù)呢?姓名 性別 年齡(列:字段) ---------------------------張三 男 20 ------->行(記錄)李四 女 21 ------->行(記錄)王五 男 22 ------->行(記錄)數(shù)據(jù)庫(kù)當(dāng)中是以表格的形式表示數(shù)據(jù)的。 因?yàn)楸肀容^直觀。任何一張表都有行和列:行(row):被稱為數(shù)據(jù)/記錄。列(column):被稱為字段。姓名字段、性別字段、年齡字段。了解一下:每一個(gè)字段都有:字段名、數(shù)據(jù)類型、約束等屬性。字段名可以理解,是一個(gè)普通的名字,見名知意就行。數(shù)據(jù)類型:字符串,數(shù)字,日期等,后期講。約束:約束也有很多,其中一個(gè)叫做唯一性約束,這種約束添加之后,該字段中的數(shù)據(jù)不能重復(fù)。

9、關(guān)于SQL語(yǔ)句的分類?

SQL語(yǔ)句有很多,最好進(jìn)行分門別類,這樣更容易記憶。分為:DQL:數(shù)據(jù)查詢語(yǔ)言(凡是帶有select關(guān)鍵字的都是查詢語(yǔ)句)select...DML:數(shù)據(jù)操作語(yǔ)言(凡是對(duì)表當(dāng)中的數(shù)據(jù)進(jìn)行增刪改的都是DML)insert delete updateinsert 增delete 刪update 改這個(gè)主要是操作表中的數(shù)據(jù)data。DDL:數(shù)據(jù)定義語(yǔ)言凡是帶有create、drop、alter的都是DDL。DDL主要操作的是表的結(jié)構(gòu)。不是表中的數(shù)據(jù)。create:新建,等同于增drop:刪除alter:修改這個(gè)增刪改和DML不同,這個(gè)主要是對(duì)表結(jié)構(gòu)進(jìn)行操作。TCL:不是王牌電視。是事務(wù)控制語(yǔ)言包括:事務(wù)提交:commit;事務(wù)回滾:rollback;DCL:是數(shù)據(jù)控制語(yǔ)言。例如:授權(quán)grant、撤銷權(quán)限r(nóng)evoke....

10、導(dǎo)入一下提前準(zhǔn)備好的數(shù)據(jù):
bjpowernode.sql 這個(gè)文件中是我提前為大家練習(xí)準(zhǔn)備的數(shù)據(jù)庫(kù)表。
怎么將sql文件中的數(shù)據(jù)導(dǎo)入呢?
mysql> source D:\course\03-MySQL\document\bjpowernode.sql

注意:路徑中不要有中文!!!!

11、關(guān)于導(dǎo)入的這幾張表?
mysql> show tables;
±----------------------+
| Tables_in_bjpowernode |
±----------------------+
| dept |
| emp |
| salgrade |
±----------------------+

dept是部門表 emp是員工表 salgrade 是工資等級(jí)表怎么查看表中的數(shù)據(jù)呢?select * from 表名; //統(tǒng)一執(zhí)行這個(gè)SQL語(yǔ)句。mysql> select * from emp; // 從emp表查詢所有數(shù)據(jù)。 +-------+--------+-----------+------+------------+---------+---------+--------+ | EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO | +-------+--------+-----------+------+------------+---------+---------+--------+ | 7369 | SMITH | CLERK | 7902 | 1980-12-17 | 800.00 | NULL | 20 | | 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 | 1600.00 | 300.00 | 30 | | 7521 | WARD | SALESMAN | 7698 | 1981-02-22 | 1250.00 | 500.00 | 30 | | 7566 | JONES | MANAGER | 7839 | 1981-04-02 | 2975.00 | NULL | 20 | | 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 1250.00 | 1400.00 | 30 | | 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 | 2850.00 | NULL | 30 | | 7782 | CLARK | MANAGER | 7839 | 1981-06-09 | 2450.00 | NULL | 10 | | 7788 | SCOTT | ANALYST | 7566 | 1987-04-19 | 3000.00 | NULL | 20 | | 7839 | KING | PRESIDENT | NULL | 1981-11-17 | 5000.00 | NULL | 10 | | 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 | 1500.00 | 0.00 | 30 | | 7876 | ADAMS | CLERK | 7788 | 1987-05-23 | 1100.00 | NULL | 20 | | 7900 | JAMES | CLERK | 7698 | 1981-12-03 | 950.00 | NULL | 30 | | 7902 | FORD | ANALYST | 7566 | 1981-12-03 | 3000.00 | NULL | 20 | | 7934 | MILLER | CLERK | 7782 | 1982-01-23 | 1300.00 | NULL | 10 | +-------+--------+-----------+------+------------+---------+---------+--------+mysql> select * from dept; +--------+------------+----------+ | DEPTNO | DNAME | LOC | +--------+------------+----------+ | 10 | ACCOUNTING | NEW YORK | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | +--------+------------+----------+mysql> select * from salgrade; +-------+-------+-------+ | GRADE | LOSAL | HISAL | +-------+-------+-------+ | 1 | 700 | 1200 | | 2 | 1201 | 1400 | | 3 | 1401 | 2000 | | 4 | 2001 | 3000 | | 5 | 3001 | 9999 | +-------+-------+-------+

12、不看表中的數(shù)據(jù),只看表的結(jié)構(gòu),有一個(gè)命令:
desc 表名;
mysql> desc dept;
±-------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±-------±------------±-----±----±--------±------+
| DEPTNO | int(2) | NO | PRI | NULL | |部門編號(hào)
| DNAME | varchar(14) | YES | | NULL | |部門名字
| LOC | varchar(13) | YES | | NULL | |地理位置
±-------±------------±-----±----±--------±------+
mysql> desc emp;
±---------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±---------±------------±-----±----±--------±------+
| EMPNO | int(4) | NO | PRI | NULL | |員工編號(hào)
| ENAME | varchar(10) | YES | | NULL | |員工姓名
| JOB | varchar(9) | YES | | NULL | |工作崗位
| MGR | int(4) | YES | | NULL | |上級(jí)編號(hào)
| HIREDATE | date | YES | | NULL | |入職日期
| SAL | double(7,2) | YES | | NULL | |工資
| COMM | double(7,2) | YES | | NULL | |補(bǔ)助
| DEPTNO | int(2) | YES | | NULL | |部門編號(hào)
±---------±------------±-----±----±--------±------+
mysql> desc salgrade;
±------±--------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±------±--------±-----±----±--------±------+
| GRADE | int(11) | YES | | NULL | |工資等級(jí)
| LOSAL | int(11) | YES | | NULL | |最低工資
| HISAL | int(11) | YES | | NULL | |最高工資
±------±--------±-----±----±--------±------+

describe縮寫為:desc
mysql> describe dept;
±-------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±-------±------------±-----±----±--------±------+
| DEPTNO | int(2) | NO | PRI | NULL | |
| DNAME | varchar(14) | YES | | NULL | |
| LOC | varchar(13) | YES | | NULL | |
±-------±------------±-----±----±--------±------+

13、簡(jiǎn)單查詢
13.1、查詢一個(gè)字段?
select 字段名 from 表名;
其中要注意:
select和from都是關(guān)鍵字。
字段名和表名都是標(biāo)識(shí)符。

強(qiáng)調(diào):對(duì)于SQL語(yǔ)句來(lái)說(shuō),是通用的,所有的SQL語(yǔ)句以“;”結(jié)尾。另外SQL語(yǔ)句不區(qū)分大小寫,都行。查詢部門名字?mysql> select dname from dept;+------------+| dname |+------------+| ACCOUNTING || RESEARCH || SALES || OPERATIONS |+------------+4 rows in set (0.00 sec)mysql> SELECT DNAME FROM DEPT;+------------+| DNAME |+------------+| ACCOUNTING || RESEARCH || SALES || OPERATIONS |+------------+4 rows in set (0.00 sec)13.2、查詢兩個(gè)字段,或者多個(gè)字段怎么辦?使用逗號(hào)隔開“,”查詢部門編號(hào)和部門名?select deptno,dname from dept;+--------+------------+| deptno | dname |+--------+------------+| 10 | ACCOUNTING || 20 | RESEARCH || 30 | SALES || 40 | OPERATIONS |+--------+------------+13.3、查詢所有字段怎么辦?第一種方式:可以把每個(gè)字段都寫上select a,b,c,d,e,f... from tablename;第二種方式:可以使用*select * from dept;+--------+------------+----------+| DEPTNO | DNAME | LOC |+--------+------------+----------+| 10 | ACCOUNTING | NEW YORK || 20 | RESEARCH | DALLAS || 30 | SALES | CHICAGO || 40 | OPERATIONS | BOSTON |+--------+------------+----------+這種方式的缺點(diǎn):1、效率低2、可讀性差。在實(shí)際開發(fā)中不建議,可以自己玩沒問(wèn)題。你可以在DOS命令窗口中想快速的看一看全表數(shù)據(jù)可以采用這種方式。13.4、給查詢的列起別名?mysql> select deptno,dname as deptname from dept;+--------+------------+| deptno | deptname |+--------+------------+| 10 | ACCOUNTING || 20 | RESEARCH || 30 | SALES || 40 | OPERATIONS |+--------+------------+使用as關(guān)鍵字起別名。注意:只是將顯示的查詢結(jié)果列名顯示為deptname,原表列名還是叫:dname記住:select語(yǔ)句是永遠(yuǎn)都不會(huì)進(jìn)行修改操作的。(因?yàn)橹回?fù)責(zé)查詢)as關(guān)鍵字可以省略嗎?可以的mysql> select deptno,dname deptname from dept;假設(shè)起別名的時(shí)候,別名里面有空格,怎么辦?mysql> select deptno,dname dept name from dept;DBMS看到這樣的語(yǔ)句,進(jìn)行SQL語(yǔ)句的編譯,不符合語(yǔ)法,編譯報(bào)錯(cuò)。怎么解決?select deptno,dname 'dept name' from dept; //加單引號(hào)select deptno,dname "dept name" from dept; //加雙引號(hào)+--------+------------+| deptno | dept name |+--------+------------+| 10 | ACCOUNTING || 20 | RESEARCH || 30 | SALES || 40 | OPERATIONS |+--------+------------+注意:在所有的數(shù)據(jù)庫(kù)當(dāng)中,字符串統(tǒng)一使用單引號(hào)括起來(lái),單引號(hào)是標(biāo)準(zhǔn),雙引號(hào)在oracle數(shù)據(jù)庫(kù)中用不了。但是在mysql中可以使用。再次強(qiáng)調(diào):數(shù)據(jù)庫(kù)中的字符串都是采用單引號(hào)括起來(lái)。這是標(biāo)準(zhǔn)的。雙引號(hào)不標(biāo)準(zhǔn)。13.5、計(jì)算員工年薪?sal * 12mysql> select ename,sal from emp;+--------+---------+| ename | sal |+--------+---------+| SMITH | 800.00 || ALLEN | 1600.00 || WARD | 1250.00 || JONES | 2975.00 || MARTIN | 1250.00 || BLAKE | 2850.00 || CLARK | 2450.00 || SCOTT | 3000.00 || KING | 5000.00 || TURNER | 1500.00 || ADAMS | 1100.00 || JAMES | 950.00 || FORD | 3000.00 || MILLER | 1300.00 |+--------+---------+mysql> select ename,sal*12 from emp; // 結(jié)論:字段可以使用數(shù)學(xué)表達(dá)式!+--------+----------+| ename | sal*12 |+--------+----------+| SMITH | 9600.00 || ALLEN | 19200.00 || WARD | 15000.00 || JONES | 35700.00 || MARTIN | 15000.00 || BLAKE | 34200.00 || CLARK | 29400.00 || SCOTT | 36000.00 || KING | 60000.00 || TURNER | 18000.00 || ADAMS | 13200.00 || JAMES | 11400.00 || FORD | 36000.00 || MILLER | 15600.00 |+--------+----------+mysql> select ename,sal*12 as yearsal from emp; //起別名+--------+----------+| ename | yearsal |+--------+----------+| SMITH | 9600.00 || ALLEN | 19200.00 || WARD | 15000.00 || JONES | 35700.00 || MARTIN | 15000.00 || BLAKE | 34200.00 || CLARK | 29400.00 || SCOTT | 36000.00 || KING | 60000.00 || TURNER | 18000.00 || ADAMS | 13200.00 || JAMES | 11400.00 || FORD | 36000.00 || MILLER | 15600.00 |+--------+----------+mysql> select ename,sal*12 as '年薪' from emp; //別名是中文,用單引號(hào)括起來(lái)。+--------+----------+| ename | 年薪 |+--------+----------+| SMITH | 9600.00 || ALLEN | 19200.00 || WARD | 15000.00 || JONES | 35700.00 || MARTIN | 15000.00 || BLAKE | 34200.00 || CLARK | 29400.00 || SCOTT | 36000.00 || KING | 60000.00 || TURNER | 18000.00 || ADAMS | 13200.00 || JAMES | 11400.00 || FORD | 36000.00 || MILLER | 15600.00 |+--------+----------+

14、條件查詢

14.1、什么是條件查詢?
不是將表中所有數(shù)據(jù)都查出來(lái)。是查詢出來(lái)符合條件的。
語(yǔ)法格式:
select
字段1,字段2,字段3…
from
表名
where
條件;

14.2、都有哪些條件?

= 等于 查詢薪資等于800的員工姓名和編號(hào)?select empno,ename from emp where sal = 800; 查詢SMITH的編號(hào)和薪資?select empno,sal from emp where ename = 'SMITH'; //字符串使用單引號(hào)<>或!= 不等于 查詢薪資不等于800的員工姓名和編號(hào)?select empno,ename from emp where sal != 800;select empno,ename from emp where sal <> 800; // 小于號(hào)和大于號(hào)組成的不等號(hào)< 小于 查詢薪資小于2000的員工姓名和編號(hào)?mysql> select empno,ename,sal from emp where sal < 2000;+-------+--------+---------+| empno | ename | sal |+-------+--------+---------+| 7369 | SMITH | 800.00 || 7499 | ALLEN | 1600.00 || 7521 | WARD | 1250.00 || 7654 | MARTIN | 1250.00 || 7844 | TURNER | 1500.00 || 7876 | ADAMS | 1100.00 || 7900 | JAMES | 950.00 || 7934 | MILLER | 1300.00 |+-------+--------+---------+<= 小于等于 查詢薪資小于等于3000的員工姓名和編號(hào)?select empno,ename,sal from emp where sal <= 3000;> 大于 查詢薪資大于3000的員工姓名和編號(hào)?select empno,ename,sal from emp where sal > 3000;>= 大于等于 查詢薪資大于等于3000的員工姓名和編號(hào)?select empno,ename,sal from emp where sal >= 3000;between … and …. 兩個(gè)值之間, 等同于 >= and <= 查詢薪資在2450和3000之間的員工信息?包括2450和3000第一種方式:>= and <= (and是并且的意思。)select empno,ename,sal from emp where sal >= 2450 and sal <= 3000;+-------+-------+---------+| empno | ename | sal |+-------+-------+---------+| 7566 | JONES | 2975.00 || 7698 | BLAKE | 2850.00 || 7782 | CLARK | 2450.00 || 7788 | SCOTT | 3000.00 || 7902 | FORD | 3000.00 |+-------+-------+---------+第二種方式:between … and …select empno,ename,sal from emp where sal between 2450 and 3000;注意:使用between and的時(shí)候,必須遵循左小右大。between and是閉區(qū)間,包括兩端的值。is null 為 null(is not null 不為空) 查詢哪些員工的津貼/補(bǔ)助為null?mysql> select empno,ename,sal,comm from emp where comm = null;Empty set (0.00 sec)mysql> select empno,ename,sal,comm from emp where comm is null;+-------+--------+---------+------+| empno | ename | sal | comm |+-------+--------+---------+------+| 7369 | SMITH | 800.00 | NULL || 7566 | JONES | 2975.00 | NULL || 7698 | BLAKE | 2850.00 | NULL || 7782 | CLARK | 2450.00 | NULL || 7788 | SCOTT | 3000.00 | NULL || 7839 | KING | 5000.00 | NULL || 7876 | ADAMS | 1100.00 | NULL || 7900 | JAMES | 950.00 | NULL || 7902 | FORD | 3000.00 | NULL || 7934 | MILLER | 1300.00 | NULL |+-------+--------+---------+------+10 rows in set (0.00 sec)注意:在數(shù)據(jù)庫(kù)當(dāng)中null不能使用等號(hào)進(jìn)行衡量。需要使用is null因?yàn)閿?shù)據(jù)庫(kù)中的null代表什么也沒有,它不是一個(gè)值,所以不能使用等號(hào)衡量。查詢哪些員工的津貼/補(bǔ)助不為null?select empno,ename,sal,comm from emp where comm is not null;+-------+--------+---------+---------+| empno | ename | sal | comm |+-------+--------+---------+---------+| 7499 | ALLEN | 1600.00 | 300.00 || 7521 | WARD | 1250.00 | 500.00 || 7654 | MARTIN | 1250.00 | 1400.00 || 7844 | TURNER | 1500.00 | 0.00 |+-------+--------+---------+---------+and 并且 查詢工作崗位是MANAGER并且工資大于2500的員工信息?select empno,ename,job,sal from emp where job = 'MANAGER' and sal > 2500;+-------+-------+---------+---------+| empno | ename | job | sal |+-------+-------+---------+---------+| 7566 | JONES | MANAGER | 2975.00 || 7698 | BLAKE | MANAGER | 2850.00 |+-------+-------+---------+---------+or 或者 查詢工作崗位是MANAGER和SALESMAN的員工?select empno,ename,job from emp where job = 'MANAGER';select empno,ename,job from emp where job = 'SALESMAN';select empno,ename,jobfromempwhere job = 'MANAGER' or job = 'SALESMAN';+-------+--------+----------+| empno | ename | job |+-------+--------+----------+| 7499 | ALLEN | SALESMAN || 7521 | WARD | SALESMAN || 7566 | JONES | MANAGER || 7654 | MARTIN | SALESMAN || 7698 | BLAKE | MANAGER || 7782 | CLARK | MANAGER || 7844 | TURNER | SALESMAN |+-------+--------+----------+and和or同時(shí)出現(xiàn)的話,有優(yōu)先級(jí)問(wèn)題嗎? 查詢工資大于2500,并且部門編號(hào)為10或20部門的員工?select *fromempwheresal > 2500 and deptno = 10 or deptno = 20;分析以上語(yǔ)句的問(wèn)題?and優(yōu)先級(jí)比or高。以上語(yǔ)句會(huì)先執(zhí)行and,然后執(zhí)行or。以上這個(gè)語(yǔ)句表示什么含義?找出工資大于2500并且部門編號(hào)為10的員工,或者20部門所有員工找出來(lái)。select *fromempwheresal > 2500 and (deptno = 10 or deptno = 20);and和or同時(shí)出現(xiàn),and優(yōu)先級(jí)較高。如果想讓or先執(zhí)行,需要加“小括號(hào)”以后在開發(fā)中,如果不確定優(yōu)先級(jí),就加小括號(hào)就行了。in 包含,相當(dāng)于多個(gè) or (not in 不在這個(gè)范圍中)查詢工作崗位是MANAGER和SALESMAN的員工?select empno,ename,job from emp where job = 'MANAGER' or job = 'SALESMAN';select empno,ename,job from emp where job in('MANAGER', 'SALESMAN');+-------+--------+----------+| empno | ename | job |+-------+--------+----------+| 7499 | ALLEN | SALESMAN || 7521 | WARD | SALESMAN || 7566 | JONES | MANAGER || 7654 | MARTIN | SALESMAN || 7698 | BLAKE | MANAGER || 7782 | CLARK | MANAGER || 7844 | TURNER | SALESMAN |+-------+--------+----------+注意:in不是一個(gè)區(qū)間。in后面跟的是具體的值。查詢薪資是800和5000的員工信息?select ename,sal from emp where sal = 800 or sal = 5000;select ename,sal from emp where sal in(800, 5000); //這個(gè)不是表示800到5000都找出來(lái)。+-------+---------+| ename | sal |+-------+---------+| SMITH | 800.00 || KING | 5000.00 |+-------+---------+select ename,sal from emp where sal in(800, 5000, 3000);// not in 表示不在這幾個(gè)值當(dāng)中的數(shù)據(jù)。select ename,sal from emp where sal not in(800, 5000, 3000);+--------+---------+| ename | sal |+--------+---------+| ALLEN | 1600.00 || WARD | 1250.00 || JONES | 2975.00 || MARTIN | 1250.00 || BLAKE | 2850.00 || CLARK | 2450.00 || TURNER | 1500.00 || ADAMS | 1100.00 || JAMES | 950.00 || MILLER | 1300.00 |+--------+---------+not 可以取非,主要用在 is 或 in 中is nullis not nullinnot inlike 稱為模糊查詢,支持%或下劃線匹配%匹配任意多個(gè)字符下劃線:任意一個(gè)字符。(%是一個(gè)特殊的符號(hào),_ 也是一個(gè)特殊符號(hào))找出名字中含有O的?mysql> select ename from emp where ename like '%O%';+-------+| ename |+-------+| JONES || SCOTT || FORD |+-------+找出名字以T結(jié)尾的?select ename from emp where ename like '%T';找出名字以K開始的?select ename from emp where ename like 'K%';找出第二個(gè)字每是A的?select ename from emp where ename like '_A%';找出第三個(gè)字母是R的?select ename from emp where ename like '__R%';t_student學(xué)生表name字段----------------------zhangsanlisiwangwuzhaoliujack_son找出名字中有“_”的?select name from t_student where name like '%_%'; //這樣不行。mysql> select name from t_student where name like '%\_%'; // \轉(zhuǎn)義字符。+----------+| name |+----------+| jack_son |+----------+

15、排序

15.1、查詢所有員工薪資,排序?
select
ename,sal
from
emp
order by
sal; // 默認(rèn)是升序!!!

+--------+---------+ | ename | sal | +--------+---------+ | SMITH | 800.00 | | JAMES | 950.00 | | ADAMS | 1100.00 | | WARD | 1250.00 | | MARTIN | 1250.00 | | MILLER | 1300.00 | | TURNER | 1500.00 | | ALLEN | 1600.00 | | CLARK | 2450.00 | | BLAKE | 2850.00 | | JONES | 2975.00 | | FORD | 3000.00 | | SCOTT | 3000.00 | | KING | 5000.00 | +--------+---------+

15.2、怎么降序?

指定降序: select ename,sal fromemp order bysal desc;

±-------±--------+
| ename | sal |
±-------±--------+
| KING | 5000.00 |
| SCOTT | 3000.00 |
| FORD | 3000.00 |
| JONES | 2975.00 |
| BLAKE | 2850.00 |
| CLARK | 2450.00 |
| ALLEN | 1600.00 |
| TURNER | 1500.00 |
| MILLER | 1300.00 |
| MARTIN | 1250.00 |
| WARD | 1250.00 |
| ADAMS | 1100.00 |
| JAMES | 950.00 |
| SMITH | 800.00 |
±-------±--------+

指定升序? select ename,sal fromemp order bysal asc;

±-------±--------+
| ename | sal |
±-------±--------+
| SMITH | 800.00 |
| JAMES | 950.00 |
| ADAMS | 1100.00 |
| WARD | 1250.00 |
| MARTIN | 1250.00 |
| MILLER | 1300.00 |
| TURNER | 1500.00 |
| ALLEN | 1600.00 |
| CLARK | 2450.00 |
| BLAKE | 2850.00 |
| JONES | 2975.00 |
| FORD | 3000.00 |
| SCOTT | 3000.00 |
| KING | 5000.00 |
±-------±--------+

15.3、可以兩個(gè)字段排序嗎?或者說(shuō)按照多個(gè)字段排序?
查詢員工名字和薪資,要求按照薪資升序,如果薪資一樣的話,
再按照名字升序排列。
select
ename,sal
from
emp
order by
sal asc, ename asc; // sal在前,起主導(dǎo),只有sal相等的時(shí)候,才會(huì)考慮啟用ename排序。

+--------+---------+ | ename | sal | +--------+---------+ | SMITH | 800.00 | | JAMES | 950.00 | | ADAMS | 1100.00 | | MARTIN | 1250.00 | | WARD | 1250.00 | | MILLER | 1300.00 | | TURNER | 1500.00 | | ALLEN | 1600.00 | | CLARK | 2450.00 | | BLAKE | 2850.00 | | JONES | 2975.00 | | FORD | 3000.00 | | SCOTT | 3000.00 | | KING | 5000.00 | +--------+---------+

15.4、了解:根據(jù)字段的位置也可以排序
select ename,sal from emp order by 2; // 2表示第二列。第二列是sal
按照查詢結(jié)果的第2列sal排序。

了解一下,不建議在開發(fā)中這樣寫,因?yàn)椴唤选?因?yàn)榱械捻樞蚝苋菀装l(fā)生改變,列順序修改之后,2就廢了。

16、綜合一點(diǎn)的案例:
找出工資在1250到3000之間的員工信息,要求按照薪資降序排列。
select
ename,sal
from
emp
where
sal between 1250 and 3000
order by
sal desc;

±-------±--------+
| ename | sal |
±-------±--------+
| FORD | 3000.00 |
| SCOTT | 3000.00 |
| JONES | 2975.00 |
| BLAKE | 2850.00 |
| CLARK | 2450.00 |
| ALLEN | 1600.00 |
| TURNER | 1500.00 |
| MILLER | 1300.00 |
| MARTIN | 1250.00 |
| WARD | 1250.00 |
±-------±--------+

關(guān)鍵字順序不能變:select...from...where...order by...以上語(yǔ)句的執(zhí)行順序必須掌握:第一步:from第二步:where第三步:select第四步:order by(排序總是在最后執(zhí)行!)

17、數(shù)據(jù)處理函數(shù)

17.1、數(shù)據(jù)處理函數(shù)又被稱為單行處理函數(shù)

單行處理函數(shù)的特點(diǎn):一個(gè)輸入對(duì)應(yīng)一個(gè)輸出。和單行處理函數(shù)相對(duì)的是:多行處理函數(shù)。(多行處理函數(shù)特點(diǎn):多個(gè)輸入,對(duì)應(yīng)1個(gè)輸出!)

17.2、單行處理函數(shù)常見的有哪些?

lower 轉(zhuǎn)換小寫mysql> select lower(ename) as ename from emp;+--------+| ename |+--------+| smith || allen || ward || jones || martin || blake || clark || scott || king || turner || adams || james || ford || miller |+--------+14個(gè)輸入,最后還是14個(gè)輸出。這是單行處理函數(shù)的特點(diǎn)。upper 轉(zhuǎn)換大寫mysql> select * from t_student;+----------+| name |+----------+| zhangsan || lisi || wangwu || jack_son |+----------+mysql> select upper(name) as name from t_student;+----------+| name |+----------+| ZHANGSAN || LISI || WANGWU || JACK_SON |+----------+substr 取子串(substr( 被截取的字符串, 起始下標(biāo),截取的長(zhǎng)度))select substr(ename, 1, 1) as ename from emp;注意:起始下標(biāo)從1開始,沒有0.找出員工名字第一個(gè)字母是A的員工信息?第一種方式:模糊查詢select ename from emp where ename like 'A%';第二種方式:substr函數(shù)select ename from emp where substr(ename,1,1) = 'A';首字母大寫?select name from t_student;select upper(substr(name,1,1)) from t_student;select substr(name,2,length(name) - 1) from t_student;select concat(upper(substr(name,1,1)),substr(name,2,length(name) - 1)) as result from t_student;+----------+| result |+----------+| Zhangsan || Lisi || Wangwu || Jack_son |+----------+concat函數(shù)進(jìn)行字符串的拼接select concat(empno,ename) from emp;+---------------------+| concat(empno,ename) |+---------------------+| 7369SMITH || 7499ALLEN || 7521WARD || 7566JONES || 7654MARTIN || 7698BLAKE || 7782CLARK || 7788SCOTT || 7839KING || 7844TURNER || 7876ADAMS || 7900JAMES || 7902FORD || 7934MILLER |+---------------------+length 取長(zhǎng)度select length(ename) enamelength from emp;+-------------+| enamelength |+-------------+| 5 || 5 || 4 || 5 || 6 || 5 || 5 || 5 || 4 || 6 || 5 || 5 || 4 || 6 |+-------------+trim 去空格mysql> select * from emp where ename = ' KING';Empty set (0.00 sec)mysql> select * from emp where ename = trim(' KING');+-------+-------+-----------+------+------------+---------+------+--------+| EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO |+-------+-------+-----------+------+------------+---------+------+--------+| 7839 | KING | PRESIDENT | NULL | 1981-11-17 | 5000.00 | NULL | 10 |+-------+-------+-----------+------+------------+---------+------+--------+str_to_date 將字符串轉(zhuǎn)換成日期 date_format 格式化日期 format 設(shè)置千分位case..when..then..when..then..else..end當(dāng)員工的工作崗位是MANAGER的時(shí)候,工資上調(diào)10%,當(dāng)工作崗位是SALESMAN的時(shí)候,工資上調(diào)50%,其它正常。(注意:不修改數(shù)據(jù)庫(kù),只是將查詢結(jié)果顯示為工資上調(diào))select ename,job, sal as oldsal,(case job when 'MANAGER' then sal*1.1 when 'SALESMAN' then sal*1.5 else sal end) as newsal from emp;+--------+-----------+---------+---------+| ename | job | oldsal | newsal |+--------+-----------+---------+---------+| SMITH | CLERK | 800.00 | 800.00 || ALLEN | SALESMAN | 1600.00 | 2400.00 || WARD | SALESMAN | 1250.00 | 1875.00 || JONES | MANAGER | 2975.00 | 3272.50 || MARTIN | SALESMAN | 1250.00 | 1875.00 || BLAKE | MANAGER | 2850.00 | 3135.00 || CLARK | MANAGER | 2450.00 | 2695.00 || SCOTT | ANALYST | 3000.00 | 3000.00 || KING | PRESIDENT | 5000.00 | 5000.00 || TURNER | SALESMAN | 1500.00 | 2250.00 || ADAMS | CLERK | 1100.00 | 1100.00 || JAMES | CLERK | 950.00 | 950.00 || FORD | ANALYST | 3000.00 | 3000.00 || MILLER | CLERK | 1300.00 | 1300.00 |+--------+-----------+---------+---------+round 四舍五入select 字段 from 表名;select ename from emp;select 'abc' from emp; // select后面直接跟“字面量/字面值”mysql> select 'abc' as bieming from emp;+---------+| bieming |+---------+| abc || abc || abc || abc || abc || abc || abc || abc || abc || abc || abc || abc || abc || abc |+---------+mysql> select abc from emp;ERROR 1054 (42S22): Unknown column 'abc' in 'field list'這樣肯定報(bào)錯(cuò),因?yàn)闀?huì)把a(bǔ)bc當(dāng)做一個(gè)字段的名字,去emp表中找abc字段去了。select 1000 as num from emp; // 1000 也是被當(dāng)做一個(gè)字面量/字面值。+------+| num |+------+| 1000 || 1000 || 1000 || 1000 || 1000 || 1000 || 1000 || 1000 || 1000 || 1000 || 1000 || 1000 || 1000 || 1000 |+------+結(jié)論:select后面可以跟某個(gè)表的字段名(可以等同看做變量名),也可以跟字面量/字面值(數(shù)據(jù))。select 21000 as num from dept;+-------+| num |+-------+| 21000 || 21000 || 21000 || 21000 |+-------+mysql> select round(1236.567, 0) as result from emp; //保留整數(shù)位。+--------+| result |+--------+| 1237 || 1237 || 1237 || 1237 || 1237 || 1237 || 1237 || 1237 || 1237 || 1237 || 1237 || 1237 || 1237 || 1237 |+--------+select round(1236.567, 1) as result from emp; //保留1個(gè)小數(shù)select round(1236.567, 2) as result from emp; //保留2個(gè)小數(shù)select round(1236.567, -1) as result from emp; // 保留到十位。+--------+| result |+--------+| 1240 || 1240 || 1240 || 1240 || 1240 || 1240 || 1240 || 1240 || 1240 || 1240 || 1240 || 1240 || 1240 || 1240 |+--------+select round(1236.567, -2) as result from emp;+--------+| result |+--------+| 1200 || 1200 || 1200 || 1200 || 1200 || 1200 || 1200 || 1200 || 1200 || 1200 || 1200 || 1200 || 1200 || 1200 |+--------+rand() 生成隨機(jī)數(shù)mysql> select round(rand()*100,0) from emp; // 100以內(nèi)的隨機(jī)數(shù)+---------------------+| round(rand()*100,0) |+---------------------+| 76 || 29 || 15 || 88 || 95 || 9 || 63 || 89 || 54 || 3 || 54 || 61 || 42 || 28 |+---------------------+ifnull 可以將 null 轉(zhuǎn)換成一個(gè)具體值ifnull是空處理函數(shù)。專門處理空的。在所有數(shù)據(jù)庫(kù)當(dāng)中,只要有NULL參與的數(shù)學(xué)運(yùn)算,最終結(jié)果就是NULL。mysql> select ename, sal + comm as salcomm from emp;+--------+---------+| ename | salcomm |+--------+---------+| SMITH | NULL || ALLEN | 1900.00 || WARD | 1750.00 || JONES | NULL || MARTIN | 2650.00 || BLAKE | NULL || CLARK | NULL || SCOTT | NULL || KING | NULL || TURNER | 1500.00 || ADAMS | NULL || JAMES | NULL || FORD | NULL || MILLER | NULL |+--------+---------+計(jì)算每個(gè)員工的年薪?年薪 = (月薪 + 月補(bǔ)助) * 12select ename, (sal + comm) * 12 as yearsal from emp;+--------+----------+| ename | yearsal |+--------+----------+| SMITH | NULL || ALLEN | 22800.00 || WARD | 21000.00 || JONES | NULL || MARTIN | 31800.00 || BLAKE | NULL || CLARK | NULL || SCOTT | NULL || KING | NULL || TURNER | 18000.00 || ADAMS | NULL || JAMES | NULL || FORD | NULL || MILLER | NULL |+--------+----------+注意:NULL只要參與運(yùn)算,最終結(jié)果一定是NULL。為了避免這個(gè)現(xiàn)象,需要使用ifnull函數(shù)。ifnull函數(shù)用法:ifnull(數(shù)據(jù), 被當(dāng)做哪個(gè)值)如果“數(shù)據(jù)”為NULL的時(shí)候,把這個(gè)數(shù)據(jù)結(jié)構(gòu)當(dāng)做哪個(gè)值。補(bǔ)助為NULL的時(shí)候,將補(bǔ)助當(dāng)做0select ename, (sal + ifnull(comm, 0)) * 12 as yearsal from emp;+--------+----------+| ename | yearsal |+--------+----------+| SMITH | 9600.00 || ALLEN | 22800.00 || WARD | 21000.00 || JONES | 35700.00 || MARTIN | 31800.00 || BLAKE | 34200.00 || CLARK | 29400.00 || SCOTT | 36000.00 || KING | 60000.00 || TURNER | 18000.00 || ADAMS | 13200.00 || JAMES | 11400.00 || FORD | 36000.00 || MILLER | 15600.00 |+--------+----------+

18、分組函數(shù)(多行處理函數(shù))

多行處理函數(shù)的特點(diǎn):輸入多行,最終輸出一行。5個(gè):count 計(jì)數(shù)sum 求和avg 平均值max 最大值min 最小值注意:分組函數(shù)在使用的時(shí)候必須先進(jìn)行分組,然后才能用。如果你沒有對(duì)數(shù)據(jù)進(jìn)行分組,整張表默認(rèn)為一組。找出最高工資?mysql> select max(sal) from emp;+----------+| max(sal) |+----------+| 5000.00 |+----------+找出最低工資?mysql> select min(sal) from emp;+----------+| min(sal) |+----------+| 800.00 |+----------+計(jì)算工資和:mysql> select sum(sal) from emp;+----------+| sum(sal) |+----------+| 29025.00 |+----------+計(jì)算平均工資:mysql> select avg(sal) from emp;+-------------+| avg(sal) |+-------------+| 2073.214286 |+-------------+14個(gè)工資全部加起來(lái),然后除以14。計(jì)算員工數(shù)量?mysql> select count(ename) from emp;+--------------+| count(ename) |+--------------+| 14 |+--------------+分組函數(shù)在使用的時(shí)候需要注意哪些?第一點(diǎn):分組函數(shù)自動(dòng)忽略NULL,你不需要提前對(duì)NULL進(jìn)行處理。mysql> select sum(comm) from emp;+-----------+| sum(comm) |+-----------+| 2200.00 |+-----------+mysql> select count(comm) from emp;+-------------+| count(comm) |+-------------+| 4 |+-------------+mysql> select avg(comm) from emp;+------------+| avg(comm) |+------------+| 550.000000 |+------------+第二點(diǎn):分組函數(shù)中count(*)和count(具體字段)有什么區(qū)別?mysql> select count(*) from emp;+----------+| count(*) |+----------+| 14 |+----------+mysql> select count(comm) from emp;+-------------+| count(comm) |+-------------+| 4 |+-------------+count(具體字段):表示統(tǒng)計(jì)該字段下所有不為NULL的元素的總數(shù)。count(*):統(tǒng)計(jì)表當(dāng)中的總行數(shù)。(只要有一行數(shù)據(jù)count則++)因?yàn)槊恳恍杏涗洸豢赡芏紴镹ULL,一行數(shù)據(jù)中有一列不為NULL,則這行數(shù)據(jù)就是有效的。第三點(diǎn):分組函數(shù)不能夠直接使用在where子句中。找出比最低工資高的員工信息。select ename,sal from emp where sal > min(sal);表面上沒問(wèn)題,運(yùn)行一下?ERROR 1111 (HY000): Invalid use of group function?????????????????????????????????????????????????????????????????????說(shuō)完分組查詢(group by)之后就明白了了。第四點(diǎn):所有的分組函數(shù)可以組合起來(lái)一起用。select sum(sal),min(sal),max(sal),avg(sal),count(*) from emp;+----------+----------+----------+-------------+----------+| sum(sal) | min(sal) | max(sal) | avg(sal) | count(*) |+----------+----------+----------+-------------+----------+| 29025.00 | 800.00 | 5000.00 | 2073.214286 | 14 |+----------+----------+----------+-------------+----------+

19、分組查詢(非常重要:五顆星*****)

19.1、什么是分組查詢?在實(shí)際的應(yīng)用中,可能有這樣的需求,需要先進(jìn)行分組,然后對(duì)每一組的數(shù)據(jù)進(jìn)行操作。這個(gè)時(shí)候我們需要使用分組查詢,怎么進(jìn)行分組查詢呢?select...from...group by...計(jì)算每個(gè)部門的工資和?計(jì)算每個(gè)工作崗位的平均薪資?找出每個(gè)工作崗位的最高薪資?....19.2、將之前的關(guān)鍵字全部組合在一起,來(lái)看一下他們的執(zhí)行順序?select...from...where...group by...order by...以上關(guān)鍵字的順序不能顛倒,需要記憶。執(zhí)行順序是什么?1. from2. where3. group by4. select5. order by為什么分組函數(shù)不能直接使用在where后面?select ename,sal from emp where sal > min(sal);//報(bào)錯(cuò)。因?yàn)榉纸M函數(shù)在使用的時(shí)候必須先分組之后才能使用。where執(zhí)行的時(shí)候,還沒有分組。所以where后面不能出現(xiàn)分組函數(shù)。select sum(sal) from emp; 這個(gè)沒有分組,為啥sum()函數(shù)可以用呢?因?yàn)閟elect在group by之后執(zhí)行。19.3、找出每個(gè)工作崗位的工資和?實(shí)現(xiàn)思路:按照工作崗位分組,然后對(duì)工資求和。select job,sum(sal)fromempgroup byjob;+-----------+----------+| job | sum(sal) |+-----------+----------+| ANALYST | 6000.00 || CLERK | 4150.00 || MANAGER | 8275.00 || PRESIDENT | 5000.00 || SALESMAN | 5600.00 |+-----------+----------+以上這個(gè)語(yǔ)句的執(zhí)行順序?先從emp表中查詢數(shù)據(jù)。根據(jù)job字段進(jìn)行分組。然后對(duì)每一組的數(shù)據(jù)進(jìn)行sum(sal)select ename,job,sum(sal) from emp group by job;+-------+-----------+----------+| ename | job | sum(sal) |+-------+-----------+----------+| SCOTT | ANALYST | 6000.00 || SMITH | CLERK | 4150.00 || JONES | MANAGER | 8275.00 || KING | PRESIDENT | 5000.00 || ALLEN | SALESMAN | 5600.00 |+-------+-----------+----------+以上語(yǔ)句在mysql中可以執(zhí)行,但是毫無(wú)意義。以上語(yǔ)句在oracle中執(zhí)行報(bào)錯(cuò)。oracle的語(yǔ)法比mysql的語(yǔ)法嚴(yán)格。(mysql的語(yǔ)法相對(duì)來(lái)說(shuō)松散一些!)重點(diǎn)結(jié)論:在一條select語(yǔ)句當(dāng)中,如果有g(shù)roup by語(yǔ)句的話,select后面只能跟:參加分組的字段,以及分組函數(shù)。其它的一律不能跟。19.4、找出每個(gè)部門的最高薪資實(shí)現(xiàn)思路是什么?按照部門編號(hào)分組,求每一組的最大值。select后面添加ename字段沒有意義,另外oracle會(huì)報(bào)錯(cuò)。mysql> select ename,deptno,max(sal) from emp group by deptno;+-------+--------+----------+| ename | deptno | max(sal) |+-------+--------+----------+| CLARK | 10 | 5000.00 || SMITH | 20 | 3000.00 || ALLEN | 30 | 2850.00 |+-------+--------+----------+mysql> select deptno,max(sal) from emp group by deptno;+--------+----------+| deptno | max(sal) |+--------+----------+| 10 | 5000.00 || 20 | 3000.00 || 30 | 2850.00 |+--------+----------+19.5、找出“每個(gè)部門,不同工作崗位”的最高薪資?+--------+-----------+---------+--------+| ename | job | sal | deptno |+--------+-----------+---------+--------+| MILLER | CLERK | 1300.00 | 10 || KING | PRESIDENT | 5000.00 | 10 || CLARK | MANAGER | 2450.00 | 10 || FORD | ANALYST | 3000.00 | 20 || ADAMS | CLERK | 1100.00 | 20 || SCOTT | ANALYST | 3000.00 | 20 || JONES | MANAGER | 2975.00 | 20 || SMITH | CLERK | 800.00 | 20 || BLAKE | MANAGER | 2850.00 | 30 || MARTIN | SALESMAN | 1250.00 | 30 || ALLEN | SALESMAN | 1600.00 | 30 || TURNER | SALESMAN | 1500.00 | 30 || WARD | SALESMAN | 1250.00 | 30 || JAMES | CLERK | 950.00 | 30 |+--------+-----------+---------+--------+技巧:兩個(gè)字段聯(lián)合成1個(gè)字段看。(兩個(gè)字段聯(lián)合分組)select deptno, job, max(sal)fromempgroup bydeptno, job;+--------+-----------+----------+| deptno | job | max(sal) |+--------+-----------+----------+| 10 | CLERK | 1300.00 || 10 | MANAGER | 2450.00 || 10 | PRESIDENT | 5000.00 || 20 | ANALYST | 3000.00 || 20 | CLERK | 1100.00 || 20 | MANAGER | 2975.00 || 30 | CLERK | 950.00 || 30 | MANAGER | 2850.00 || 30 | SALESMAN | 1600.00 |+--------+-----------+----------+19.6、使用having可以對(duì)分完組之后的數(shù)據(jù)進(jìn)一步過(guò)濾。 having不能單獨(dú)使用,having不能代替where,having必須 和group by聯(lián)合使用。找出每個(gè)部門最高薪資,要求顯示最高薪資大于3000的?第一步:找出每個(gè)部門最高薪資按照部門編號(hào)分組,求每一組最大值。select deptno,max(sal) from emp group by deptno;+--------+----------+| deptno | max(sal) |+--------+----------+| 10 | 5000.00 || 20 | 3000.00 || 30 | 2850.00 |+--------+----------+第二步:要求顯示最高薪資大于3000select deptno,max(sal) from emp group by deptnohavingmax(sal) > 3000;+--------+----------+| deptno | max(sal) |+--------+----------+| 10 | 5000.00 |+--------+----------+思考一個(gè)問(wèn)題:以上的sql語(yǔ)句執(zhí)行效率是不是低?比較低,實(shí)際上可以這樣考慮:先將大于3000的都找出來(lái),然后再分組。select deptno,max(sal)fromempwheresal > 3000group bydeptno;+--------+----------+| deptno | max(sal) |+--------+----------+| 10 | 5000.00 |+--------+----------+優(yōu)化策略:where和having,優(yōu)先選擇where,where實(shí)在完成不了了,再選擇having。19.7、where沒辦法的????找出每個(gè)部門平均薪資,要求顯示平均薪資高于2500的。第一步:找出每個(gè)部門平均薪資select deptno,avg(sal) from emp group by deptno;+--------+-------------+| deptno | avg(sal) |+--------+-------------+| 10 | 2916.666667 || 20 | 2175.000000 || 30 | 1566.666667 |+--------+-------------+第二步:要求顯示平均薪資高于2500的select deptno,avg(sal) from emp group by deptnohavingavg(sal) > 2500;+--------+-------------+| deptno | avg(sal) |+--------+-------------+| 10 | 2916.666667 |+--------+-------------+

20、大總結(jié)(單表的查詢學(xué)完了)
select

from

where

group by

having

order by

以上關(guān)鍵字只能按照這個(gè)順序來(lái),不能顛倒。執(zhí)行順序?1. from2. where3. group by4. having5. select6. order by從某張表中查詢數(shù)據(jù), 先經(jīng)過(guò)where條件篩選出有價(jià)值的數(shù)據(jù)。 對(duì)這些有價(jià)值的數(shù)據(jù)進(jìn)行分組。 分組之后可以使用having繼續(xù)篩選。 select查詢出來(lái)。 最后排序輸出!找出每個(gè)崗位的平均薪資,要求顯示平均薪資大于1500的,除MANAGER崗位之外, 要求按照平均薪資降序排。select job, avg(sal) as avgsalfromempwherejob <> 'MANAGER'group byjobhavingavg(sal) > 1500order byavgsal desc;+-----------+-------------+| job | avgsal |+-----------+-------------+| PRESIDENT | 5000.000000 || ANALYST | 3000.000000 |+-----------+-------------+

Second day
mysql day02課堂筆記

1、把查詢結(jié)果去除重復(fù)記錄【distinct】
注意:原表數(shù)據(jù)不會(huì)被修改,只是查詢結(jié)果去重。
去重需要使用一個(gè)關(guān)鍵字:distinct

mysql> select distinct job from emp; +-----------+ | job | +-----------+ | CLERK | | SALESMAN | | MANAGER | | ANALYST | | PRESIDENT | +-----------+// 這樣編寫是錯(cuò)誤的,語(yǔ)法錯(cuò)誤。 // distinct只能出現(xiàn)在所有字段的最前方。 mysql> select ename,distinct job from emp;// distinct出現(xiàn)在job,deptno兩個(gè)字段之前,表示兩個(gè)字段聯(lián)合起來(lái)去重。 mysql> select distinct job,deptno from emp; +-----------+--------+ | job | deptno | +-----------+--------+ | CLERK | 20 | | SALESMAN | 30 | | MANAGER | 20 | | MANAGER | 30 | | MANAGER | 10 | | ANALYST | 20 | | PRESIDENT | 10 | | CLERK | 30 | | CLERK | 10 | +-----------+--------+統(tǒng)計(jì)一下工作崗位的數(shù)量?select count(distinct job) from emp;+---------------------+| count(distinct job) |+---------------------+| 5 |+---------------------+

2、連接查詢

2.1、什么是連接查詢?
從一張表中單獨(dú)查詢,稱為單表查詢。
emp表和dept表聯(lián)合起來(lái)查詢數(shù)據(jù),從emp表中取員工名字,從dept表中取部門名字。
這種跨表查詢,多張表聯(lián)合起來(lái)查詢數(shù)據(jù),被稱為連接查詢。

2.2、連接查詢的分類?

根據(jù)語(yǔ)法的年代分類:SQL92:1992年的時(shí)候出現(xiàn)的語(yǔ)法SQL99:1999年的時(shí)候出現(xiàn)的語(yǔ)法我們這里重點(diǎn)學(xué)習(xí)SQL99.(這個(gè)過(guò)程中簡(jiǎn)單演示一個(gè)SQL92的例子)根據(jù)表連接的方式分類:內(nèi)連接:等值連接非等值連接自連接外連接:左外連接(左連接)右外連接(右連接)全連接(不講)

2.3、當(dāng)兩張表進(jìn)行連接查詢時(shí),沒有任何條件的限制會(huì)發(fā)生什么現(xiàn)象?

案例:查詢每個(gè)員工所在部門名稱?mysql> select ename,deptno from emp;+--------+--------+| ename | deptno |+--------+--------+| SMITH | 20 || ALLEN | 30 || WARD | 30 || JONES | 20 || MARTIN | 30 || BLAKE | 30 || CLARK | 10 || SCOTT | 20 || KING | 10 || TURNER | 30 || ADAMS | 20 || JAMES | 30 || FORD | 20 || MILLER | 10 |+--------+--------+mysql> select * from dept;+--------+------------+----------+| DEPTNO | DNAME | LOC |+--------+------------+----------+| 10 | ACCOUNTING | NEW YORK || 20 | RESEARCH | DALLAS || 30 | SALES | CHICAGO || 40 | OPERATIONS | BOSTON |+--------+------------+----------+兩張表連接沒有任何條件限制:select ename,dname from emp, dept;+--------+------------+| ename | dname |+--------+------------+| SMITH | ACCOUNTING || SMITH | RESEARCH || SMITH | SALES || SMITH | OPERATIONS || ALLEN | ACCOUNTING || ALLEN | RESEARCH || ALLEN | SALES || ALLEN | OPERATIONS |...56 rows in set (0.00 sec)14 * 4 = 56當(dāng)兩張表進(jìn)行連接查詢,沒有任何條件限制的時(shí)候,最終查詢結(jié)果條數(shù),是兩張表?xiàng)l數(shù)的乘積,這種現(xiàn)象被稱為:笛卡爾積現(xiàn)象。(笛卡爾發(fā)現(xiàn)的,這是一個(gè)數(shù)學(xué)現(xiàn)象。)

2.4、怎么避免笛卡爾積現(xiàn)象?
連接時(shí)加條件,滿足這個(gè)條件的記錄被篩選出來(lái)!
select
ename,dname
from
emp, dept
where
emp.deptno = dept.deptno;

select emp.ename,dept.dname from emp, dept whereemp.deptno = dept.deptno;// 表起別名。很重要。效率問(wèn)題。 select e.ename,d.dname from emp e, dept d wheree.deptno = d.deptno; //SQL92語(yǔ)法。+--------+------------+ | ename | dname | +--------+------------+ | CLARK | ACCOUNTING | | KING | ACCOUNTING | | MILLER | ACCOUNTING | | SMITH | RESEARCH | | JONES | RESEARCH | | SCOTT | RESEARCH | | ADAMS | RESEARCH | | FORD | RESEARCH | | ALLEN | SALES | | WARD | SALES | | MARTIN | SALES | | BLAKE | SALES | | TURNER | SALES | | JAMES | SALES | +--------+------------+思考:最終查詢的結(jié)果條數(shù)是14條,但是匹配的過(guò)程中,匹配的次數(shù)減少了嗎?還是56次,只不過(guò)進(jìn)行了四選一。次數(shù)沒有減少。注意:通過(guò)笛卡爾積現(xiàn)象得出,表的連接次數(shù)越多效率越低,盡量避免表的 連接次數(shù)。

2.5、內(nèi)連接之等值連接。

案例:查詢每個(gè)員工所在部門名稱,顯示員工名和部門名?
emp e和dept d表進(jìn)行連接。條件是:e.deptno = d.deptno

SQL92語(yǔ)法:
select
e.ename,d.dname
from
emp e, dept d
where
e.deptno = d.deptno;

sql92的缺點(diǎn):結(jié)構(gòu)不清晰,表的連接條件,和后期進(jìn)一步篩選的條件,都放到了where后面。

SQL99語(yǔ)法:
select
e.ename,d.dname
from
emp e
join
dept d
on
e.deptno = d.deptno;

//inner可以省略(帶著inner可讀性更好!!!一眼就能看出來(lái)是內(nèi)連接) select e.ename,d.dname fromemp e inner joindept d one.deptno = d.deptno; // 條件是等量關(guān)系,所以被稱為等值連接。sql99優(yōu)點(diǎn):表連接的條件是獨(dú)立的,連接之后,如果還需要進(jìn)一步篩選,再往后繼續(xù)添加whereSQL99語(yǔ)法:select ...fromajoinbona和b的連接條件where篩選條件

2.6、內(nèi)連接之非等值連接

案例:找出每個(gè)員工的薪資等級(jí),要求顯示員工名、薪資、薪資等級(jí)?
mysql> select * from emp; e
±------±-------±----------±-----±-----------±--------±--------±-------+
| EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO |
±------±-------±----------±-----±-----------±--------±--------±-------+
| 7369 | SMITH | CLERK | 7902 | 1980-12-17 | 800.00 | NULL | 20 |
| 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 | 1600.00 | 300.00 | 30 |
| 7521 | WARD | SALESMAN | 7698 | 1981-02-22 | 1250.00 | 500.00 | 30 |
| 7566 | JONES | MANAGER | 7839 | 1981-04-02 | 2975.00 | NULL | 20 |

mysql> select * from salgrade; s
±------±------±------+
| GRADE | LOSAL | HISAL |
±------±------±------+
| 1 | 700 | 1200 |
| 2 | 1201 | 1400 |
| 3 | 1401 | 2000 |
| 4 | 2001 | 3000 |
| 5 | 3001 | 9999 |
±------±------±------+

select
e.ename, e.sal, s.grade
from
emp e
join
salgrade s
on
e.sal between s.losal and s.hisal; // 條件不是一個(gè)等量關(guān)系,稱為非等值連接。

select
e.ename, e.sal, s.grade
from
emp e
inner join
salgrade s
on
e.sal between s.losal and s.hisal;

±-------±--------±------+
| ename | sal | grade |
±-------±--------±------+
| SMITH | 800.00 | 1 |
| ALLEN | 1600.00 | 3 |
| WARD | 1250.00 | 2 |
| JONES | 2975.00 | 4 |
| MARTIN | 1250.00 | 2 |
| BLAKE | 2850.00 | 4 |
| CLARK | 2450.00 | 4 |
| SCOTT | 3000.00 | 4 |
| KING | 5000.00 | 5 |
| TURNER | 1500.00 | 3 |
| ADAMS | 1100.00 | 1 |
| JAMES | 950.00 | 1 |
| FORD | 3000.00 | 4 |
| MILLER | 1300.00 | 2 |
±-------±--------±------+

2.7、內(nèi)連接之自連接
案例:查詢員工的上級(jí)領(lǐng)導(dǎo),要求顯示員工名和對(duì)應(yīng)的領(lǐng)導(dǎo)名?

mysql> select empno,ename,mgr from emp;
±------±-------±-----+
| empno | ename | mgr |
±------±-------±-----+
| 7369 | SMITH | 7902 |
| 7499 | ALLEN | 7698 |
| 7521 | WARD | 7698 |
| 7566 | JONES | 7839 |
| 7654 | MARTIN | 7698 |
| 7698 | BLAKE | 7839 |
| 7782 | CLARK | 7839 |
| 7788 | SCOTT | 7566 |
| 7839 | KING | NULL |
| 7844 | TURNER | 7698 |
| 7876 | ADAMS | 7788 |
| 7900 | JAMES | 7698 |
| 7902 | FORD | 7566 |
| 7934 | MILLER | 7782 |
±------±-------±-----+

技巧:一張表看成兩張表。
emp a 員工表
±------±-------±-----+
| empno | ename | mgr |
±------±-------±-----+
| 7369 | SMITH | 7902 |
| 7499 | ALLEN | 7698 |
| 7521 | WARD | 7698 |
| 7566 | JONES | 7839 |
| 7654 | MARTIN | 7698 |
| 7698 | BLAKE | 7839 |
| 7782 | CLARK | 7839 |
| 7788 | SCOTT | 7566 |
| 7839 | KING | NULL |
| 7844 | TURNER | 7698 |
| 7876 | ADAMS | 7788 |
| 7900 | JAMES | 7698 |
| 7902 | FORD | 7566 |
| 7934 | MILLER | 7782 |
±------±-------±-----+

emp b 領(lǐng)導(dǎo)表
±------±-------±-----+
| empno | ename | mgr |
±------±-------±-----+
| 7369 | SMITH | 7902 |
| 7499 | ALLEN | 7698 |
| 7521 | WARD | 7698 |
| 7566 | JONES | 7839 |
| 7654 | MARTIN | 7698 |
| 7698 | BLAKE | 7839 |
| 7782 | CLARK | 7839 |
| 7788 | SCOTT | 7566 |
| 7839 | KING | NULL |
| 7844 | TURNER | 7698 |
| 7876 | ADAMS | 7788 |
| 7900 | JAMES | 7698 |
| 7902 | FORD | 7566 |
| 7934 | MILLER | 7782 |
±------±-------±-----+

select
a.ename as ‘員工名’, b.ename as ‘領(lǐng)導(dǎo)名’
from
emp a
join
emp b
on
a.mgr = b.empno; //員工的領(lǐng)導(dǎo)編號(hào) = 領(lǐng)導(dǎo)的員工編號(hào)

±-------±-------+
| 員工名 | 領(lǐng)導(dǎo)名|
±-------±-------+
| SMITH | FORD |
| ALLEN | BLAKE |
| WARD | BLAKE |
| JONES | KING |
| MARTIN | BLAKE |
| BLAKE | KING |
| CLARK | KING |
| SCOTT | JONES |
| TURNER | BLAKE |
| ADAMS | SCOTT |
| JAMES | BLAKE |
| FORD | JONES |
| MILLER | CLARK |
±-------±-------+
13條記錄,沒有KING。《內(nèi)連接》

以上就是內(nèi)連接中的:自連接,技巧:一張表看做兩張表。

2.8、外連接

mysql> select * from emp; e
±------±-------±----------±-----±-----------±--------±--------±-------+
| EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO |
±------±-------±----------±-----±-----------±--------±--------±-------+
| 7369 | SMITH | CLERK | 7902 | 1980-12-17 | 800.00 | NULL | 20 |
| 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 | 1600.00 | 300.00 | 30 |
| 7521 | WARD | SALESMAN | 7698 | 1981-02-22 | 1250.00 | 500.00 | 30 |
| 7566 | JONES | MANAGER | 7839 | 1981-04-02 | 2975.00 | NULL | 20 |
| 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 1250.00 | 1400.00 | 30 |
| 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 | 2850.00 | NULL | 30 |
| 7782 | CLARK | MANAGER | 7839 | 1981-06-09 | 2450.00 | NULL | 10 |
| 7788 | SCOTT | ANALYST | 7566 | 1987-04-19 | 3000.00 | NULL | 20 |
| 7839 | KING | PRESIDENT | NULL | 1981-11-17 | 5000.00 | NULL | 10 |
| 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 | 1500.00 | 0.00 | 30 |
| 7876 | ADAMS | CLERK | 7788 | 1987-05-23 | 1100.00 | NULL | 20 |
| 7900 | JAMES | CLERK | 7698 | 1981-12-03 | 950.00 | NULL | 30 |
| 7902 | FORD | ANALYST | 7566 | 1981-12-03 | 3000.00 | NULL | 20 |
| 7934 | MILLER | CLERK | 7782 | 1982-01-23 | 1300.00 | NULL | 10 |
±------±-------±----------±-----±-----------±--------±--------±-------+

mysql> select * from dept; d
±-------±-----------±---------+
| DEPTNO | DNAME | LOC |
±-------±-----------±---------+
| 10 | ACCOUNTING | NEW YORK |
| 20 | RESEARCH | DALLAS |
| 30 | SALES | CHICAGO |
| 40 | OPERATIONS | BOSTON |
±-------±-----------±---------+

內(nèi)連接:(A和B連接,AB兩張表沒有主次關(guān)系。平等的。)
select
e.ename,d.dname
from
emp e
join
dept d
on
e.deptno = d.deptno; //內(nèi)連接的特點(diǎn):完成能夠匹配上這個(gè)條件的數(shù)據(jù)查詢出來(lái)。

±-------±-----------+
| ename | dname |
±-------±-----------+
| CLARK | ACCOUNTING |
| KING | ACCOUNTING |
| MILLER | ACCOUNTING |
| SMITH | RESEARCH |
| JONES | RESEARCH |
| SCOTT | RESEARCH |
| ADAMS | RESEARCH |
| FORD | RESEARCH |
| ALLEN | SALES |
| WARD | SALES |
| MARTIN | SALES |
| BLAKE | SALES |
| TURNER | SALES |
| JAMES | SALES |
±-------±-----------+

外連接(右外連接):
select
e.ename,d.dname
from
emp e
right join
dept d
on
e.deptno = d.deptno;

// outer是可以省略的,帶著可讀性強(qiáng)。
select
e.ename,d.dname
from
emp e
right outer join
dept d
on
e.deptno = d.deptno;

right代表什么:表示將join關(guān)鍵字右邊的這張表看成主表,主要是為了將
這張表的數(shù)據(jù)全部查詢出來(lái),捎帶著關(guān)聯(lián)查詢左邊的表。
在外連接當(dāng)中,兩張表連接,產(chǎn)生了主次關(guān)系。

外連接(左外連接):
select
e.ename,d.dname
from
dept d
left join
emp e
on
e.deptno = d.deptno;

// outer是可以省略的,帶著可讀性強(qiáng)。
select
e.ename,d.dname
from
dept d
left outer join
emp e
on
e.deptno = d.deptno;

帶有right的是右外連接,又叫做右連接。
帶有l(wèi)eft的是左外連接,又叫做左連接。
任何一個(gè)右連接都有左連接的寫法。
任何一個(gè)左連接都有右連接的寫法。

±-------±-----------+
| ename | dname |
±-------±-----------+
| CLARK | ACCOUNTING |
| KING | ACCOUNTING |
| MILLER | ACCOUNTING |
| SMITH | RESEARCH |
| JONES | RESEARCH |
| SCOTT | RESEARCH |
| ADAMS | RESEARCH |
| FORD | RESEARCH |
| ALLEN | SALES |
| WARD | SALES |
| MARTIN | SALES |
| BLAKE | SALES |
| TURNER | SALES |
| JAMES | SALES |
| NULL | OPERATIONS |
±-------±-----------+

思考:外連接的查詢結(jié)果條數(shù)一定是 >= 內(nèi)連接的查詢結(jié)果條數(shù)?
正確。

案例:查詢每個(gè)員工的上級(jí)領(lǐng)導(dǎo),要求顯示所有員工的名字和領(lǐng)導(dǎo)名?
select
a.ename as ‘員工名’, b.ename as ‘領(lǐng)導(dǎo)名’
from
emp a
left join
emp b
on
a.mgr = b.empno;

+--------+--------+ | 員工名 | 領(lǐng)導(dǎo)名 | +--------+--------+ | SMITH | FORD | | ALLEN | BLAKE | | WARD | BLAKE | | JONES | KING | | MARTIN | BLAKE | | BLAKE | KING | | CLARK | KING | | SCOTT | JONES | | KING | NULL | | TURNER | BLAKE | | ADAMS | SCOTT | | JAMES | BLAKE | | FORD | JONES | | MILLER | CLARK | +--------+--------+

2.9、三張表,四張表怎么連接?
語(yǔ)法:
select

from
a
join
b
on
a和b的連接條件
join
c
on
a和c的連接條件
right join
d
on
a和d的連接條件

一條SQL中內(nèi)連接和外連接可以混合。都可以出現(xiàn)!案例:找出每個(gè)員工的部門名稱以及工資等級(jí), 要求顯示員工名、部門名、薪資、薪資等級(jí)?select e.ename,e.sal,d.dname,s.grade fromemp e joindept d on e.deptno = d.deptno joinsalgrade s one.sal between s.losal and s.hisal;+--------+---------+------------+-------+ | ename | sal | dname | grade | +--------+---------+------------+-------+ | SMITH | 800.00 | RESEARCH | 1 | | ALLEN | 1600.00 | SALES | 3 | | WARD | 1250.00 | SALES | 2 | | JONES | 2975.00 | RESEARCH | 4 | | MARTIN | 1250.00 | SALES | 2 | | BLAKE | 2850.00 | SALES | 4 | | CLARK | 2450.00 | ACCOUNTING | 4 | | SCOTT | 3000.00 | RESEARCH | 4 | | KING | 5000.00 | ACCOUNTING | 5 | | TURNER | 1500.00 | SALES | 3 | | ADAMS | 1100.00 | RESEARCH | 1 | | JAMES | 950.00 | SALES | 1 | | FORD | 3000.00 | RESEARCH | 4 | | MILLER | 1300.00 | ACCOUNTING | 2 | +--------+---------+------------+-------+案例:找出每個(gè)員工的部門名稱以及工資等級(jí),還有上級(jí)領(lǐng)導(dǎo), 要求顯示員工名、領(lǐng)導(dǎo)名、部門名、薪資、薪資等級(jí)?select e.ename,e.sal,d.dname,s.grade,l.ename fromemp e joindept d on e.deptno = d.deptno joinsalgrade s one.sal between s.losal and s.hisal left joinemp l one.mgr = l.empno;+--------+---------+------------+-------+-------+ | ename | sal | dname | grade | ename | +--------+---------+------------+-------+-------+ | SMITH | 800.00 | RESEARCH | 1 | FORD | | ALLEN | 1600.00 | SALES | 3 | BLAKE | | WARD | 1250.00 | SALES | 2 | BLAKE | | JONES | 2975.00 | RESEARCH | 4 | KING | | MARTIN | 1250.00 | SALES | 2 | BLAKE | | BLAKE | 2850.00 | SALES | 4 | KING | | CLARK | 2450.00 | ACCOUNTING | 4 | KING | | SCOTT | 3000.00 | RESEARCH | 4 | JONES | | KING | 5000.00 | ACCOUNTING | 5 | NULL | | TURNER | 1500.00 | SALES | 3 | BLAKE | | ADAMS | 1100.00 | RESEARCH | 1 | SCOTT | | JAMES | 950.00 | SALES | 1 | BLAKE | | FORD | 3000.00 | RESEARCH | 4 | JONES | | MILLER | 1300.00 | ACCOUNTING | 2 | CLARK | +--------+---------+------------+-------+-------+

3、子查詢?

3.1、什么是子查詢?
select語(yǔ)句中嵌套select語(yǔ)句,被嵌套的select語(yǔ)句稱為子查詢。

3.2、子查詢都可以出現(xiàn)在哪里呢?
select
…(select).
from
…(select).
where
…(select).

3.3、where子句中的子查詢

案例:找出比最低工資高的員工姓名和工資?select ename,salfromemp wheresal > min(sal);ERROR 1111 (HY000): Invalid use of group functionwhere子句中不能直接使用分組函數(shù)。實(shí)現(xiàn)思路:第一步:查詢最低工資是多少select min(sal) from emp;+----------+| min(sal) |+----------+| 800.00 |+----------+第二步:找出>800的select ename,sal from emp where sal > 800;第三步:合并select ename,sal from emp where sal > (select min(sal) from emp);+--------+---------+| ename | sal |+--------+---------+| ALLEN | 1600.00 || WARD | 1250.00 || JONES | 2975.00 || MARTIN | 1250.00 || BLAKE | 2850.00 || CLARK | 2450.00 || SCOTT | 3000.00 || KING | 5000.00 || TURNER | 1500.00 || ADAMS | 1100.00 || JAMES | 950.00 || FORD | 3000.00 || MILLER | 1300.00 |+--------+---------+

3.4、from子句中的子查詢
注意:from后面的子查詢,可以將子查詢的查詢結(jié)果當(dāng)做一張臨時(shí)表。(技巧)

案例:找出每個(gè)崗位的平均工資的薪資等級(jí)。第一步:找出每個(gè)崗位的平均工資(按照崗位分組求平均值)select job,avg(sal) from emp group by job;+-----------+-------------+| job | avgsal |+-----------+-------------+| ANALYST | 3000.000000 || CLERK | 1037.500000 || MANAGER | 2758.333333 || PRESIDENT | 5000.000000 || SALESMAN | 1400.000000 |+-----------+-------------+t表第二步:克服心理障礙,把以上的查詢結(jié)果就當(dāng)做一張真實(shí)存在的表t。 mysql> select * from salgrade; s表 +-------+-------+-------+ | GRADE | LOSAL | HISAL | +-------+-------+-------+ | 1 | 700 | 1200 | | 2 | 1201 | 1400 | | 3 | 1401 | 2000 | | 4 | 2001 | 3000 | | 5 | 3001 | 9999 | +-------+-------+-------+ t表和s表進(jìn)行表連接,條件:t表avg(sal) between s.losal and s.hisal;select t.*, s.gradefrom(select job,avg(sal) as avgsal from emp group by job) tjoinsalgrade sont.avgsal between s.losal and s.hisal;+-----------+-------------+-------+| job | avgsal | grade |+-----------+-------------+-------+| CLERK | 1037.500000 | 1 || SALESMAN | 1400.000000 | 2 || ANALYST | 3000.000000 | 4 || MANAGER | 2758.333333 | 4 || PRESIDENT | 5000.000000 | 5 |+-----------+-------------+-------+

3.5、select后面出現(xiàn)的子查詢(這個(gè)內(nèi)容不需要掌握,了解即可!!!)

案例:找出每個(gè)員工的部門名稱,要求顯示員工名,部門名?
select
e.ename,e.deptno,(select d.dname from dept d where e.deptno = d.deptno) as dname
from
emp e;

+--------+--------+------------+ | ename | deptno | dname | +--------+--------+------------+ | SMITH | 20 | RESEARCH | | ALLEN | 30 | SALES | | WARD | 30 | SALES | | JONES | 20 | RESEARCH | | MARTIN | 30 | SALES | | BLAKE | 30 | SALES | | CLARK | 10 | ACCOUNTING | | SCOTT | 20 | RESEARCH | | KING | 10 | ACCOUNTING | | TURNER | 30 | SALES | | ADAMS | 20 | RESEARCH | | JAMES | 30 | SALES | | FORD | 20 | RESEARCH | | MILLER | 10 | ACCOUNTING | +--------+--------+------------+//錯(cuò)誤:ERROR 1242 (21000): Subquery returns more than 1 row select e.ename,e.deptno,(select dname from dept) as dname fromemp e;注意:對(duì)于select后面的子查詢來(lái)說(shuō),這個(gè)子查詢只能一次返回1條結(jié)果, 多于1條,就報(bào)錯(cuò)了。!

4、union合并查詢結(jié)果集

案例:查詢工作崗位是MANAGER和SALESMAN的員工?
select ename,job from emp where job = ‘MANAGER’ or job = ‘SALESMAN’;
select ename,job from emp where job in(‘MANAGER’,‘SALESMAN’);
±-------±---------+
| ename | job |
±-------±---------+
| ALLEN | SALESMAN |
| WARD | SALESMAN |
| JONES | MANAGER |
| MARTIN | SALESMAN |
| BLAKE | MANAGER |
| CLARK | MANAGER |
| TURNER | SALESMAN |
±-------±---------+

select ename,job from emp where job = 'MANAGER' union select ename,job from emp where job = 'SALESMAN';+--------+----------+ | ename | job | +--------+----------+ | JONES | MANAGER | | BLAKE | MANAGER | | CLARK | MANAGER | | ALLEN | SALESMAN | | WARD | SALESMAN | | MARTIN | SALESMAN | | TURNER | SALESMAN | +--------+----------+union的效率要高一些。對(duì)于表連接來(lái)說(shuō),每連接一次新表, 則匹配的次數(shù)滿足笛卡爾積,成倍的翻。。。 但是union可以減少匹配的次數(shù)。在減少匹配次數(shù)的情況下, 還可以完成兩個(gè)結(jié)果集的拼接。a 連接 b 連接 c a 10條記錄 b 10條記錄 c 10條記錄 匹配次數(shù)是:1000a 連接 b一個(gè)結(jié)果:10 * 10 --> 100次 a 連接 c一個(gè)結(jié)果:10 * 10 --> 100次 使用union的話是:100次 + 100次 = 200次。(union把乘法變成了加法運(yùn)算)

union在使用的時(shí)候有注意事項(xiàng)嗎?

//錯(cuò)誤的:union在進(jìn)行結(jié)果集合并的時(shí)候,要求兩個(gè)結(jié)果集的列數(shù)相同。 select ename,job from emp where job = 'MANAGER' union select ename from emp where job = 'SALESMAN';// MYSQL可以,oracle語(yǔ)法嚴(yán)格 ,不可以,報(bào)錯(cuò)。要求:結(jié)果集合并時(shí)列和列的數(shù)據(jù)類型也要一致。 select ename,job from emp where job = 'MANAGER' union select ename,sal from emp where job = 'SALESMAN'; +--------+---------+ | ename | job | +--------+---------+ | JONES | MANAGER | | BLAKE | MANAGER | | CLARK | MANAGER | | ALLEN | 1600 | | WARD | 1250 | | MARTIN | 1250 | | TURNER | 1500 | +--------+---------+

5、limit(非常重要)

5.1、limit作用:將查詢結(jié)果集的一部分取出來(lái)。通常使用在分頁(yè)查詢當(dāng)中。
百度默認(rèn):一頁(yè)顯示10條記錄。
分頁(yè)的作用是為了提高用戶的體驗(yàn),因?yàn)橐淮稳慷疾槌鰜?lái),用戶體驗(yàn)差。
可以一頁(yè)一頁(yè)翻頁(yè)看。

5.2、limit怎么用呢?

完整用法:limit startIndex, lengthstartIndex是起始下標(biāo),length是長(zhǎng)度。起始下標(biāo)從0開始。缺省用法:limit 5; 這是取前5.按照薪資降序,取出排名在前5名的員工? select ename,sal fromemp order by sal desc limit 5; //取前5select ename,sal fromemp order by sal desc limit 0,5;+-------+---------+ | ename | sal | +-------+---------+ | KING | 5000.00 | | SCOTT | 3000.00 | | FORD | 3000.00 | | JONES | 2975.00 | | BLAKE | 2850.00 | +-------+---------+

5.3、注意:mysql當(dāng)中l(wèi)imit在order by之后執(zhí)行!!!!!!

5.4、取出工資排名在[3-5]名的員工?
select
ename,sal
from
emp
order by
sal desc
limit
2, 3;

2表示起始位置從下標(biāo)2開始,就是第三條記錄。 3表示長(zhǎng)度。+-------+---------+ | ename | sal | +-------+---------+ | FORD | 3000.00 | | JONES | 2975.00 | | BLAKE | 2850.00 | +-------+---------+

5.5、取出工資排名在[5-9]名的員工?
select
ename,sal
from
emp
order by
sal desc
limit
4, 5;

+--------+---------+ | ename | sal | +--------+---------+ | BLAKE | 2850.00 | | CLARK | 2450.00 | | ALLEN | 1600.00 | | TURNER | 1500.00 | | MILLER | 1300.00 | +--------+---------+

5.6、分頁(yè)

每頁(yè)顯示3條記錄
第1頁(yè):limit 0,3 [0 1 2]
第2頁(yè):limit 3,3 [3 4 5]
第3頁(yè):limit 6,3 [6 7 8]
第4頁(yè):limit 9,3 [9 10 11]

每頁(yè)顯示pageSize條記錄
第pageNo頁(yè):limit (pageNo - 1) * pageSize , pageSize

public static void main(String[] args){// 用戶提交過(guò)來(lái)一個(gè)頁(yè)碼,以及每頁(yè)顯示的記錄條數(shù)int pageNo = 5; //第5頁(yè)int pageSize = 10; //每頁(yè)顯示10條int startIndex = (pageNo - 1) * pageSize;String sql = "select ...limit " + startIndex + ", " + pageSize; }

記公式:
limit (pageNo-1)*pageSize , pageSize

6、關(guān)于DQL語(yǔ)句的大總結(jié):
select

from

where

group by

having

order by

limit

執(zhí)行順序?1.from2.where3.group by4.having5.select6.order by7.limit..

7、表的創(chuàng)建(建表)

7.1、建表的語(yǔ)法格式:(建表屬于DDL語(yǔ)句,DDL包括:create drop alter)

create table 表名(字段名1 數(shù)據(jù)類型, 字段名2 數(shù)據(jù)類型, 字段名3 數(shù)據(jù)類型);create table 表名(字段名1 數(shù)據(jù)類型, 字段名2 數(shù)據(jù)類型, 字段名3 數(shù)據(jù)類型 );表名:建議以t_ 或者 tbl_開始,可讀性強(qiáng)。見名知意。 字段名:見名知意。 表名和字段名都屬于標(biāo)識(shí)符。

7.2、關(guān)于mysql中的數(shù)據(jù)類型?

很多數(shù)據(jù)類型,我們只需要掌握一些常見的數(shù)據(jù)類型即可。varchar(最長(zhǎng)255)可變長(zhǎng)度的字符串比較智能,節(jié)省空間。會(huì)根據(jù)實(shí)際的數(shù)據(jù)長(zhǎng)度動(dòng)態(tài)分配空間。優(yōu)點(diǎn):節(jié)省空間缺點(diǎn):需要?jiǎng)討B(tài)分配空間,速度慢。char(最長(zhǎng)255)定長(zhǎng)字符串不管實(shí)際的數(shù)據(jù)長(zhǎng)度是多少。分配固定長(zhǎng)度的空間去存儲(chǔ)數(shù)據(jù)。使用不恰當(dāng)?shù)臅r(shí)候,可能會(huì)導(dǎo)致空間的浪費(fèi)。優(yōu)點(diǎn):不需要?jiǎng)討B(tài)分配空間,速度快。缺點(diǎn):使用不當(dāng)可能會(huì)導(dǎo)致空間的浪費(fèi)。varchar和char我們應(yīng)該怎么選擇?性別字段你選什么?因?yàn)樾詣e是固定長(zhǎng)度的字符串,所以選擇char。姓名字段你選什么?每一個(gè)人的名字長(zhǎng)度不同,所以選擇varchar。int(最長(zhǎng)11)數(shù)字中的整數(shù)型。等同于java的int。bigint數(shù)字中的長(zhǎng)整型。等同于java中的long。float 單精度浮點(diǎn)型數(shù)據(jù)double雙精度浮點(diǎn)型數(shù)據(jù)date短日期類型datetime長(zhǎng)日期類型clob字符大對(duì)象最多可以存儲(chǔ)4G的字符串。比如:存儲(chǔ)一篇文章,存儲(chǔ)一個(gè)說(shuō)明。超過(guò)255個(gè)字符的都要采用CLOB字符大對(duì)象來(lái)存儲(chǔ)。Character Large OBject:CLOBblob二進(jìn)制大對(duì)象Binary Large OBject專門用來(lái)存儲(chǔ)圖片、聲音、視頻等流媒體數(shù)據(jù)。往BLOB類型的字段上插入數(shù)據(jù)的時(shí)候,例如插入一個(gè)圖片、視頻等,你需要使用IO流才行。t_movie 電影表(專門存儲(chǔ)電影信息的)編號(hào) 名字 故事情節(jié) 上映日期 時(shí)長(zhǎng) 海報(bào) 類型 no(bigint) name(varchar) history(clob) playtime(date) time(double) image(blob) type(char) ------------------------------------------------------------------------------------------------------------------ 10000 哪吒 ........... 2019-10-11 2.5 .... '1' 10001 林正英之娘娘 ........... 2019-11-11 1.5 .... '2' ....

7.3、創(chuàng)建一個(gè)學(xué)生表?
學(xué)號(hào)、姓名、年齡、性別、郵箱地址
create table t_student(
no int,
name varchar(32),
sex char(1),
age int(3),
email varchar(255)
);

刪除表:drop table t_student; // 當(dāng)這張表不存在的時(shí)候會(huì)報(bào)錯(cuò)!// 如果這張表存在的話,刪除drop table if exists t_student;

7.4、插入數(shù)據(jù)insert (DML)

語(yǔ)法格式:insert into 表名(字段名1,字段名2,字段名3...) values(值1,值2,值3);注意:字段名和值要一一對(duì)應(yīng)。什么是一一對(duì)應(yīng)?數(shù)量要對(duì)應(yīng)。數(shù)據(jù)類型要對(duì)應(yīng)。insert into t_student(no,name,sex,age,email) values(1,'zhangsan','m',20,'zhangsan@123.com'); insert into t_student(email,name,sex,age,no) values('lisi@123.com','lisi','f',20,2);insert into t_student(no) values(3);+------+----------+------+------+------------------+ | no | name | sex | age | email | +------+----------+------+------+------------------+ | 1 | zhangsan | m | 20 | zhangsan@123.com | | 2 | lisi | f | 20 | lisi@123.com | | 3 | NULL | NULL | NULL | NULL | +------+----------+------+------+------------------+ insert into t_student(name) values('wangwu'); +------+----------+------+------+------------------+ | no | name | sex | age | email | +------+----------+------+------+------------------+ | 1 | zhangsan | m | 20 | zhangsan@123.com | | 2 | lisi | f | 20 | lisi@123.com | | 3 | NULL | NULL | NULL | NULL | | NULL | wangwu | NULL | NULL | NULL | +------+----------+------+------+------------------+ 注意:insert語(yǔ)句但凡是執(zhí)行成功了,那么必然會(huì)多一條記錄。 沒有給其它字段指定值的話,默認(rèn)值是NULL。drop table if exists t_student; create table t_student(no int,name varchar(32),sex char(1) default 'm',age int(3),email varchar(255) );+-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | no | int(11) | YES | | NULL | | | name | varchar(32) | YES | | NULL | | | sex | char(1) | YES | | m | | | age | int(3) | YES | | NULL | | | email | varchar(255) | YES | | NULL | | +-------+--------------+------+-----+---------+-------+ insert into t_student(no) values(1); mysql> select * from t_student; +------+------+------+------+-------+ | no | name | sex | age | email | +------+------+------+------+-------+ | 1 | NULL | m | NULL | NULL | +------+------+------+------+-------+insert語(yǔ)句中的“字段名”可以省略嗎?可以insert into t_student values(2); //錯(cuò)誤的// 注意:前面的字段名省略的話,等于都寫上了!所以值也要都寫上!insert into t_student values(2, 'lisi', 'f', 20, 'lisi@123.com');+------+------+------+------+--------------+| no | name | sex | age | email |+------+------+------+------+--------------+| 1 | NULL | m | NULL | NULL || 2 | lisi | f | 20 | lisi@123.com |+------+------+------+------+--------------+

7.5、insert插入日期

數(shù)字格式化:formatselect ename,sal from emp;+--------+---------+| ename | sal |+--------+---------+| SMITH | 800.00 || ALLEN | 1600.00 || WARD | 1250.00 || JONES | 2975.00 || MARTIN | 1250.00 || BLAKE | 2850.00 || CLARK | 2450.00 || SCOTT | 3000.00 || KING | 5000.00 || TURNER | 1500.00 || ADAMS | 1100.00 || JAMES | 950.00 || FORD | 3000.00 || MILLER | 1300.00 |+--------+---------+格式化數(shù)字:format(數(shù)字, '格式')select ename,format(sal, '$999,999') as sal from emp;+--------+-------+| ename | sal |+--------+-------+| SMITH | 800 || ALLEN | 1,600 || WARD | 1,250 || JONES | 2,975 || MARTIN | 1,250 || BLAKE | 2,850 || CLARK | 2,450 || SCOTT | 3,000 || KING | 5,000 || TURNER | 1,500 || ADAMS | 1,100 || JAMES | 950 || FORD | 3,000 || MILLER | 1,300 |+--------+-------+str_to_date:將字符串varchar類型轉(zhuǎn)換成date類型 date_format:將date類型轉(zhuǎn)換成具有一定格式的varchar字符串類型。drop table if exists t_user; create table t_user(id int,name varchar(32),birth date // 生日也可以使用date日期類型 );create table t_user(id int,name varchar(32),birth char(10) // 生日可以使用字符串,沒問(wèn)題。 );生日:1990-10-11 (10個(gè)字符)注意:數(shù)據(jù)庫(kù)中的有一條命名規(guī)范:所有的標(biāo)識(shí)符都是全部小寫,單詞和單詞之間使用下劃線進(jìn)行銜接。mysql> desc t_user; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | name | varchar(32) | YES | | NULL | | | birth | date | YES | | NULL | | +-------+-------------+------+-----+---------+-------+插入數(shù)據(jù)?insert into t_user(id,name,birth) values(1, 'zhangsan', '01-10-1990'); // 1990年10月1日出問(wèn)題了:原因是類型不匹配。數(shù)據(jù)庫(kù)birth是date類型,這里給了一個(gè)字符串varchar。怎么辦?可以使用str_to_date函數(shù)進(jìn)行類型轉(zhuǎn)換。str_to_date函數(shù)可以將字符串轉(zhuǎn)換成日期類型date?語(yǔ)法格式:str_to_date('字符串日期', '日期格式')mysql的日期格式:%Y 年%m 月%d 日%h 時(shí)%i 分%s 秒insert into t_user(id,name,birth) values(1, 'zhangsan', str_to_date('01-10-1990','%d-%m-%Y'));str_to_date函數(shù)可以把字符串varchar轉(zhuǎn)換成日期date類型數(shù)據(jù),通常使用在插入insert方面,因?yàn)椴迦氲臅r(shí)候需要一個(gè)日期類型的數(shù)據(jù),需要通過(guò)該函數(shù)將字符串轉(zhuǎn)換成date。好消息?如果你提供的日期字符串是這個(gè)格式,str_to_date函數(shù)就不需要了!!!%Y-%m-%dinsert into t_user(id,name,birth) values(2, 'lisi', '1990-10-01');查詢的時(shí)候可以以某個(gè)特定的日期格式展示嗎?date_format這個(gè)函數(shù)可以將日期類型轉(zhuǎn)換成特定格式的字符串。select id,name,date_format(birth, '%m/%d/%Y') as birth from t_user;+------+----------+------------+| id | name | birth |+------+----------+------------+| 1 | zhangsan | 10/01/1990 || 2 | lisi | 10/01/1990 |+------+----------+------------+date_format函數(shù)怎么用?date_format(日期類型數(shù)據(jù), '日期格式')這個(gè)函數(shù)通常使用在查詢?nèi)掌诜矫妗TO(shè)置展示的日期格式。mysql> select id,name,birth from t_user;+------+----------+------------+| id | name | birth |+------+----------+------------+| 1 | zhangsan | 1990-10-01 || 2 | lisi | 1990-10-01 |+------+----------+------------+以上的SQL語(yǔ)句實(shí)際上是進(jìn)行了默認(rèn)的日期格式化,自動(dòng)將數(shù)據(jù)庫(kù)中的date類型轉(zhuǎn)換成varchar類型。并且采用的格式是mysql默認(rèn)的日期格式:'%Y-%m-%d'select id,name,date_format(birth,'%Y/%m/%d') as birth from t_user;java中的日期格式?yyyy-MM-dd HH:mm:ss SSS

7.6、date和datetime兩個(gè)類型的區(qū)別?
date是短日期:只包括年月日信息。
datetime是長(zhǎng)日期:包括年月日時(shí)分秒信息。

drop table if exists t_user; create table t_user(id int,name varchar(32),birth date,create_time datetime );id是整數(shù) name是字符串 birth是短日期 create_time是這條記錄的創(chuàng)建時(shí)間:長(zhǎng)日期類型mysql短日期默認(rèn)格式:%Y-%m-%d mysql長(zhǎng)日期默認(rèn)格式:%Y-%m-%d %h:%i:%sinsert into t_user(id,name,birth,create_time) values(1,'zhangsan','1990-10-01','2020-03-18 15:49:50');在mysql當(dāng)中怎么獲取系統(tǒng)當(dāng)前時(shí)間?now() 函數(shù),并且獲取的時(shí)間帶有:時(shí)分秒信息!!!!是datetime類型的。insert into t_user(id,name,birth,create_time) values(2,'lisi','1991-10-01',now());

7.7、修改update(DML)

語(yǔ)法格式:
update 表名 set 字段名1=值1,字段名2=值2,字段名3=值3… where 條件;

注意:沒有條件限制會(huì)導(dǎo)致所有數(shù)據(jù)全部更新。update t_user set name = 'jack', birth = '2000-10-11' where id = 2; +------+----------+------------+---------------------+ | id | name | birth | create_time | +------+----------+------------+---------------------+ | 1 | zhangsan | 1990-10-01 | 2020-03-18 15:49:50 | | 2 | jack | 2000-10-11 | 2020-03-18 15:51:23 | +------+----------+------------+---------------------+update t_user set name = 'jack', birth = '2000-10-11', create_time = now() where id = 2;更新所有?update t_user set name = 'abc';

7.8、刪除數(shù)據(jù) delete (DML)
語(yǔ)法格式?
delete from 表名 where 條件;

注意:沒有條件,整張表的數(shù)據(jù)會(huì)全部刪除!delete from t_user where id = 2;insert into t_user(id) values(2);delete from t_user; // 刪除所有!

mysql day03課堂筆記

1、查詢每一個(gè)員工的所在部門名稱?要求顯示員工名和部門名。

mysql> select * from emp;
±------±-------±----------±-----±-----------±--------±--------±-------+
| EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO |
±------±-------±----------±-----±-----------±--------±--------±-------+
| 7369 | SMITH | CLERK | 7902 | 1980-12-17 | 800.00 | NULL | 20 |
| 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 | 1600.00 | 300.00 | 30 |
| 7521 | WARD | SALESMAN | 7698 | 1981-02-22 | 1250.00 | 500.00 | 30 |
| 7566 | JONES | MANAGER | 7839 | 1981-04-02 | 2975.00 | NULL | 20 |
| 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 1250.00 | 1400.00 | 30 |
| 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 | 2850.00 | NULL | 30 |
| 7782 | CLARK | MANAGER | 7839 | 1981-06-09 | 2450.00 | NULL | 10 |
| 7788 | SCOTT | ANALYST | 7566 | 1987-04-19 | 3000.00 | NULL | 20 |
| 7839 | KING | PRESIDENT | NULL | 1981-11-17 | 5000.00 | NULL | 10 |
| 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 | 1500.00 | 0.00 | 30 |
| 7876 | ADAMS | CLERK | 7788 | 1987-05-23 | 1100.00 | NULL | 20 |
| 7900 | JAMES | CLERK | 7698 | 1981-12-03 | 950.00 | NULL | 30 |
| 7902 | FORD | ANALYST | 7566 | 1981-12-03 | 3000.00 | NULL | 20 |
| 7934 | MILLER | CLERK | 7782 | 1982-01-23 | 1300.00 | NULL | 10 |
±------±-------±----------±-----±-----------±--------±--------±-------+

mysql> select * from dept;
±-------±-----------±---------+
| DEPTNO | DNAME | LOC |
±-------±-----------±---------+
| 10 | ACCOUNTING | NEW YORK |
| 20 | RESEARCH | DALLAS |
| 30 | SALES | CHICAGO |
| 40 | OPERATIONS | BOSTON |
±-------±-----------±---------+

從emp表中取ename,從dept表中取dname,沒有條件限制最終查詢結(jié)果是?

ENAME DNAME

SMITH ACCOUNTING 無(wú)效記錄
SMITH RESEARCH 有效記錄
SMITH SALES 無(wú)效記錄
SMITH OPERATIONS 無(wú)效記錄

ALLEN ACCOUNTING
ALLEN RESEARCH
ALLEN SALES
ALLEN OPERATIONS


56條記錄。

加個(gè)條件是為了達(dá)到4選1,也是為了數(shù)據(jù)的有效性。

select e.ename,d.dname fromemp e joindept d one.deptno = d.deptno;加條件只是為了避免笛卡爾積現(xiàn)象,只是為了查詢出有效的組合記錄。 匹配的次數(shù)一次都沒有少,還是56次。

2、insert語(yǔ)句可以一次插入多條記錄嗎?【掌握】
可以的!
mysql> desc t_user;
±------------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±------------±------------±-----±----±--------±------+
| id | int(11) | YES | | NULL | |
| name | varchar(32) | YES | | NULL | |
| birth | date | YES | | NULL | |
| create_time | datetime | YES | | NULL | |
±------------±------------±-----±----±--------±------+

一次可以插入多條記錄:insert into t_user(id,name,birth,create_time) values(1,'zs','1980-10-11',now()), (2,'lisi','1981-10-11',now()),(3,'wangwu','1982-10-11',now());語(yǔ)法:insert into t_user(字段名1,字段名2) values(),(),(),();mysql> select * from t_user; +------+--------+------------+---------------------+ | id | name | birth | create_time | +------+--------+------------+---------------------+ | 1 | zs | 1980-10-11 | 2020-03-19 09:37:01 | | 2 | lisi | 1981-10-11 | 2020-03-19 09:37:01 | | 3 | wangwu | 1982-10-11 | 2020-03-19 09:37:01 | +------+--------+------------+---------------------+

3、快速創(chuàng)建表?【了解內(nèi)容】

mysql> create table emp2 as select * from emp;原理:將一個(gè)查詢結(jié)果當(dāng)做一張表新建!!!!!這個(gè)可以完成表的快速?gòu)?fù)制!!!!表創(chuàng)建出來(lái),同時(shí)表中的數(shù)據(jù)也存在了!!!create table mytable as select empno,ename from emp where job = 'MANAGER';

4、將查詢結(jié)果插入到一張表當(dāng)中?insert相關(guān)的!!!【了解內(nèi)容】
create table dept_bak as select * from dept;
mysql> select * from dept_bak;
±-------±-----------±---------+
| DEPTNO | DNAME | LOC |
±-------±-----------±---------+
| 10 | ACCOUNTING | NEW YORK |
| 20 | RESEARCH | DALLAS |
| 30 | SALES | CHICAGO |
| 40 | OPERATIONS | BOSTON |
±-------±-----------±---------+

insert into dept_bak select * from dept; //很少用!mysql> select * from dept_bak; +--------+------------+----------+ | DEPTNO | DNAME | LOC | +--------+------------+----------+ | 10 | ACCOUNTING | NEW YORK | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | | 10 | ACCOUNTING | NEW YORK | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | +--------+------------+----------+

5、快速刪除表中的數(shù)據(jù)?【truncate比較重要,必須掌握】

//刪除dept_bak表中的數(shù)據(jù) delete from dept_bak; //這種刪除數(shù)據(jù)的方式比較慢。mysql> select * from dept_bak; Empty set (0.00 sec)delete語(yǔ)句刪除數(shù)據(jù)的原理?(delete屬于DML語(yǔ)句!!!)表中的數(shù)據(jù)被刪除了,但是這個(gè)數(shù)據(jù)在硬盤上的真實(shí)存儲(chǔ)空間不會(huì)被釋放!!!這種刪除缺點(diǎn)是:刪除效率比較低。這種刪除優(yōu)點(diǎn)是:支持回滾,后悔了可以再恢復(fù)數(shù)據(jù)!!!truncate語(yǔ)句刪除數(shù)據(jù)的原理?這種刪除效率比較高,表被一次截?cái)?#xff0c;物理刪除。這種刪除缺點(diǎn):不支持回滾。這種刪除優(yōu)點(diǎn):快速。用法:truncate table dept_bak; (這種操作屬于DDL操作。)大表非常大,上億條記錄????刪除的時(shí)候,使用delete,也許需要執(zhí)行1個(gè)小時(shí)才能刪除完!效率較低。可以選擇使用truncate刪除表中的數(shù)據(jù)。只需要不到1秒鐘的時(shí)間就刪除結(jié)束。效率較高。但是使用truncate之前,必須仔細(xì)詢問(wèn)客戶是否真的要?jiǎng)h除,并警告刪除之后不可恢復(fù)!truncate是刪除表中的數(shù)據(jù),表還在!刪除表操作?drop table 表名; // 這不是刪除表中的數(shù)據(jù),這是把表刪除。

6、對(duì)表結(jié)構(gòu)的增刪改?

什么是對(duì)表結(jié)構(gòu)的修改?添加一個(gè)字段,刪除一個(gè)字段,修改一個(gè)字段!!!對(duì)表結(jié)構(gòu)的修改需要使用:alter 屬于DDL語(yǔ)句DDL包括:create drop alter第一:在實(shí)際的開發(fā)中,需求一旦確定之后,表一旦設(shè)計(jì)好之后,很少的 進(jìn)行表結(jié)構(gòu)的修改。因?yàn)殚_發(fā)進(jìn)行中的時(shí)候,修改表結(jié)構(gòu),成本比較高。 修改表的結(jié)構(gòu),對(duì)應(yīng)的java代碼就需要進(jìn)行大量的修改。成本是比較高的。 這個(gè)責(zé)任應(yīng)該由設(shè)計(jì)人員來(lái)承擔(dān)!第二:由于修改表結(jié)構(gòu)的操作很少,所以我們不需要掌握,如果有一天 真的要修改表結(jié)構(gòu),你可以使用工具!!!!修改表結(jié)構(gòu)的操作是不需要寫到j(luò)ava程序中的。實(shí)際上也不是java程序員的范疇。

7、約束(非常重要,五顆星*****)

7.1、什么是約束?
約束對(duì)應(yīng)的英語(yǔ)單詞:constraint
在創(chuàng)建表的時(shí)候,我們可以給表中的字段加上一些約束,來(lái)保證這個(gè)表中數(shù)據(jù)的
完整性、有效性!!!

約束的作用就是為了保證:表中的數(shù)據(jù)有效!!

7.2、約束包括哪些?
非空約束:not null
唯一性約束: unique
主鍵約束: primary key (簡(jiǎn)稱PK)
外鍵約束:foreign key(簡(jiǎn)稱FK)
檢查約束:check(mysql不支持,oracle支持)

我們這里重點(diǎn)學(xué)習(xí)四個(gè)約束:not nulluniqueprimary keyforeign key

7.3、非空約束:not null

非空約束not null約束的字段不能為NULL。 drop table if exists t_vip; create table t_vip(id int,name varchar(255) not null // not null只有列級(jí)約束,沒有表級(jí)約束! ); insert into t_vip(id,name) values(1,'zhangsan'); insert into t_vip(id,name) values(2,'lisi');insert into t_vip(id) values(3); ERROR 1364 (HY000): Field 'name' doesn't have a default value小插曲:xxxx.sql這種文件被稱為sql腳本文件。sql腳本文件中編寫了大量的sql語(yǔ)句。我們執(zhí)行sql腳本文件的時(shí)候,該文件中所有的sql語(yǔ)句會(huì)全部執(zhí)行!批量的執(zhí)行SQL語(yǔ)句,可以使用sql腳本文件。在mysql當(dāng)中怎么執(zhí)行sql腳本呢?mysql> source D:\course\03-MySQL\document\vip.sql你在實(shí)際的工作中,第一天到了公司,項(xiàng)目經(jīng)理會(huì)給你一個(gè)xxx.sql文件,你執(zhí)行這個(gè)腳本文件,你電腦上的數(shù)據(jù)庫(kù)數(shù)據(jù)就有了!

7.4、唯一性約束: unique

唯一性約束unique約束的字段不能重復(fù),但是可以為NULL。 drop table if exists t_vip; create table t_vip(id int,name varchar(255) unique,email varchar(255) ); insert into t_vip(id,name,email) values(1,'zhangsan','zhangsan@123.com'); insert into t_vip(id,name,email) values(2,'lisi','lisi@123.com'); insert into t_vip(id,name,email) values(3,'wangwu','wangwu@123.com'); select * from t_vip;insert into t_vip(id,name,email) values(4,'wangwu','wangwu@sina.com'); ERROR 1062 (23000): Duplicate entry 'wangwu' for key 'name'insert into t_vip(id) values(4); insert into t_vip(id) values(5); +------+----------+------------------+ | id | name | email | +------+----------+------------------+ | 1 | zhangsan | zhangsan@123.com | | 2 | lisi | lisi@123.com | | 3 | wangwu | wangwu@123.com | | 4 | NULL | NULL | | 5 | NULL | NULL | +------+----------+------------------+ name字段雖然被unique約束了,但是可以為NULL。新需求:name和email兩個(gè)字段聯(lián)合起來(lái)具有唯一性!!!!drop table if exists t_vip;create table t_vip(id int,name varchar(255) unique, // 約束直接添加到列后面的,叫做列級(jí)約束。email varchar(255) unique);這張表這樣創(chuàng)建是不符合我以上“新需求”的。這樣創(chuàng)建表示:name具有唯一性,email具有唯一性。各自唯一。以下這樣的數(shù)據(jù)是符合我“新需求”的。但如果采用以上方式創(chuàng)建表的話,肯定創(chuàng)建失敗,因?yàn)?#39;zhangsan'和'zhangsan'重復(fù)了。insert into t_vip(id,name,email) values(1,'zhangsan','zhangsan@123.com');insert into t_vip(id,name,email) values(2,'zhangsan','zhangsan@sina.com');怎么創(chuàng)建這樣的表,才能符合新需求呢?drop table if exists t_vip;create table t_vip(id int,name varchar(255),email varchar(255),unique(name,email) // 約束沒有添加在列的后面,這種約束被稱為表級(jí)約束。);insert into t_vip(id,name,email) values(1,'zhangsan','zhangsan@123.com');insert into t_vip(id,name,email) values(2,'zhangsan','zhangsan@sina.com');select * from t_vip;name和email兩個(gè)字段聯(lián)合起來(lái)唯一!!!insert into t_vip(id,name,email) values(3,'zhangsan','zhangsan@sina.com');ERROR 1062 (23000): Duplicate entry 'zhangsan-zhangsan@sina.com' for key 'name'什么時(shí)候使用表級(jí)約束呢?需要給多個(gè)字段聯(lián)合起來(lái)添加某一個(gè)約束的時(shí)候,需要使用表級(jí)約束。unique 和not null可以聯(lián)合嗎?drop table if exists t_vip;create table t_vip(id int,name varchar(255) not null unique);mysql> desc t_vip;+-------+--------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+--------------+------+-----+---------+-------+| id | int(11) | YES | | NULL | || name | varchar(255) | NO | PRI | NULL | |+-------+--------------+------+-----+---------+-------+在mysql當(dāng)中,如果一個(gè)字段同時(shí)被not null和unique約束的話,該字段自動(dòng)變成主鍵字段。(注意:oracle中不一樣!)insert into t_vip(id,name) values(1,'zhangsan');insert into t_vip(id,name) values(2,'zhangsan'); //錯(cuò)誤了:name不能重復(fù)insert into t_vip(id) values(2); //錯(cuò)誤了:name不能為NULL。

7.5、主鍵約束(primary key,簡(jiǎn)稱PK)非常重要五顆星*****

主鍵約束的相關(guān)術(shù)語(yǔ)?主鍵約束:就是一種約束。主鍵字段:該字段上添加了主鍵約束,這樣的字段叫做:主鍵字段主鍵值:主鍵字段中的每一個(gè)值都叫做:主鍵值。什么是主鍵?有啥用?主鍵值是每一行記錄的唯一標(biāo)識(shí)。主鍵值是每一行記錄的身份證號(hào)!!!記住:任何一張表都應(yīng)該有主鍵,沒有主鍵,表無(wú)效!!主鍵的特征:not null + unique(主鍵值不能是NULL,同時(shí)也不能重復(fù)!)怎么給一張表添加主鍵約束呢?drop table if exists t_vip;// 1個(gè)字段做主鍵,叫做:單一主鍵create table t_vip(id int primary key, //列級(jí)約束name varchar(255));insert into t_vip(id,name) values(1,'zhangsan');insert into t_vip(id,name) values(2,'lisi');//錯(cuò)誤:不能重復(fù)insert into t_vip(id,name) values(2,'wangwu');ERROR 1062 (23000): Duplicate entry '2' for key 'PRIMARY'//錯(cuò)誤:不能為NULLinsert into t_vip(name) values('zhaoliu');ERROR 1364 (HY000): Field 'id' doesn't have a default value可以這樣添加主鍵嗎,使用表級(jí)約束?drop table if exists t_vip;create table t_vip(id int,name varchar(255),primary key(id) // 表級(jí)約束);insert into t_vip(id,name) values(1,'zhangsan');//錯(cuò)誤insert into t_vip(id,name) values(1,'lisi');ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'表級(jí)約束主要是給多個(gè)字段聯(lián)合起來(lái)添加約束?drop table if exists t_vip;// id和name聯(lián)合起來(lái)做主鍵:復(fù)合主鍵!!!!create table t_vip(id int,name varchar(255),email varchar(255),primary key(id,name));insert into t_vip(id,name,email) values(1,'zhangsan','zhangsan@123.com');insert into t_vip(id,name,email) values(1,'lisi','lisi@123.com');//錯(cuò)誤:不能重復(fù)insert into t_vip(id,name,email) values(1,'lisi','lisi@123.com');ERROR 1062 (23000): Duplicate entry '1-lisi' for key 'PRIMARY'在實(shí)際開發(fā)中不建議使用:復(fù)合主鍵。建議使用單一主鍵!因?yàn)橹麈I值存在的意義就是這行記錄的身份證號(hào),只要意義達(dá)到即可,單一主鍵可以做到。復(fù)合主鍵比較復(fù)雜,不建議使用!!!一個(gè)表中主鍵約束能加兩個(gè)嗎?drop table if exists t_vip;create table t_vip(id int primary key,name varchar(255) primary key);ERROR 1068 (42000): Multiple primary key defined結(jié)論:一張表,主鍵約束只能添加1個(gè)。(主鍵只能有1個(gè)。)主鍵值建議使用:intbigintchar等類型。不建議使用:varchar來(lái)做主鍵。主鍵值一般都是數(shù)字,一般都是定長(zhǎng)的!主鍵除了:單一主鍵和復(fù)合主鍵之外,還可以這樣進(jìn)行分類?自然主鍵:主鍵值是一個(gè)自然數(shù),和業(yè)務(wù)沒關(guān)系。業(yè)務(wù)主鍵:主鍵值和業(yè)務(wù)緊密關(guān)聯(lián),例如拿銀行卡賬號(hào)做主鍵值。這就是業(yè)務(wù)主鍵!在實(shí)際開發(fā)中使用業(yè)務(wù)主鍵多,還是使用自然主鍵多一些?自然主鍵使用比較多,因?yàn)橹麈I只要做到不重復(fù)就行,不需要有意義。業(yè)務(wù)主鍵不好,因?yàn)橹麈I一旦和業(yè)務(wù)掛鉤,那么當(dāng)業(yè)務(wù)發(fā)生變動(dòng)的時(shí)候,可能會(huì)影響到主鍵值,所以業(yè)務(wù)主鍵不建議使用。盡量使用自然主鍵。在mysql當(dāng)中,有一種機(jī)制,可以幫助我們自動(dòng)維護(hù)一個(gè)主鍵值?drop table if exists t_vip;create table t_vip(id int primary key auto_increment, //auto_increment表示自增,從1開始,以1遞增!name varchar(255));insert into t_vip(name) values('zhangsan');insert into t_vip(name) values('zhangsan');insert into t_vip(name) values('zhangsan');insert into t_vip(name) values('zhangsan');insert into t_vip(name) values('zhangsan');insert into t_vip(name) values('zhangsan');insert into t_vip(name) values('zhangsan');insert into t_vip(name) values('zhangsan');select * from t_vip;+----+----------+| id | name |+----+----------+| 1 | zhangsan || 2 | zhangsan || 3 | zhangsan || 4 | zhangsan || 5 | zhangsan || 6 | zhangsan || 7 | zhangsan || 8 | zhangsan |+----+----------+

7.6、外鍵約束(foreign key,簡(jiǎn)稱FK)非常重要五顆星*****

外鍵約束涉及到的相關(guān)術(shù)語(yǔ):外鍵約束:一種約束(foreign key)外鍵字段:該字段上添加了外鍵約束外鍵值:外鍵字段當(dāng)中的每一個(gè)值。業(yè)務(wù)背景:請(qǐng)?jiān)O(shè)計(jì)數(shù)據(jù)庫(kù)表,來(lái)描述“班級(jí)和學(xué)生”的信息?第一種方案:班級(jí)和學(xué)生存儲(chǔ)在一張表中???t_studentno(pk) name classno classname----------------------------------------------------------------------------------1 jack 100 北京市大興區(qū)亦莊鎮(zhèn)第二中學(xué)高三1班2 lucy 100 北京市大興區(qū)亦莊鎮(zhèn)第二中學(xué)高三1班3 lilei 100 北京市大興區(qū)亦莊鎮(zhèn)第二中學(xué)高三1班4 hanmeimei 100 北京市大興區(qū)亦莊鎮(zhèn)第二中學(xué)高三1班5 zhangsan 101 北京市大興區(qū)亦莊鎮(zhèn)第二中學(xué)高三2班6 lisi 101 北京市大興區(qū)亦莊鎮(zhèn)第二中學(xué)高三2班7 wangwu 101 北京市大興區(qū)亦莊鎮(zhèn)第二中學(xué)高三2班8 zhaoliu 101 北京市大興區(qū)亦莊鎮(zhèn)第二中學(xué)高三2班分析以上方案的缺點(diǎn):數(shù)據(jù)冗余,空間浪費(fèi)!!!!這個(gè)設(shè)計(jì)是比較失敗的!第二種方案:班級(jí)一張表、學(xué)生一張表??t_class 班級(jí)表classno(pk) classname------------------------------------------------------100 北京市大興區(qū)亦莊鎮(zhèn)第二中學(xué)高三1班101 北京市大興區(qū)亦莊鎮(zhèn)第二中學(xué)高三1班t_student 學(xué)生表no(pk) name cno(FK引用t_class這張表的classno)----------------------------------------------------------------1 jack 1002 lucy 1003 lilei 1004 hanmeimei 1005 zhangsan 1016 lisi 1017 wangwu 1018 zhaoliu 101當(dāng)cno字段沒有任何約束的時(shí)候,可能會(huì)導(dǎo)致數(shù)據(jù)無(wú)效。可能出現(xiàn)一個(gè)102,但是102班級(jí)不存在。所以為了保證cno字段中的值都是100和101,需要給cno字段添加外鍵約束。那么:cno字段就是外鍵字段。cno字段中的每一個(gè)值都是外鍵值。注意:t_class是父表t_student是子表刪除表的順序?先刪子,再刪父。創(chuàng)建表的順序?先創(chuàng)建父,再創(chuàng)建子。刪除數(shù)據(jù)的順序?先刪子,再刪父。插入數(shù)據(jù)的順序?先插入父,再插入子。思考:子表中的外鍵引用的父表中的某個(gè)字段,被引用的這個(gè)字段必須是主鍵嗎?不一定是主鍵,但至少具有unique約束。測(cè)試:外鍵可以為NULL嗎?外鍵值可以為NULL。

8、存儲(chǔ)引擎(了解內(nèi)容)

8.1、什么是存儲(chǔ)引擎,有什么用呢?
存儲(chǔ)引擎是MySQL中特有的一個(gè)術(shù)語(yǔ),其它數(shù)據(jù)庫(kù)中沒有。(Oracle中有,但是不叫這個(gè)名字)
存儲(chǔ)引擎這個(gè)名字高端大氣上檔次。
實(shí)際上存儲(chǔ)引擎是一個(gè)表存儲(chǔ)/組織數(shù)據(jù)的方式。
不同的存儲(chǔ)引擎,表存儲(chǔ)數(shù)據(jù)的方式不同。

8.2、怎么給表添加/指定“存儲(chǔ)引擎”呢?
show create table t_student;

可以在建表的時(shí)候給表指定存儲(chǔ)引擎。 CREATE TABLE `t_student` (`no` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(255) DEFAULT NULL,`cno` int(11) DEFAULT NULL,PRIMARY KEY (`no`),KEY `cno` (`cno`),CONSTRAINT `t_student_ibfk_1` FOREIGN KEY (`cno`) REFERENCES `t_class` (`classno`) ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8在建表的時(shí)候可以在最后小括號(hào)的")"的右邊使用:ENGINE來(lái)指定存儲(chǔ)引擎。CHARSET來(lái)指定這張表的字符編碼方式。結(jié)論:mysql默認(rèn)的存儲(chǔ)引擎是:InnoDBmysql默認(rèn)的字符編碼方式是:utf8建表時(shí)指定存儲(chǔ)引擎,以及字符編碼方式。 create table t_product(id int primary key,name varchar(255) )engine=InnoDB default charset=gbk;

8.3、怎么查看mysql支持哪些存儲(chǔ)引擎呢?

mysql> select version();
±----------+
| version() |
±----------+
| 5.5.36 |
±----------+

命令: show engines \G

*************************** 1. row ***************************
Engine: FEDERATED
Support: NO
Comment: Federated MySQL storage engine
Transactions: NULL
XA: NULL
Savepoints: NULL
*************************** 2. row ***************************
Engine: MRG_MYISAM
Support: YES
Comment: Collection of identical MyISAM tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 3. row ***************************
Engine: MyISAM
Support: YES
Comment: MyISAM storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 4. row ***************************
Engine: BLACKHOLE
Support: YES
Comment: /dev/null storage engine (anything you write to it disappears
Transactions: NO
XA: NO
Savepoints: NO
*************************** 5. row ***************************
Engine: CSV
Support: YES
Comment: CSV storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 6. row ***************************
Engine: MEMORY
Support: YES
Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 7. row ***************************
Engine: ARCHIVE
Support: YES
Comment: Archive storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 8. row ***************************
Engine: InnoDB
Support: DEFAULT
Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
XA: YES
Savepoints: YES
*************************** 9. row ***************************
Engine: PERFORMANCE_SCHEMA
Support: YES
Comment: Performance Schema
Transactions: NO
XA: NO
Savepoints: NO

mysql支持九大存儲(chǔ)引擎,當(dāng)前5.5.36支持8個(gè)。版本不同支持情況不同。

8.4、關(guān)于mysql常用的存儲(chǔ)引擎介紹一下

MyISAM存儲(chǔ)引擎?
它管理的表具有以下特征:
使用三個(gè)文件表示每個(gè)表:
格式文件 — 存儲(chǔ)表結(jié)構(gòu)的定義(mytable.frm)
數(shù)據(jù)文件 — 存儲(chǔ)表行的內(nèi)容(mytable.MYD)
索引文件 — 存儲(chǔ)表上索引(mytable.MYI):索引是一本書的目錄,縮小掃描范圍,提高查詢效率的一種機(jī)制。
可被轉(zhuǎn)換為壓縮、只讀表來(lái)節(jié)省空間

提示一下:對(duì)于一張表來(lái)說(shuō),只要是主鍵,或者加有unique約束的字段上會(huì)自動(dòng)創(chuàng)建索引。MyISAM存儲(chǔ)引擎特點(diǎn):可被轉(zhuǎn)換為壓縮、只讀表來(lái)節(jié)省空間這是這種存儲(chǔ)引擎的優(yōu)勢(shì)!!!!MyISAM不支持事務(wù)機(jī)制,安全性低。

InnoDB存儲(chǔ)引擎?
這是mysql默認(rèn)的存儲(chǔ)引擎,同時(shí)也是一個(gè)重量級(jí)的存儲(chǔ)引擎。
InnoDB支持事務(wù),支持?jǐn)?shù)據(jù)庫(kù)崩潰后自動(dòng)恢復(fù)機(jī)制。
InnoDB存儲(chǔ)引擎最主要的特點(diǎn)是:非常安全。

它管理的表具有下列主要特征:– 每個(gè) InnoDB 表在數(shù)據(jù)庫(kù)目錄中以.frm 格式文件表示– InnoDB 表空間 tablespace 被用于存儲(chǔ)表的內(nèi)容(表空間是一個(gè)邏輯名稱。表空間存儲(chǔ)數(shù)據(jù)+索引。)– 提供一組用來(lái)記錄事務(wù)性活動(dòng)的日志文件– 用 COMMIT(提交)、SAVEPOINT 及ROLLBACK(回滾)支持事務(wù)處理– 提供全 ACID 兼容– 在 MySQL 服務(wù)器崩潰后提供自動(dòng)恢復(fù)– 多版本(MVCC)和行級(jí)鎖定– 支持外鍵及引用的完整性,包括級(jí)聯(lián)刪除和更新InnoDB最大的特點(diǎn)就是支持事務(wù):以保證數(shù)據(jù)的安全。效率不是很高,并且也不能壓縮,不能轉(zhuǎn)換為只讀,不能很好的節(jié)省存儲(chǔ)空間。

MEMORY存儲(chǔ)引擎?
使用 MEMORY 存儲(chǔ)引擎的表,其數(shù)據(jù)存儲(chǔ)在內(nèi)存中,且行的長(zhǎng)度固定,
這兩個(gè)特點(diǎn)使得 MEMORY 存儲(chǔ)引擎非常快。

MEMORY 存儲(chǔ)引擎管理的表具有下列特征:– 在數(shù)據(jù)庫(kù)目錄內(nèi),每個(gè)表均以.frm 格式的文件表示。– 表數(shù)據(jù)及索引被存儲(chǔ)在內(nèi)存中。(目的就是快,查詢快!)– 表級(jí)鎖機(jī)制。– 不能包含 TEXT 或 BLOB 字段。MEMORY 存儲(chǔ)引擎以前被稱為HEAP 引擎。MEMORY引擎優(yōu)點(diǎn):查詢效率是最高的。不需要和硬盤交互。 MEMORY引擎缺點(diǎn):不安全,關(guān)機(jī)之后數(shù)據(jù)消失。因?yàn)閿?shù)據(jù)和索引都是在內(nèi)存當(dāng)中。

9、事務(wù)(重點(diǎn):五顆星*****,必須理解,必須掌握)

9.1、什么是事務(wù)?

一個(gè)事務(wù)其實(shí)就是一個(gè)完整的業(yè)務(wù)邏輯。 是一個(gè)最小的工作單元。不可再分。什么是一個(gè)完整的業(yè)務(wù)邏輯?假設(shè)轉(zhuǎn)賬,從A賬戶向B賬戶中轉(zhuǎn)賬10000.將A賬戶的錢減去10000(update語(yǔ)句)將B賬戶的錢加上10000(update語(yǔ)句)這就是一個(gè)完整的業(yè)務(wù)邏輯。以上的操作是一個(gè)最小的工作單元,要么同時(shí)成功,要么同時(shí)失敗,不可再分。這兩個(gè)update語(yǔ)句要求必須同時(shí)成功或者同時(shí)失敗,這樣才能保證錢是正確的。

9.2、只有DML語(yǔ)句才會(huì)有事務(wù)這一說(shuō),其它語(yǔ)句和事務(wù)無(wú)關(guān)!!!
insert
delete
update
只有以上的三個(gè)語(yǔ)句和事務(wù)有關(guān)系,其它都沒有關(guān)系。

因?yàn)?只有以上的三個(gè)語(yǔ)句是數(shù)據(jù)庫(kù)表中數(shù)據(jù)進(jìn)行增、刪、改的。 只要你的操作一旦涉及到數(shù)據(jù)的增、刪、改,那么就一定要考慮安全問(wèn)題。數(shù)據(jù)安全第一位!!!

9.3、假設(shè)所有的業(yè)務(wù),只要一條DML語(yǔ)句就能完成,還有必要存在事務(wù)機(jī)制嗎?
正是因?yàn)樽瞿臣碌臅r(shí)候,需要多條DML語(yǔ)句共同聯(lián)合起來(lái)才能完成,
所以需要事務(wù)的存在。如果任何一件復(fù)雜的事兒都能一條DML語(yǔ)句搞定,
那么事務(wù)則沒有存在的價(jià)值了。

到底什么是事務(wù)呢?說(shuō)到底,說(shuō)到本質(zhì)上,一個(gè)事務(wù)其實(shí)就是多條DML語(yǔ)句同時(shí)成功,或者同時(shí)失敗!事務(wù):就是批量的DML語(yǔ)句同時(shí)成功,或者同時(shí)失敗!

9.4、事務(wù)是怎么做到多條DML語(yǔ)句同時(shí)成功和同時(shí)失敗的呢?

InnoDB存儲(chǔ)引擎:提供一組用來(lái)記錄事務(wù)性活動(dòng)的日志文件事務(wù)開啟了: insert insert insert delete update update update 事務(wù)結(jié)束了!在事務(wù)的執(zhí)行過(guò)程中,每一條DML的操作都會(huì)記錄到“事務(wù)性活動(dòng)的日志文件”中。 在事務(wù)的執(zhí)行過(guò)程中,我們可以提交事務(wù),也可以回滾事務(wù)。提交事務(wù)?清空事務(wù)性活動(dòng)的日志文件,將數(shù)據(jù)全部徹底持久化到數(shù)據(jù)庫(kù)表中。提交事務(wù)標(biāo)志著,事務(wù)的結(jié)束。并且是一種全部成功的結(jié)束。回滾事務(wù)?將之前所有的DML操作全部撤銷,并且清空事務(wù)性活動(dòng)的日志文件回滾事務(wù)標(biāo)志著,事務(wù)的結(jié)束。并且是一種全部失敗的結(jié)束。

9.5、怎么提交事務(wù),怎么回滾事務(wù)?
提交事務(wù):commit; 語(yǔ)句
回滾事務(wù):rollback; 語(yǔ)句(回滾永遠(yuǎn)都是只能回滾到上一次的提交點(diǎn)!)

事務(wù)對(duì)應(yīng)的英語(yǔ)單詞是:transaction測(cè)試一下,在mysql當(dāng)中默認(rèn)的事務(wù)行為是怎樣的?mysql默認(rèn)情況下是支持自動(dòng)提交事務(wù)的。(自動(dòng)提交)什么是自動(dòng)提交?每執(zhí)行一條DML語(yǔ)句,則提交一次!這種自動(dòng)提交實(shí)際上是不符合我們的開發(fā)習(xí)慣,因?yàn)橐粋€(gè)業(yè)務(wù)通常是需要多條DML語(yǔ)句共同執(zhí)行才能完成的,為了保證數(shù)據(jù)的安全,必須要求同時(shí)成功之后再提交,所以不能執(zhí)行一條就提交一條。怎么將mysql的自動(dòng)提交機(jī)制關(guān)閉掉呢?先執(zhí)行這個(gè)命令:start transaction;演示事務(wù):---------------------------------回滾事務(wù)----------------------------------------mysql> use bjpowernode;Database changedmysql> select * from dept_bak;Empty set (0.00 sec)mysql> start transaction;Query OK, 0 rows affected (0.00 sec)mysql> insert into dept_bak values(10,'abc', 'tj');Query OK, 1 row affected (0.00 sec)mysql> insert into dept_bak values(10,'abc', 'tj');Query OK, 1 row affected (0.00 sec)mysql> select * from dept_bak;+--------+-------+------+| DEPTNO | DNAME | LOC |+--------+-------+------+| 10 | abc | tj || 10 | abc | tj |+--------+-------+------+2 rows in set (0.00 sec)mysql> rollback;Query OK, 0 rows affected (0.00 sec)mysql> select * from dept_bak;Empty set (0.00 sec)---------------------------------提交事務(wù)----------------------------------------mysql> use bjpowernode;Database changedmysql> select * from dept_bak;+--------+-------+------+| DEPTNO | DNAME | LOC |+--------+-------+------+| 10 | abc | bj |+--------+-------+------+1 row in set (0.00 sec)mysql> start transaction;Query OK, 0 rows affected (0.00 sec)mysql> insert into dept_bak values(20,'abcQuery OK, 1 row affected (0.00 sec)mysql> insert into dept_bak values(20,'abcQuery OK, 1 row affected (0.00 sec)mysql> insert into dept_bak values(20,'abcQuery OK, 1 row affected (0.00 sec)mysql> commit;Query OK, 0 rows affected (0.01 sec)mysql> select * from dept_bak;+--------+-------+------+| DEPTNO | DNAME | LOC |+--------+-------+------+| 10 | abc | bj || 20 | abc | tj || 20 | abc | tj || 20 | abc | tj |+--------+-------+------+4 rows in set (0.00 sec)mysql> rollback;Query OK, 0 rows affected (0.00 sec)mysql> select * from dept_bak;+--------+-------+------+| DEPTNO | DNAME | LOC |+--------+-------+------+| 10 | abc | bj || 20 | abc | tj || 20 | abc | tj || 20 | abc | tj |+--------+-------+------+4 rows in set (0.00 sec)

9.6、事務(wù)包括4個(gè)特性?

A:原子性說(shuō)明事務(wù)是最小的工作單元。不可再分。C:一致性所有事務(wù)要求,在同一個(gè)事務(wù)當(dāng)中,所有操作必須同時(shí)成功,或者同時(shí)失敗,以保證數(shù)據(jù)的一致性。I:隔離性A事務(wù)和B事務(wù)之間具有一定的隔離。教室A和教室B之間有一道墻,這道墻就是隔離性。A事務(wù)在操作一張表的時(shí)候,另一個(gè)事務(wù)B也操作這張表會(huì)那樣???D:持久性事務(wù)最終結(jié)束的一個(gè)保障。事務(wù)提交,就相當(dāng)于將沒有保存到硬盤上的數(shù)據(jù)保存到硬盤上!

9.7、重點(diǎn)研究一下事務(wù)的隔離性!!!

A教室和B教室中間有一道墻,這道墻可以很厚,也可以很薄。這就是事務(wù)的隔離級(jí)別。 這道墻越厚,表示隔離級(jí)別就越高。事務(wù)和事務(wù)之間的隔離級(jí)別有哪些呢?4個(gè)級(jí)別讀未提交:read uncommitted(最低的隔離級(jí)別)《沒有提交就讀到了》什么是讀未提交?事務(wù)A可以讀取到事務(wù)B未提交的數(shù)據(jù)。這種隔離級(jí)別存在的問(wèn)題就是:臟讀現(xiàn)象!(Dirty Read)我們稱讀到了臟數(shù)據(jù)。這種隔離級(jí)別一般都是理論上的,大多數(shù)的數(shù)據(jù)庫(kù)隔離級(jí)別都是二檔起步!讀已提交:read committed《提交之后才能讀到》什么是讀已提交?事務(wù)A只能讀取到事務(wù)B提交之后的數(shù)據(jù)。這種隔離級(jí)別解決了什么問(wèn)題?解決了臟讀的現(xiàn)象。這種隔離級(jí)別存在什么問(wèn)題?不可重復(fù)讀取數(shù)據(jù)。什么是不可重復(fù)讀取數(shù)據(jù)呢?在事務(wù)開啟之后,第一次讀到的數(shù)據(jù)是3條,當(dāng)前事務(wù)還沒有結(jié)束,可能第二次再讀取的時(shí)候,讀到的數(shù)據(jù)是4條,3不等于4稱為不可重復(fù)讀取。這種隔離級(jí)別是比較真實(shí)的數(shù)據(jù),每一次讀到的數(shù)據(jù)是絕對(duì)的真實(shí)。oracle數(shù)據(jù)庫(kù)默認(rèn)的隔離級(jí)別是:read committed可重復(fù)讀:repeatable read《提交之后也讀不到,永遠(yuǎn)讀取的都是剛開啟事務(wù)時(shí)的數(shù)據(jù)》什么是可重復(fù)讀取?事務(wù)A開啟之后,不管是多久,每一次在事務(wù)A中讀取到的數(shù)據(jù)都是一致的。即使事務(wù)B將數(shù)據(jù)已經(jīng)修改,并且提交了,事務(wù)A讀取到的數(shù)據(jù)還是沒有發(fā)生改變,這就是可重復(fù)讀。可重復(fù)讀解決了什么問(wèn)題?解決了不可重復(fù)讀取數(shù)據(jù)。可重復(fù)讀存在的問(wèn)題是什么?可以會(huì)出現(xiàn)幻影讀。每一次讀取到的數(shù)據(jù)都是幻象。不夠真實(shí)!早晨9點(diǎn)開始開啟了事務(wù),只要事務(wù)不結(jié)束,到晚上9點(diǎn),讀到的數(shù)據(jù)還是那樣!讀到的是假象。不夠絕對(duì)的真實(shí)。mysql中默認(rèn)的事務(wù)隔離級(jí)別就是這個(gè)!!!!!!!!!!!序列化/串行化:serializable(最高的隔離級(jí)別)這是最高隔離級(jí)別,效率最低。解決了所有的問(wèn)題。這種隔離級(jí)別表示事務(wù)排隊(duì),不能并發(fā)!synchronized,線程同步(事務(wù)同步)每一次讀取到的數(shù)據(jù)都是最真實(shí)的,并且效率是最低的。

9.8、驗(yàn)證各種隔離級(jí)別

查看隔離級(jí)別:SELECT @@tx_isolation
±----------------+
| @@tx_isolation |
±----------------+
| REPEATABLE-READ |
±----------------+
mysql默認(rèn)的隔離級(jí)別

被測(cè)試的表t_user
驗(yàn)證:read uncommited
mysql> set global transaction isolation level read uncommitted;
事務(wù)A 事務(wù)B

use bjpowernode;
use bjpowernode;
start transaction;
select * from t_user;
start transaction;
insert into t_user values(‘zhangsan’);
select * from t_user;

驗(yàn)證:read commited
mysql> set global transaction isolation level read committed;
事務(wù)A 事務(wù)B

use bjpowernode;
use bjpowernode;
start transaction;
start transaction;
select * from t_user;
insert into t_user values(‘zhangsan’);
select * from t_user;
commit;
select * from t_user;

驗(yàn)證:repeatable read
mysql> set global transaction isolation level repeatable read;
事務(wù)A 事務(wù)B

use bjpowernode;
use bjpowernode;
start transaction;
start transaction;
select * from t_user;
insert into t_user values(‘lisi’);
insert into t_user values(‘wangwu’);
commit;
select * from t_user;

驗(yàn)證:serializable
mysql> set global transaction isolation level serializable;
事務(wù)A 事務(wù)B

use bjpowernode;
use bjpowernode;
start transaction;
start transaction;
select * from t_user;
insert into t_user values(‘a(chǎn)bc’);
select * from t_user;

mysql day04課堂筆記

1、索引(index)

1.1、什么是索引?
索引是在數(shù)據(jù)庫(kù)表的字段上添加的,是為了提高查詢效率存在的一種機(jī)制。
一張表的一個(gè)字段可以添加一個(gè)索引,當(dāng)然,多個(gè)字段聯(lián)合起來(lái)也可以添加索引。
索引相當(dāng)于一本書的目錄,是為了縮小掃描范圍而存在的一種機(jī)制。

對(duì)于一本字典來(lái)說(shuō),查找某個(gè)漢字有兩種方式:第一種方式:一頁(yè)一頁(yè)挨著找,直到找到為止,這種查找方式屬于全字典掃描。效率比較低。第二種方式:先通過(guò)目錄(索引)去定位一個(gè)大概的位置,然后直接定位到這個(gè)位置,做局域性掃描,縮小掃描的范圍,快速的查找。這種查找方式屬于通過(guò)索引檢索,效率較高。t_user id(idIndex) name(nameIndex) email(emailIndex) address (emailAddressIndex) ---------------------------------------------------------------------------------- 1 zhangsan... 2 lisi 3 wangwu 4 zhaoliu 5 hanmeimei 6 jackselect * from t_user where name = 'jack';以上的這條SQL語(yǔ)句會(huì)去name字段上掃描,為什么?因?yàn)椴樵儣l件是:name='jack'如果name字段上沒有添加索引(目錄),或者說(shuō)沒有給name字段創(chuàng)建索引, MySQL會(huì)進(jìn)行全掃描,會(huì)將name字段上的每一個(gè)值都比對(duì)一遍。效率比較低。MySQL在查詢方面主要就是兩種方式:第一種方式:全表掃描第二種方式:根據(jù)索引檢索。注意:在實(shí)際中,漢語(yǔ)字典前面的目錄是排序的,按照a b c d e f....排序,為什么排序呢?因?yàn)橹挥信判蛄瞬艜?huì)有區(qū)間查找這一說(shuō)!(縮小掃描范圍其實(shí)就是掃描某個(gè)區(qū)間罷了!)在mysql數(shù)據(jù)庫(kù)當(dāng)中索引也是需要排序的,并且這個(gè)所以的排序和TreeSet數(shù)據(jù)結(jié)構(gòu)相同。TreeSet(TreeMap)底層是一個(gè)自平衡的二叉樹!在mysql當(dāng)中索引是一個(gè)B-Tree數(shù)據(jù)結(jié)構(gòu)。遵循左小又大原則存放。采用中序遍歷方式遍歷取數(shù)據(jù)。

1.2、索引的實(shí)現(xiàn)原理?

假設(shè)有一張用戶表:t_userid(PK) name 每一行記錄在硬盤上都有物理存儲(chǔ)編號(hào) ---------------------------------------------------------------------------------- 100 zhangsan 0x1111 120 lisi 0x2222 99 wangwu 0x8888 88 zhaoliu 0x9999 101 jack 0x6666 55 lucy 0x5555 130 tom 0x7777提醒1:在任何數(shù)據(jù)庫(kù)當(dāng)中主鍵上都會(huì)自動(dòng)添加索引對(duì)象,id字段上自動(dòng)有索引, 因?yàn)閕d是PK。另外在mysql當(dāng)中,一個(gè)字段上如果有unique約束的話,也會(huì)自動(dòng) 創(chuàng)建索引對(duì)象。提醒2:在任何數(shù)據(jù)庫(kù)當(dāng)中,任何一張表的任何一條記錄在硬盤存儲(chǔ)上都有 一個(gè)硬盤的物理存儲(chǔ)編號(hào)。提醒3:在mysql當(dāng)中,索引是一個(gè)單獨(dú)的對(duì)象,不同的存儲(chǔ)引擎以不同的形式 存在,在MyISAM存儲(chǔ)引擎中,索引存儲(chǔ)在一個(gè).MYI文件中。在InnoDB存儲(chǔ)引擎中 索引存儲(chǔ)在一個(gè)邏輯名稱叫做tablespace的當(dāng)中。在MEMORY存儲(chǔ)引擎當(dāng)中索引 被存儲(chǔ)在內(nèi)存當(dāng)中。不管索引存儲(chǔ)在哪里,索引在mysql當(dāng)中都是一個(gè)樹的形式 存在。(自平衡二叉樹:B-Tree)

1.3、在mysql當(dāng)中,主鍵上,以及unique字段上都會(huì)自動(dòng)添加索引的!!!!
什么條件下,我們會(huì)考慮給字段添加索引呢?
條件1:數(shù)據(jù)量龐大(到底有多么龐大算龐大,這個(gè)需要測(cè)試,因?yàn)槊恳粋€(gè)硬件環(huán)境不同)
條件2:該字段經(jīng)常出現(xiàn)在where的后面,以條件的形式存在,也就是說(shuō)這個(gè)字段總是被掃描。
條件3:該字段很少的DML(insert delete update)操作。(因?yàn)镈ML之后,索引需要重新排序。)

建議不要隨意添加索引,因?yàn)樗饕彩切枰S護(hù)的,太多的話反而會(huì)降低系統(tǒng)的性能。 建議通過(guò)主鍵查詢,建議通過(guò)unique約束的字段進(jìn)行查詢,效率是比較高的。

1.4、索引怎么創(chuàng)建?怎么刪除?語(yǔ)法是什么?

創(chuàng)建索引:mysql> create index emp_ename_index on emp(ename);給emp表的ename字段添加索引,起名:emp_ename_index刪除索引:mysql> drop index emp_ename_index on emp;將emp表上的emp_ename_index索引對(duì)象刪除。

1.5、在mysql當(dāng)中,怎么查看一個(gè)SQL語(yǔ)句是否使用了索引進(jìn)行檢索?

mysql> explain select * from emp where ename = 'KING'; +----+-------------+-------+------+---------------+------+---------+------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+------+---------------+------+---------+------+------+-------------+ | 1 | SIMPLE | emp | ALL | NULL | NULL | NULL | NULL | 14 | Using where | +----+-------------+-------+------+---------------+------+---------+------+------+-------------+ 掃描14條記錄:說(shuō)明沒有使用索引。type=ALLmysql> create index emp_ename_index on emp(ename);mysql> explain select * from emp where ename = 'KING'; +----+-------------+-------+------+-----------------+-----------------+---------+-------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+------+-----------------+-----------------+---------+-------+------+-------------+ | 1 | SIMPLE | emp | ref | emp_ename_index | emp_ename_index | 33 | const | 1 | Using where | +----+-------------+-------+------+-----------------+-----------------+---------+-------+------+-------------+

1.6、索引有失效的時(shí)候,什么時(shí)候索引失效呢?

失效的第1種情況:select * from emp where ename like '%T';ename上即使添加了索引,也不會(huì)走索引,為什么?原因是因?yàn)槟:ヅ洚?dāng)中以“%”開頭了!盡量避免模糊查詢的時(shí)候以“%”開始。這是一種優(yōu)化的手段/策略。mysql> explain select * from emp where ename like '%T';+----+-------------+-------+------+---------------+------+---------+------+------+-------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+-------------+-------+------+---------------+------+---------+------+------+-------------+| 1 | SIMPLE | emp | ALL | NULL | NULL | NULL | NULL | 14 | Using where |+----+-------------+-------+------+---------------+------+---------+------+------+-------------+失效的第2種情況:使用or的時(shí)候會(huì)失效,如果使用or那么要求or兩邊的條件字段都要有索引,才會(huì)走索引,如果其中一邊有一個(gè)字段沒有索引,那么另一個(gè)字段上的索引也會(huì)實(shí)現(xiàn)。所以這就是為什么不建議使用or的原因。mysql> explain select * from emp where ename = 'KING' or job = 'MANAGER';+----+-------------+-------+------+-----------------+------+---------+------+------+-------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+-------------+-------+------+-----------------+------+---------+------+------+-------------+| 1 | SIMPLE | emp | ALL | emp_ename_index | NULL | NULL | NULL | 14 | Using where |+----+-------------+-------+------+-----------------+------+---------+------+------+-------------+失效的第3種情況:使用復(fù)合索引的時(shí)候,沒有使用左側(cè)的列查找,索引失效什么是復(fù)合索引?兩個(gè)字段,或者更多的字段聯(lián)合起來(lái)添加一個(gè)索引,叫做復(fù)合索引。create index emp_job_sal_index on emp(job,sal);mysql> explain select * from emp where job = 'MANAGER';+----+-------------+-------+------+-------------------+-------------------+---------+-------+------+-------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+-------------+-------+------+-------------------+-------------------+---------+-------+------+-------------+| 1 | SIMPLE | emp | ref | emp_job_sal_index | emp_job_sal_index | 30 | const | 3 | Using where |+----+-------------+-------+------+-------------------+-------------------+---------+-------+------+-------------+mysql> explain select * from emp where sal = 800;+----+-------------+-------+------+---------------+------+---------+------+------+-------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+-------------+-------+------+---------------+------+---------+------+------+-------------+| 1 | SIMPLE | emp | ALL | NULL | NULL | NULL | NULL | 14 | Using where |+----+-------------+-------+------+---------------+------+---------+------+------+-------------+失效的第4種情況:在where當(dāng)中索引列參加了運(yùn)算,索引失效。mysql> create index emp_sal_index on emp(sal);explain select * from emp where sal = 800;+----+-------------+-------+------+---------------+---------------+---------+-------+------+-------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+-------------+-------+------+---------------+---------------+---------+-------+------+-------------+| 1 | SIMPLE | emp | ref | emp_sal_index | emp_sal_index | 9 | const | 1 | Using where |+----+-------------+-------+------+---------------+---------------+---------+-------+------+-------------+mysql> explain select * from emp where sal+1 = 800;+----+-------------+-------+------+---------------+------+---------+------+------+-------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+-------------+-------+------+---------------+------+---------+------+------+-------------+| 1 | SIMPLE | emp | ALL | NULL | NULL | NULL | NULL | 14 | Using where |+----+-------------+-------+------+---------------+------+---------+------+------+-------------+失效的第5種情況:在where當(dāng)中索引列使用了函數(shù)explain select * from emp where lower(ename) = 'smith';+----+-------------+-------+------+---------------+------+---------+------+------+-------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+-------------+-------+------+---------------+------+---------+------+------+-------------+| 1 | SIMPLE | emp | ALL | NULL | NULL | NULL | NULL | 14 | Using where |+----+-------------+-------+------+---------------+------+---------+------+------+-------------+失效的第6... 失效的第7...

1.7、索引是各種數(shù)據(jù)庫(kù)進(jìn)行優(yōu)化的重要手段。優(yōu)化的時(shí)候優(yōu)先考慮的因素就是索引。
索引在數(shù)據(jù)庫(kù)當(dāng)中分了很多類?
單一索引:一個(gè)字段上添加索引。
復(fù)合索引:兩個(gè)字段或者更多的字段上添加索引。

主鍵索引:主鍵上添加索引。 唯一性索引:具有unique約束的字段上添加索引。 .....注意:唯一性比較弱的字段上添加索引用處不大。

2、視圖(view)

2.1、什么是視圖?
view:站在不同的角度去看待同一份數(shù)據(jù)。

2.2、怎么創(chuàng)建視圖對(duì)象?怎么刪除視圖對(duì)象?

表復(fù)制: mysql> create table dept2 as select * from dept;dept2表中的數(shù)據(jù): mysql> select * from dept2; +--------+------------+----------+ | DEPTNO | DNAME | LOC | +--------+------------+----------+ | 10 | ACCOUNTING | NEW YORK | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | +--------+------------+----------+創(chuàng)建視圖對(duì)象:create view dept2_view as select * from dept2;刪除視圖對(duì)象:drop view dept2_view;注意:只有DQL語(yǔ)句才能以view的形式創(chuàng)建。create view view_name as 這里的語(yǔ)句必須是DQL語(yǔ)句;

2.3、用視圖做什么?

我們可以面向視圖對(duì)象進(jìn)行增刪改查,對(duì)視圖對(duì)象的增刪改查,會(huì)導(dǎo)致 原表被操作!(視圖的特點(diǎn):通過(guò)對(duì)視圖的操作,會(huì)影響到原表數(shù)據(jù)。)//面向視圖查詢 select * from dept2_view; // 面向視圖插入 insert into dept2_view(deptno,dname,loc) values(60,'SALES', 'BEIJING');// 查詢?cè)頂?shù)據(jù) mysql> select * from dept2; +--------+------------+----------+ | DEPTNO | DNAME | LOC | +--------+------------+----------+ | 10 | ACCOUNTING | NEW YORK | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | | 60 | SALES | BEIJING | +--------+------------+----------+// 面向視圖刪除 mysql> delete from dept2_view;// 查詢?cè)頂?shù)據(jù) mysql> select * from dept2; Empty set (0.00 sec)// 創(chuàng)建視圖對(duì)象 create view emp_dept_view asselect e.ename,e.sal,d.dnamefromemp ejoindept done.deptno = d.deptno;// 查詢視圖對(duì)象 mysql> select * from emp_dept_view; +--------+---------+------------+ | ename | sal | dname | +--------+---------+------------+ | CLARK | 2450.00 | ACCOUNTING | | KING | 5000.00 | ACCOUNTING | | MILLER | 1300.00 | ACCOUNTING | | SMITH | 800.00 | RESEARCH | | JONES | 2975.00 | RESEARCH | | SCOTT | 3000.00 | RESEARCH | | ADAMS | 1100.00 | RESEARCH | | FORD | 3000.00 | RESEARCH | | ALLEN | 1600.00 | SALES | | WARD | 1250.00 | SALES | | MARTIN | 1250.00 | SALES | | BLAKE | 2850.00 | SALES | | TURNER | 1500.00 | SALES | | JAMES | 950.00 | SALES | +--------+---------+------------+// 面向視圖更新 update emp_dept_view set sal = 1000 where dname = 'ACCOUNTING';// 原表數(shù)據(jù)被更新 mysql> select * from emp; +-------+--------+-----------+------+------------+---------+---------+--------+ | EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO | +-------+--------+-----------+------+------------+---------+---------+--------+ | 7369 | SMITH | CLERK | 7902 | 1980-12-17 | 800.00 | NULL | 20 | | 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 | 1600.00 | 300.00 | 30 | | 7521 | WARD | SALESMAN | 7698 | 1981-02-22 | 1250.00 | 500.00 | 30 | | 7566 | JONES | MANAGER | 7839 | 1981-04-02 | 2975.00 | NULL | 20 | | 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 1250.00 | 1400.00 | 30 | | 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 | 2850.00 | NULL | 30 | | 7782 | CLARK | MANAGER | 7839 | 1981-06-09 | 1000.00 | NULL | 10 | | 7788 | SCOTT | ANALYST | 7566 | 1987-04-19 | 3000.00 | NULL | 20 | | 7839 | KING | PRESIDENT | NULL | 1981-11-17 | 1000.00 | NULL | 10 | | 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 | 1500.00 | 0.00 | 30 | | 7876 | ADAMS | CLERK | 7788 | 1987-05-23 | 1100.00 | NULL | 20 | | 7900 | JAMES | CLERK | 7698 | 1981-12-03 | 950.00 | NULL | 30 | | 7902 | FORD | ANALYST | 7566 | 1981-12-03 | 3000.00 | NULL | 20 | | 7934 | MILLER | CLERK | 7782 | 1982-01-23 | 1000.00 | NULL | 10 | +-------+--------+-----------+------+------------+---------+---------+--------+

2.4、視圖對(duì)象在實(shí)際開發(fā)中到底有什么用?《方便,簡(jiǎn)化開發(fā),利于維護(hù)》

create view emp_dept_viewasselect e.ename,e.sal,d.dnamefromemp ejoindept done.deptno = d.deptno;假設(shè)有一條非常復(fù)雜的SQL語(yǔ)句,而這條SQL語(yǔ)句需要在不同的位置上反復(fù)使用。每一次使用這個(gè)sql語(yǔ)句的時(shí)候都需要重新編寫,很長(zhǎng),很麻煩,怎么辦?可以把這條復(fù)雜的SQL語(yǔ)句以視圖對(duì)象的形式新建。在需要編寫這條SQL語(yǔ)句的位置直接使用視圖對(duì)象,可以大大簡(jiǎn)化開發(fā)。并且利于后期的維護(hù),因?yàn)樾薷牡臅r(shí)候也只需要修改一個(gè)位置就行,只需要修改視圖對(duì)象所映射的SQL語(yǔ)句。我們以后面向視圖開發(fā)的時(shí)候,使用視圖的時(shí)候可以像使用table一樣。可以對(duì)視圖進(jìn)行增刪改查等操作。視圖不是在內(nèi)存當(dāng)中,視圖對(duì)象也是存儲(chǔ)在硬盤上的,不會(huì)消失。再提醒一下:視圖對(duì)應(yīng)的語(yǔ)句只能是DQL語(yǔ)句。但是視圖對(duì)象創(chuàng)建完成之后,可以對(duì)視圖進(jìn)行增刪改查等操作。小插曲:增刪改查,又叫做:CRUD。CRUD是在公司中程序員之間溝通的術(shù)語(yǔ)。一般我們很少說(shuō)增刪改查。一般都說(shuō)CRUD。C:Create(增)R:Retrive(查:檢索)U:Update(改)D:Delete(刪)

3、DBA常用命令?

重點(diǎn)掌握:數(shù)據(jù)的導(dǎo)入和導(dǎo)出(數(shù)據(jù)的備份)其它命令了解一下即可。(這個(gè)培訓(xùn)日志文檔留著,以后忘了,可以打開文檔復(fù)制粘貼。)數(shù)據(jù)導(dǎo)出?注意:在windows的dos命令窗口中:mysqldump bjpowernode>D:\bjpowernode.sql -uroot -p123456可以導(dǎo)出指定的表嗎?mysqldump bjpowernode emp>D:\bjpowernode.sql -uroot -p123456數(shù)據(jù)導(dǎo)入?注意:需要先登錄到mysql數(shù)據(jù)庫(kù)服務(wù)器上。然后創(chuàng)建數(shù)據(jù)庫(kù):create database bjpowernode;使用數(shù)據(jù)庫(kù):use bjpowernode然后初始化數(shù)據(jù)庫(kù):source D:\bjpowernode.sql

4、數(shù)據(jù)庫(kù)設(shè)計(jì)三范式

4.1、什么是數(shù)據(jù)庫(kù)設(shè)計(jì)范式?
數(shù)據(jù)庫(kù)表的設(shè)計(jì)依據(jù)。教你怎么進(jìn)行數(shù)據(jù)庫(kù)表的設(shè)計(jì)。

4.2、數(shù)據(jù)庫(kù)設(shè)計(jì)范式共有?
3個(gè)。
第一范式:要求任何一張表必須有主鍵,每一個(gè)字段原子性不可再分。

第二范式:建立在第一范式的基礎(chǔ)之上,要求所有非主鍵字段完全依賴主鍵, 不要產(chǎn)生部分依賴。第三范式:建立在第二范式的基礎(chǔ)之上,要求所有非主鍵字段直接依賴主鍵, 不要產(chǎn)生傳遞依賴。聲明:三范式是面試官經(jīng)常問(wèn)的,所以一定要熟記在心!設(shè)計(jì)數(shù)據(jù)庫(kù)表的時(shí)候,按照以上的范式進(jìn)行,可以避免表中數(shù)據(jù)的冗余,空間的浪費(fèi)。

4.3、第一范式
最核心,最重要的范式,所有表的設(shè)計(jì)都需要滿足。
必須有主鍵,并且每一個(gè)字段都是原子性不可再分。

學(xué)生編號(hào) 學(xué)生姓名 聯(lián)系方式 ------------------------------------------ 1001 張三 zs@gmail.com,1359999999 1002 李四 ls@gmail.com,13699999999 1001 王五 ww@163.net,13488888888以上是學(xué)生表,滿足第一范式嗎?不滿足,第一:沒有主鍵。第二:聯(lián)系方式可以分為郵箱地址和電話學(xué)生編號(hào)(pk) 學(xué)生姓名 郵箱地址 聯(lián)系電話 ---------------------------------------------------- 1001 張三 zs@gmail.com 1359999999 1002 李四 ls@gmail.com 13699999999 1003 王五 ww@163.net 13488888888

4.4、第二范式:
建立在第一范式的基礎(chǔ)之上,
要求所有非主鍵字段必須完全依賴主鍵,不要產(chǎn)生部分依賴。

學(xué)生編號(hào) 學(xué)生姓名 教師編號(hào) 教師姓名 ---------------------------------------------------- 1001 張三 001 王老師 1002 李四 002 趙老師 1003 王五 001 王老師 1001 張三 002 趙老師這張表描述了學(xué)生和老師的關(guān)系:(1個(gè)學(xué)生可能有多個(gè)老師,1個(gè)老師有多個(gè)學(xué)生) 這是非常典型的:多對(duì)多關(guān)系!分析以上的表是否滿足第一范式?不滿足第一范式。怎么滿足第一范式呢?修改學(xué)生編號(hào)+教師編號(hào)(pk) 學(xué)生姓名 教師姓名 ---------------------------------------------------- 1001 001 張三 王老師 1002 002 李四 趙老師 1003 001 王五 王老師 1001 002 張三 趙老師學(xué)生編號(hào) 教師編號(hào),兩個(gè)字段聯(lián)合做主鍵,復(fù)合主鍵(PK: 學(xué)生編號(hào)+教師編號(hào)) 經(jīng)過(guò)修改之后,以上的表滿足了第一范式。但是滿足第二范式嗎?不滿足,“張三”依賴1001,“王老師”依賴001,顯然產(chǎn)生了部分依賴。產(chǎn)生部分依賴有什么缺點(diǎn)?數(shù)據(jù)冗余了。空間浪費(fèi)了。“張三”重復(fù)了,“王老師”重復(fù)了。為了讓以上的表滿足第二范式,你需要這樣設(shè)計(jì):使用三張表來(lái)表示多對(duì)多的關(guān)系!!!!學(xué)生表學(xué)生編號(hào)(pk) 學(xué)生名字------------------------------------1001 張三1002 李四1003 王五教師表教師編號(hào)(pk) 教師姓名--------------------------------------001 王老師002 趙老師學(xué)生教師關(guān)系表id(pk) 學(xué)生編號(hào)(fk) 教師編號(hào)(fk)------------------------------------------------------1 1001 0012 1002 0023 1003 0014 1001 002背口訣:多對(duì)多怎么設(shè)計(jì)?多對(duì)多,三張表,關(guān)系表兩個(gè)外鍵!!!!!!!!!!!!!!!

4.5、第三范式
第三范式建立在第二范式的基礎(chǔ)之上
要求所有非主鍵字典必須直接依賴主鍵,不要產(chǎn)生傳遞依賴。

學(xué)生編號(hào)(PK) 學(xué)生姓名 班級(jí)編號(hào) 班級(jí)名稱 ---------------------------------------------------------1001 張三 01 一年一班1002 李四 02 一年二班1003 王五 03 一年三班1004 趙六 03 一年三班以上表的設(shè)計(jì)是描述:班級(jí)和學(xué)生的關(guān)系。很顯然是1對(duì)多關(guān)系! 一個(gè)教室中有多個(gè)學(xué)生。分析以上表是否滿足第一范式?滿足第一范式,有主鍵。分析以上表是否滿足第二范式?滿足第二范式,因?yàn)橹麈I不是復(fù)合主鍵,沒有產(chǎn)生部分依賴。主鍵是單一主鍵。分析以上表是否滿足第三范式?第三范式要求:不要產(chǎn)生傳遞依賴!一年一班依賴01,01依賴1001,產(chǎn)生了傳遞依賴。不符合第三范式的要求。產(chǎn)生了數(shù)據(jù)的冗余。那么應(yīng)該怎么設(shè)計(jì)一對(duì)多呢?班級(jí)表:一班級(jí)編號(hào)(pk) 班級(jí)名稱----------------------------------------01 一年一班02 一年二班03 一年三班學(xué)生表:多學(xué)生編號(hào)(PK) 學(xué)生姓名 班級(jí)編號(hào)(fk)-------------------------------------------1001 張三 01 1002 李四 02 1003 王五 03 1004 趙六 03 背口訣:一對(duì)多,兩張表,多的表加外鍵!!!!!!!!!!!!

4.6、總結(jié)表的設(shè)計(jì)?

一對(duì)多:一對(duì)多,兩張表,多的表加外鍵!!!!!!!!!!!!多對(duì)多:多對(duì)多,三張表,關(guān)系表兩個(gè)外鍵!!!!!!!!!!!!!!!一對(duì)一:一對(duì)一放到一張表中不就行了嗎?為啥還要拆分表?在實(shí)際的開發(fā)中,可能存在一張表字段太多,太龐大。這個(gè)時(shí)候要拆分表。一對(duì)一怎么設(shè)計(jì)?沒有拆分表之前:一張表t_userid login_name login_pwd real_name email address........---------------------------------------------------------------------------1 zhangsan 123 張三 zhangsan@xxx2 lisi 123 李四 lisi@xxx...這種龐大的表建議拆分為兩張:t_login 登錄信息表id(pk) login_name login_pwd ---------------------------------1 zhangsan 123 2 lisi 123 t_user 用戶詳細(xì)信息表id(pk) real_name email address........ login_id(fk+unique)-----------------------------------------------------------------------------------------100 張三 zhangsan@xxx 1200 李四 lisi@xxx 2口訣:一對(duì)一,外鍵唯一!!!!!!!!!!

4.7、囑咐一句話:

數(shù)據(jù)庫(kù)設(shè)計(jì)三范式是理論上的。實(shí)踐和理論有的時(shí)候有偏差。最終的目的都是為了滿足客戶的需求,有的時(shí)候會(huì)拿冗余換執(zhí)行速度。因?yàn)樵趕ql當(dāng)中,表和表之間連接次數(shù)越多,效率越低。(笛卡爾積)有的時(shí)候可能會(huì)存在冗余,但是為了減少表的連接次數(shù),這樣做也是合理的, 并且對(duì)于開發(fā)人員來(lái)說(shuō),sql語(yǔ)句的編寫難度也會(huì)降低。面試的時(shí)候把這句話說(shuō)上:他就不會(huì)認(rèn)為你是初級(jí)程序員了!

總結(jié)

以上是生活随笔為你收集整理的MySQL数据库学习教程,从0到入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

女人和拘做爰正片视频 | 国产精品美女久久久 | 国产精品久久福利网站 | 色欲久久久天天天综合网精品 | 激情国产av做激情国产爱 | 久久综合九色综合欧美狠狠 | 久久人人爽人人爽人人片av高清 | 欧美黑人性暴力猛交喷水 | 成在人线av无码免费 | 无码国产激情在线观看 | 欧美人与物videos另类 | 国内精品人妻无码久久久影院 | 午夜福利一区二区三区在线观看 | 久久成人a毛片免费观看网站 | 亚洲精品鲁一鲁一区二区三区 | 国产香蕉尹人视频在线 | 少妇厨房愉情理9仑片视频 | 精品国产精品久久一区免费式 | 荫蒂被男人添的好舒服爽免费视频 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 思思久久99热只有频精品66 | 少妇性l交大片欧洲热妇乱xxx | 又湿又紧又大又爽a视频国产 | 粗大的内捧猛烈进出视频 | 免费无码午夜福利片69 | 国产色精品久久人妻 | 精品人妻人人做人人爽夜夜爽 | 日韩欧美群交p片內射中文 | 欧美黑人乱大交 | 亚洲小说图区综合在线 | 亚洲精品无码人妻无码 | 久久久久av无码免费网 | 国产成人无码av一区二区 | 综合人妻久久一区二区精品 | 欧美刺激性大交 | 麻豆蜜桃av蜜臀av色欲av | 乱人伦人妻中文字幕无码久久网 | 婷婷丁香六月激情综合啪 | a在线亚洲男人的天堂 | 精品无人区无码乱码毛片国产 | 无码精品人妻一区二区三区av | 久久久久久久久蜜桃 | 国产一区二区不卡老阿姨 | 捆绑白丝粉色jk震动捧喷白浆 | 国产精品久久久久9999小说 | 久久精品99久久香蕉国产色戒 | 国产口爆吞精在线视频 | 亚洲精品午夜国产va久久成人 | 男人的天堂2018无码 | 狠狠综合久久久久综合网 | 亚洲日韩精品欧美一区二区 | 最近的中文字幕在线看视频 | 国产一区二区三区日韩精品 | 欧美丰满熟妇xxxx性ppx人交 | 午夜肉伦伦影院 | 久久久久久九九精品久 | 国内揄拍国内精品少妇国语 | 国产精品久久久久久久9999 | 性欧美牲交xxxxx视频 | 99久久婷婷国产综合精品青草免费 | 精品无码av一区二区三区 | 国产综合色产在线精品 | 一本色道久久综合狠狠躁 | 一本大道伊人av久久综合 | 内射欧美老妇wbb | 人妻与老人中文字幕 | 久精品国产欧美亚洲色aⅴ大片 | 国产精品人妻一区二区三区四 | 国产亚洲日韩欧美另类第八页 | 国产精品国产自线拍免费软件 | 大地资源网第二页免费观看 | 亚洲gv猛男gv无码男同 | 老司机亚洲精品影院 | 青青青爽视频在线观看 | 激情五月综合色婷婷一区二区 | 国产精品丝袜黑色高跟鞋 | 免费人成在线视频无码 | 久久综合久久自在自线精品自 | 亚洲自偷自偷在线制服 | 精品偷拍一区二区三区在线看 | 日本一区二区三区免费高清 | 青春草在线视频免费观看 | 日本www一道久久久免费榴莲 | 欧美兽交xxxx×视频 | 亚洲男人av天堂午夜在 | 蜜臀aⅴ国产精品久久久国产老师 | 人妻中文无码久热丝袜 | 国产欧美熟妇另类久久久 | 鲁大师影院在线观看 | 亚洲成av人片天堂网无码】 | 色婷婷欧美在线播放内射 | 亚洲综合精品香蕉久久网 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产在线aaa片一区二区99 | a片免费视频在线观看 | 免费人成网站视频在线观看 | 无码av中文字幕免费放 | 亚洲成在人网站无码天堂 | 东京热一精品无码av | 亚洲一区二区三区四区 | 国内综合精品午夜久久资源 | 国产成人无码午夜视频在线观看 | 国产欧美精品一区二区三区 | 亚洲 另类 在线 欧美 制服 | 亚洲综合无码久久精品综合 | 亚洲精品成人福利网站 | 亚洲精品久久久久久久久久久 | 国产在线aaa片一区二区99 | 乱人伦人妻中文字幕无码 | 国产精品99久久精品爆乳 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 国产精品美女久久久 | 成人无码精品一区二区三区 | 色老头在线一区二区三区 | 色一情一乱一伦一视频免费看 | 人人爽人人爽人人片av亚洲 | 在线观看国产午夜福利片 | 国产精品香蕉在线观看 | 国产成人无码专区 | 国产成人av免费观看 | 国产绳艺sm调教室论坛 | 午夜福利不卡在线视频 | 东京无码熟妇人妻av在线网址 | 国产欧美精品一区二区三区 | 在线а√天堂中文官网 | 我要看www免费看插插视频 | 亚洲一区二区三区国产精华液 | 欧洲美熟女乱又伦 | 亚洲色欲色欲天天天www | 国产精品久久久久9999小说 | 亚洲阿v天堂在线 | 国产精品美女久久久久av爽李琼 | 国产电影无码午夜在线播放 | 久久精品国产99久久6动漫 | 成 人 网 站国产免费观看 | 日本熟妇大屁股人妻 | 国产97在线 | 亚洲 | 国产精品久久国产三级国 | 久久成人a毛片免费观看网站 | 国产口爆吞精在线视频 | av人摸人人人澡人人超碰下载 | 成人女人看片免费视频放人 | 天下第一社区视频www日本 | 97色伦图片97综合影院 | 久久久久99精品成人片 | 中国女人内谢69xxxx | 欧美性猛交内射兽交老熟妇 | 色偷偷人人澡人人爽人人模 | 国产亚洲视频中文字幕97精品 | 丰满岳乱妇在线观看中字无码 | 在线天堂新版最新版在线8 | 无码成人精品区在线观看 | 国产午夜亚洲精品不卡下载 | 国产精品无码久久av | 国产国语老龄妇女a片 | 精品无码成人片一区二区98 | 牲交欧美兽交欧美 | 一本久久a久久精品亚洲 | 成人免费视频一区二区 | 欧美性生交活xxxxxdddd | 日韩精品久久久肉伦网站 | 亚洲国产av精品一区二区蜜芽 | 精品无码成人片一区二区98 | 亚洲日韩av一区二区三区中文 | 高潮毛片无遮挡高清免费 | 爽爽影院免费观看 | 久在线观看福利视频 | 国产绳艺sm调教室论坛 | 熟女体下毛毛黑森林 | 中文字幕亚洲情99在线 | 丰满岳乱妇在线观看中字无码 | 无码人妻少妇伦在线电影 | 午夜无码人妻av大片色欲 | 人人妻人人澡人人爽欧美一区 | аⅴ资源天堂资源库在线 | 日韩欧美中文字幕公布 | 亚欧洲精品在线视频免费观看 | 正在播放老肥熟妇露脸 | 无码国模国产在线观看 | 捆绑白丝粉色jk震动捧喷白浆 | 人人妻人人澡人人爽欧美一区九九 | 伊人久久婷婷五月综合97色 | 99久久精品国产一区二区蜜芽 | 亚洲经典千人经典日产 | 国内少妇偷人精品视频 | 国产午夜亚洲精品不卡 | 无码播放一区二区三区 | 又粗又大又硬毛片免费看 | 无码国内精品人妻少妇 | 日韩精品久久久肉伦网站 | 日本又色又爽又黄的a片18禁 | 国产欧美熟妇另类久久久 | 午夜精品一区二区三区在线观看 | 高潮毛片无遮挡高清免费 | 国产偷抇久久精品a片69 | 装睡被陌生人摸出水好爽 | 亚洲欧美日韩国产精品一区二区 | 亚洲熟妇色xxxxx欧美老妇y | 学生妹亚洲一区二区 | 亚洲乱码日产精品bd | 麻豆国产97在线 | 欧洲 | 久久久成人毛片无码 | 色诱久久久久综合网ywww | 国产精品二区一区二区aⅴ污介绍 | 久久久成人毛片无码 | 亚洲a无码综合a国产av中文 | 自拍偷自拍亚洲精品被多人伦好爽 | 国产av无码专区亚洲a∨毛片 | 无码国内精品人妻少妇 | 国产成人无码专区 | 男女爱爱好爽视频免费看 | 久久国产精品_国产精品 | 亚洲中文字幕在线观看 | 日韩亚洲欧美精品综合 | 日本一区二区三区免费播放 | 精品久久8x国产免费观看 | 大肉大捧一进一出好爽视频 | 日韩av无码一区二区三区不卡 | 狠狠色丁香久久婷婷综合五月 | 亚洲爆乳大丰满无码专区 | 女人色极品影院 | 99久久精品日本一区二区免费 | 丰满人妻一区二区三区免费视频 | 亚洲精品久久久久avwww潮水 | 欧美老熟妇乱xxxxx | 天天躁夜夜躁狠狠是什么心态 | av小次郎收藏 | 国产精品人人妻人人爽 | 亚洲综合另类小说色区 | yw尤物av无码国产在线观看 | 久久精品中文闷骚内射 | 一本久久a久久精品亚洲 | 国产精品多人p群无码 | 亚洲人成无码网www | 久久综合香蕉国产蜜臀av | 国产艳妇av在线观看果冻传媒 | 天天做天天爱天天爽综合网 | 亚洲一区二区三区 | 日韩精品无码一本二本三本色 | 久久精品国产一区二区三区肥胖 | 无遮挡国产高潮视频免费观看 | 亚洲娇小与黑人巨大交 | 亚洲人成网站色7799 | 午夜熟女插插xx免费视频 | 国产女主播喷水视频在线观看 | 中文字幕无码免费久久9一区9 | 狠狠色色综合网站 | 真人与拘做受免费视频 | 国精产品一区二区三区 | 国精产品一品二品国精品69xx | 国产成人综合美国十次 | 毛片内射-百度 | 成 人影片 免费观看 | 给我免费的视频在线观看 | 暴力强奷在线播放无码 | 99国产欧美久久久精品 | 国产明星裸体无码xxxx视频 | 18精品久久久无码午夜福利 | 午夜精品一区二区三区的区别 | 国产精品99久久精品爆乳 | 久久精品国产精品国产精品污 | www国产亚洲精品久久久日本 | 伊人久久大香线蕉av一区二区 | 国产av剧情md精品麻豆 | 国产精品福利视频导航 | 黑人粗大猛烈进出高潮视频 | 精品人人妻人人澡人人爽人人 | 亚洲自偷自偷在线制服 | 精品人妻中文字幕有码在线 | 成人欧美一区二区三区黑人免费 | 一区二区传媒有限公司 | 色综合久久久久综合一本到桃花网 | 成人影院yy111111在线观看 | 一个人看的www免费视频在线观看 | 中文无码成人免费视频在线观看 | 婷婷五月综合激情中文字幕 | 露脸叫床粗话东北少妇 | av无码久久久久不卡免费网站 | 亚洲精品国产精品乱码不卡 | 国产电影无码午夜在线播放 | 99国产欧美久久久精品 | 俄罗斯老熟妇色xxxx | 呦交小u女精品视频 | 一本大道伊人av久久综合 | 暴力强奷在线播放无码 | 国产办公室秘书无码精品99 | 亚洲欧美精品aaaaaa片 | 国内精品久久毛片一区二区 | 亚洲国产成人a精品不卡在线 | 亚洲精品一区三区三区在线观看 | 久久久精品欧美一区二区免费 | 精品国产成人一区二区三区 | 精品国产青草久久久久福利 | 国产黄在线观看免费观看不卡 | 午夜免费福利小电影 | 精品无码成人片一区二区98 | 人人妻人人澡人人爽人人精品浪潮 | 在线视频网站www色 | 亚洲成a人片在线观看日本 | 人妻少妇精品视频专区 | 久久综合久久自在自线精品自 | 免费男性肉肉影院 | 男女性色大片免费网站 | 天天做天天爱天天爽综合网 | 夜夜夜高潮夜夜爽夜夜爰爰 | 中文字幕乱码亚洲无线三区 | 欧美精品免费观看二区 | 国产成人一区二区三区别 | 中文字幕 人妻熟女 | 纯爱无遮挡h肉动漫在线播放 | 在线播放免费人成毛片乱码 | 午夜精品久久久内射近拍高清 | 国产精品爱久久久久久久 | 国产熟女一区二区三区四区五区 | 无套内谢老熟女 | 免费国产黄网站在线观看 | 欧美老妇交乱视频在线观看 | 日韩无套无码精品 | 国产亚av手机在线观看 | av在线亚洲欧洲日产一区二区 | 青青青手机频在线观看 | 精品无人区无码乱码毛片国产 | 性欧美熟妇videofreesex | 婷婷丁香五月天综合东京热 | 国精品人妻无码一区二区三区蜜柚 | 精品成人av一区二区三区 | 精品夜夜澡人妻无码av蜜桃 | 麻豆国产丝袜白领秘书在线观看 | 色噜噜亚洲男人的天堂 | 人妻尝试又大又粗久久 | 丝袜人妻一区二区三区 | 综合人妻久久一区二区精品 | 丰满少妇女裸体bbw | ass日本丰满熟妇pics | 国产精品久久久久9999小说 | 熟妇女人妻丰满少妇中文字幕 | 中文无码成人免费视频在线观看 | 欧美人与善在线com | 18黄暴禁片在线观看 | 激情五月综合色婷婷一区二区 | 国产亚洲精品久久久久久 | 精品 日韩 国产 欧美 视频 | 亚洲色在线无码国产精品不卡 | 精品国精品国产自在久国产87 | 日韩人妻无码一区二区三区久久99 | 亚洲精品无码国产 | 久久人人爽人人爽人人片av高清 | 亚洲精品久久久久久一区二区 | 99国产欧美久久久精品 | 超碰97人人射妻 | 在线观看国产一区二区三区 | 中文字幕无码av波多野吉衣 | 日日鲁鲁鲁夜夜爽爽狠狠 | 色欲久久久天天天综合网精品 | 久久午夜无码鲁丝片午夜精品 | 男人扒开女人内裤强吻桶进去 | 伊人久久大香线蕉av一区二区 | 日本熟妇浓毛 | 永久免费观看美女裸体的网站 | 狂野欧美性猛交免费视频 | 无码人妻精品一区二区三区不卡 | 亚洲成a人一区二区三区 | 色窝窝无码一区二区三区色欲 | 免费无码一区二区三区蜜桃大 | 国产凸凹视频一区二区 | 中文字幕av无码一区二区三区电影 | 一区二区三区乱码在线 | 欧洲 | 一区二区三区乱码在线 | 欧洲 | 久久人人爽人人人人片 | 少妇厨房愉情理9仑片视频 | 久久久亚洲欧洲日产国码αv | 日韩亚洲欧美精品综合 | 日韩无码专区 | 无码精品人妻一区二区三区av | 大乳丰满人妻中文字幕日本 | 少妇人妻av毛片在线看 | 无码福利日韩神码福利片 | 正在播放东北夫妻内射 | 精品欧洲av无码一区二区三区 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 国产成人久久精品流白浆 | 人妻少妇精品久久 | 伦伦影院午夜理论片 | 久久无码专区国产精品s | 狠狠色噜噜狠狠狠狠7777米奇 | 激情综合激情五月俺也去 | 国产特级毛片aaaaaa高潮流水 | 日韩欧美中文字幕公布 | 伊人色综合久久天天小片 | 又粗又大又硬毛片免费看 | 狂野欧美激情性xxxx | 东京无码熟妇人妻av在线网址 | 亚洲天堂2017无码 | 精品偷拍一区二区三区在线看 | 黑人大群体交免费视频 | 中文字幕无码av激情不卡 | 久久久久久a亚洲欧洲av冫 | 精品国产青草久久久久福利 | 国产人妻大战黑人第1集 | 欧洲精品码一区二区三区免费看 | 国产精品亚洲专区无码不卡 | 国产va免费精品观看 | 久久综合狠狠综合久久综合88 | 无码人妻丰满熟妇区五十路百度 | 亚洲小说图区综合在线 | 色综合久久久无码网中文 | 成人av无码一区二区三区 | 无人区乱码一区二区三区 | 性色欲网站人妻丰满中文久久不卡 | а√资源新版在线天堂 | 国产一区二区三区四区五区加勒比 | 国产黄在线观看免费观看不卡 | 久久精品国产一区二区三区 | 亚洲精品无码人妻无码 | 久久无码中文字幕免费影院蜜桃 | 亚洲日韩av片在线观看 | 免费无码一区二区三区蜜桃大 | 特黄特色大片免费播放器图片 | 毛片内射-百度 | 激情人妻另类人妻伦 | 亚洲娇小与黑人巨大交 | 人人澡人摸人人添 | 久久97精品久久久久久久不卡 | 色婷婷久久一区二区三区麻豆 | 欧美日韩一区二区综合 | 免费视频欧美无人区码 | 夜精品a片一区二区三区无码白浆 | 亚洲乱亚洲乱妇50p | 国产亚洲精品久久久久久 | 亚洲精品久久久久avwww潮水 | 俺去俺来也在线www色官网 | 色婷婷香蕉在线一区二区 | 欧美精品一区二区精品久久 | 色婷婷香蕉在线一区二区 | 国产精品二区一区二区aⅴ污介绍 | 无码人妻丰满熟妇区毛片18 | 国产成人午夜福利在线播放 | 欧美乱妇无乱码大黄a片 | 亚洲中文字幕成人无码 | 性开放的女人aaa片 | 日韩av无码一区二区三区 | 国产精品第一国产精品 | 97资源共享在线视频 | 国产精品亚洲lv粉色 | 中国大陆精品视频xxxx | 波多野结衣一区二区三区av免费 | 精品一区二区三区波多野结衣 | 久久久国产精品无码免费专区 | 人人妻人人澡人人爽欧美一区 | 精品人妻中文字幕有码在线 | 国产午夜手机精彩视频 | 国产成人精品久久亚洲高清不卡 | 日日噜噜噜噜夜夜爽亚洲精品 | 亚洲一区二区三区四区 | 强伦人妻一区二区三区视频18 | 欧美日韩久久久精品a片 | 中文字幕乱码中文乱码51精品 | 亚洲七七久久桃花影院 | 国产人妻人伦精品1国产丝袜 | 无码成人精品区在线观看 | 国产在线精品一区二区三区直播 | 国精产品一区二区三区 | 免费中文字幕日韩欧美 | 日日碰狠狠躁久久躁蜜桃 | 久久精品无码一区二区三区 | 国产亚洲tv在线观看 | 亚洲gv猛男gv无码男同 | 日日鲁鲁鲁夜夜爽爽狠狠 | 国产婷婷色一区二区三区在线 | 人人妻在人人 | 国产午夜无码精品免费看 | 老子影院午夜伦不卡 | 免费网站看v片在线18禁无码 | 亚洲第一网站男人都懂 | 国产成人精品优优av | 精品久久8x国产免费观看 | 亚洲欧洲无卡二区视頻 | 一本久道久久综合婷婷五月 | 日韩av激情在线观看 | 色欲人妻aaaaaaa无码 | 国产精品国产自线拍免费软件 | 国语精品一区二区三区 | 日本免费一区二区三区最新 | 2020久久超碰国产精品最新 | 免费无码的av片在线观看 | 国产凸凹视频一区二区 | 人妻天天爽夜夜爽一区二区 | 永久黄网站色视频免费直播 | 免费看男女做好爽好硬视频 | 亚洲人成影院在线无码按摩店 | 国产欧美亚洲精品a | 国产人成高清在线视频99最全资源 | 久久久中文久久久无码 | 中文字幕日韩精品一区二区三区 | 国产精品爱久久久久久久 | 中文字幕无线码免费人妻 | 男女猛烈xx00免费视频试看 | 东京热无码av男人的天堂 | 亚洲精品一区二区三区四区五区 | 亚洲中文字幕无码一久久区 | 欧美阿v高清资源不卡在线播放 | 男人和女人高潮免费网站 | 中文字幕av无码一区二区三区电影 | 少妇久久久久久人妻无码 | 欧美成人午夜精品久久久 | 国产肉丝袜在线观看 | 亚洲日韩av一区二区三区中文 | 欧美一区二区三区视频在线观看 | 色综合视频一区二区三区 | 人人妻人人澡人人爽人人精品 | 欧美阿v高清资源不卡在线播放 | 少妇无码吹潮 | 呦交小u女精品视频 | 国产尤物精品视频 | 亚洲 日韩 欧美 成人 在线观看 | 久久亚洲国产成人精品性色 | 国产无套粉嫩白浆在线 | 黑森林福利视频导航 | 色综合久久88色综合天天 | 丝袜美腿亚洲一区二区 | 欧美 日韩 亚洲 在线 | 强辱丰满人妻hd中文字幕 | 大肉大捧一进一出视频出来呀 | 伊在人天堂亚洲香蕉精品区 | 亚洲精品一区二区三区大桥未久 | 国产亚洲精品久久久ai换 | 中文字幕人妻无码一夲道 | 粗大的内捧猛烈进出视频 | 国产xxx69麻豆国语对白 | 欧美丰满熟妇xxxx | 日韩精品乱码av一区二区 | 精品国产一区av天美传媒 | 波多野结衣乳巨码无在线观看 | 中国女人内谢69xxxx | 亚洲综合无码久久精品综合 | 精品无码成人片一区二区98 | 成人aaa片一区国产精品 | 国产精品无套呻吟在线 | 国产精品-区区久久久狼 | 亚洲va中文字幕无码久久不卡 | 日本护士毛茸茸高潮 | 久久综合香蕉国产蜜臀av | 亚洲精品久久久久avwww潮水 | 午夜精品一区二区三区的区别 | 亚洲第一无码av无码专区 | 性生交大片免费看女人按摩摩 | 97资源共享在线视频 | 无码人妻出轨黑人中文字幕 | 99久久婷婷国产综合精品青草免费 | 日韩少妇内射免费播放 | 亚洲理论电影在线观看 | 永久免费观看国产裸体美女 | 日本乱偷人妻中文字幕 | 欧美怡红院免费全部视频 | 麻豆果冻传媒2021精品传媒一区下载 | 狠狠色丁香久久婷婷综合五月 | 伊人久久大香线蕉午夜 | 亚洲 日韩 欧美 成人 在线观看 | 国产无av码在线观看 | 狠狠躁日日躁夜夜躁2020 | 免费中文字幕日韩欧美 | 日日鲁鲁鲁夜夜爽爽狠狠 | 午夜不卡av免费 一本久久a久久精品vr综合 | 乱码午夜-极国产极内射 | 成人欧美一区二区三区黑人免费 | 久久亚洲日韩精品一区二区三区 | 黑人玩弄人妻中文在线 | 国产一区二区三区四区五区加勒比 | 成熟人妻av无码专区 | 扒开双腿吃奶呻吟做受视频 | 99久久精品午夜一区二区 | 精品国产精品久久一区免费式 | 蜜桃无码一区二区三区 | 亚洲一区二区三区国产精华液 | 欧美激情一区二区三区成人 | 老太婆性杂交欧美肥老太 | 国产午夜精品一区二区三区嫩草 | 亚洲精品欧美二区三区中文字幕 | 久久精品国产大片免费观看 | 少妇性俱乐部纵欲狂欢电影 | 日本精品高清一区二区 | 国产精品亚洲五月天高清 | 无套内谢的新婚少妇国语播放 | 偷窥日本少妇撒尿chinese | 国产绳艺sm调教室论坛 | 妺妺窝人体色www在线小说 | 人妻体内射精一区二区三四 | 日韩av无码中文无码电影 | 欧美老妇交乱视频在线观看 | 久久久亚洲欧洲日产国码αv | 国产乱子伦视频在线播放 | 黑人巨大精品欧美黑寡妇 | 无码人妻丰满熟妇区五十路百度 | 欧洲美熟女乱又伦 | 亚洲男人av天堂午夜在 | 国产艳妇av在线观看果冻传媒 | 精品一区二区三区波多野结衣 | 国产精品无码永久免费888 | 欧美日韩综合一区二区三区 | 蜜桃av抽搐高潮一区二区 | 欧美成人家庭影院 | 国产综合久久久久鬼色 | 久久人人97超碰a片精品 | 欧美日韩亚洲国产精品 | 蜜桃无码一区二区三区 | 装睡被陌生人摸出水好爽 | 六月丁香婷婷色狠狠久久 | 亚洲精品久久久久avwww潮水 | 欧美丰满熟妇xxxx性ppx人交 | 国产福利视频一区二区 | 99在线 | 亚洲 | 双乳奶水饱满少妇呻吟 | 国产av剧情md精品麻豆 | 国产精品国产三级国产专播 | 久久综合给久久狠狠97色 | 久久精品人人做人人综合试看 | 无码播放一区二区三区 | 少妇性l交大片欧洲热妇乱xxx | 日本一区二区三区免费高清 | 国产精品无码成人午夜电影 | 亚洲成色在线综合网站 | 亚洲人成网站免费播放 | 色妞www精品免费视频 | 免费人成网站视频在线观看 | 亚洲精品无码国产 | 日韩欧美中文字幕在线三区 | 日产精品99久久久久久 | 无码人妻精品一区二区三区下载 | 亚洲中文字幕久久无码 | 精品亚洲韩国一区二区三区 | 亚洲成av人综合在线观看 | 最近免费中文字幕中文高清百度 | 波多野结衣乳巨码无在线观看 | 欧美熟妇另类久久久久久不卡 | 亚洲人成网站在线播放942 | 国产成人无码av片在线观看不卡 | 国产av无码专区亚洲a∨毛片 | 天堂一区人妻无码 | 国产免费无码一区二区视频 | 国产成人综合在线女婷五月99播放 | 激情亚洲一区国产精品 | 国产激情综合五月久久 | 国产亚洲精品精品国产亚洲综合 | 婷婷综合久久中文字幕蜜桃三电影 | а√天堂www在线天堂小说 | 国产成人精品优优av | 精品无码国产自产拍在线观看蜜 | 无码国产激情在线观看 | 日韩精品一区二区av在线 | 日韩少妇白浆无码系列 | 动漫av网站免费观看 | 久久久久久久人妻无码中文字幕爆 | 亚洲国产欧美国产综合一区 | 欧洲极品少妇 | 人妻熟女一区 | 亚洲国产精品成人久久蜜臀 | 国产综合久久久久鬼色 | 久久国产36精品色熟妇 | 亚洲乱码中文字幕在线 | www成人国产高清内射 | 久久亚洲日韩精品一区二区三区 | 樱花草在线播放免费中文 | 亚洲国产av美女网站 | 国产精品国产三级国产专播 | 亚洲国精产品一二二线 | 国产人妖乱国产精品人妖 | 美女毛片一区二区三区四区 | 国内精品久久久久久中文字幕 | 亚洲一区二区三区播放 | 中文字幕无码av激情不卡 | 国产99久久精品一区二区 | 久久精品中文字幕一区 | 国产激情艳情在线看视频 | 中文字幕乱码人妻无码久久 | 131美女爱做视频 | 成 人影片 免费观看 | 亚洲人成网站色7799 | 亚欧洲精品在线视频免费观看 | 小泽玛莉亚一区二区视频在线 | 人妻少妇精品无码专区二区 | 国产综合在线观看 | 国产综合在线观看 | 国产亚洲精品久久久闺蜜 | 国产成人精品久久亚洲高清不卡 | 性啪啪chinese东北女人 | 欧洲美熟女乱又伦 | 久久人人爽人人爽人人片ⅴ | 久久亚洲中文字幕无码 | 中文字幕无码视频专区 | 国产精品二区一区二区aⅴ污介绍 | 国产做国产爱免费视频 | 网友自拍区视频精品 | 激情人妻另类人妻伦 | 无码人妻黑人中文字幕 | 性啪啪chinese东北女人 | 国产电影无码午夜在线播放 | 国产成人无码av在线影院 | 最近的中文字幕在线看视频 | 亚洲成a人片在线观看无码 | 精品久久综合1区2区3区激情 | 麻花豆传媒剧国产免费mv在线 | 麻豆国产人妻欲求不满谁演的 | 中文精品无码中文字幕无码专区 | 欧美黑人性暴力猛交喷水 | 亚洲色偷偷偷综合网 | 国语精品一区二区三区 | yw尤物av无码国产在线观看 | 国产精品香蕉在线观看 | 无码av免费一区二区三区试看 | 99久久久国产精品无码免费 | 欧洲精品码一区二区三区免费看 | 国产成人综合在线女婷五月99播放 | 日日碰狠狠丁香久燥 | 色窝窝无码一区二区三区色欲 | 免费人成在线视频无码 | 日产精品99久久久久久 | 精品国产国产综合精品 | 大肉大捧一进一出好爽视频 | 免费无码午夜福利片69 | 亚洲中文字幕av在天堂 | 亚洲人亚洲人成电影网站色 | 精品国产麻豆免费人成网站 | 中文字幕无码日韩欧毛 | 女人色极品影院 | 亚洲精品鲁一鲁一区二区三区 | 国产成人无码a区在线观看视频app | 牛和人交xxxx欧美 | 国产精品久久久久久无码 | 国产极品视觉盛宴 | 国产精品a成v人在线播放 | 亚洲色大成网站www国产 | 亚洲一区二区三区 | 色诱久久久久综合网ywww | 欧洲熟妇色 欧美 | 婷婷色婷婷开心五月四房播播 | 在线视频网站www色 | 精品国产一区av天美传媒 | 18精品久久久无码午夜福利 | 1000部啪啪未满十八勿入下载 | 精品久久8x国产免费观看 | 欧美人与牲动交xxxx | 久久久久久久久888 | 99riav国产精品视频 | 亚洲色欲久久久综合网东京热 | 国产亚洲日韩欧美另类第八页 | 婷婷色婷婷开心五月四房播播 | 日韩精品一区二区av在线 | 日韩欧美群交p片內射中文 | 美女极度色诱视频国产 | 午夜性刺激在线视频免费 | 色窝窝无码一区二区三区色欲 | 美女黄网站人色视频免费国产 | 国产网红无码精品视频 | 国色天香社区在线视频 | 色欲久久久天天天综合网精品 | 人妻中文无码久热丝袜 | 精品国偷自产在线视频 | 久久伊人色av天堂九九小黄鸭 | 亚洲精品成人av在线 | 九九在线中文字幕无码 | 久久精品国产一区二区三区 | 亚洲精品午夜无码电影网 | 少妇太爽了在线观看 | 麻豆国产97在线 | 欧洲 | 国产精品久久久午夜夜伦鲁鲁 | 大地资源网第二页免费观看 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 亚洲一区二区三区四区 | 免费观看又污又黄的网站 | 麻花豆传媒剧国产免费mv在线 | 97精品人妻一区二区三区香蕉 | 中文毛片无遮挡高清免费 | 国产精品沙发午睡系列 | 学生妹亚洲一区二区 | 午夜成人1000部免费视频 | 秋霞特色aa大片 | 亚洲の无码国产の无码影院 | 久久成人a毛片免费观看网站 | 精品国产国产综合精品 | 精品国产av色一区二区深夜久久 | 欧美肥老太牲交大战 | 免费中文字幕日韩欧美 | 日韩人妻少妇一区二区三区 | √8天堂资源地址中文在线 | 中文字幕无码日韩专区 | 欧美人与善在线com | 久久天天躁夜夜躁狠狠 | 无码成人精品区在线观看 | 牲欲强的熟妇农村老妇女 | 国产香蕉尹人视频在线 | 成人亚洲精品久久久久软件 | 亚洲精品一区二区三区在线 | 无码人妻丰满熟妇区五十路百度 | 色欲综合久久中文字幕网 | 男女爱爱好爽视频免费看 | 国产精品欧美成人 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产特级毛片aaaaaa高潮流水 | 日韩 欧美 动漫 国产 制服 | 性生交片免费无码看人 | 成人一在线视频日韩国产 | 亚洲国产精品毛片av不卡在线 | 无遮挡啪啪摇乳动态图 | 日韩精品成人一区二区三区 | 久久精品国产日本波多野结衣 | 夜夜躁日日躁狠狠久久av | 成人综合网亚洲伊人 | 黑人玩弄人妻中文在线 | 亚洲色无码一区二区三区 | 内射巨臀欧美在线视频 | 国产激情一区二区三区 | 成人无码视频在线观看网站 | 一个人免费观看的www视频 | 色诱久久久久综合网ywww | 成人亚洲精品久久久久 | 未满小14洗澡无码视频网站 | 欧美怡红院免费全部视频 | 亚洲精品综合一区二区三区在线 | 俄罗斯老熟妇色xxxx | 精品欧洲av无码一区二区三区 | 99久久人妻精品免费一区 | 免费看少妇作爱视频 | 国产激情艳情在线看视频 | 亚洲精品一区二区三区在线观看 | 国产小呦泬泬99精品 | 99国产欧美久久久精品 | 精品无码一区二区三区的天堂 | 人人妻人人澡人人爽欧美一区九九 | 久久99国产综合精品 | 国产黄在线观看免费观看不卡 | 国产精品资源一区二区 | 久久久精品人妻久久影视 | 一个人免费观看的www视频 | 中文字幕精品av一区二区五区 | 丰满少妇人妻久久久久久 | 中文字幕久久久久人妻 | 人人澡人人妻人人爽人人蜜桃 | 中文精品无码中文字幕无码专区 | 欧洲欧美人成视频在线 | 无码国产激情在线观看 | 亚洲 a v无 码免 费 成 人 a v | 国产精品第一国产精品 | 久久久久免费精品国产 | 国产在线aaa片一区二区99 | 日日麻批免费40分钟无码 | 亚洲欧美中文字幕5发布 | 免费国产黄网站在线观看 | 人人妻人人澡人人爽欧美一区九九 | 荫蒂被男人添的好舒服爽免费视频 | 日韩精品a片一区二区三区妖精 | 男女作爱免费网站 | 六十路熟妇乱子伦 | 国产亚洲精品久久久ai换 | 成人无码精品一区二区三区 | 丰满人妻翻云覆雨呻吟视频 | 欧美阿v高清资源不卡在线播放 | 露脸叫床粗话东北少妇 | 亚洲人成影院在线观看 | 两性色午夜视频免费播放 | 欧美成人高清在线播放 | 婷婷六月久久综合丁香 | 特黄特色大片免费播放器图片 | 色 综合 欧美 亚洲 国产 | 天堂а√在线中文在线 | 国产成人精品优优av | 国产舌乚八伦偷品w中 | 亚洲色大成网站www国产 | 88国产精品欧美一区二区三区 | 久久国产精品二国产精品 | 激情综合激情五月俺也去 | 一本久道久久综合狠狠爱 | 天下第一社区视频www日本 | 玩弄中年熟妇正在播放 | 亚洲va欧美va天堂v国产综合 | 久久国产精品_国产精品 | 久久久精品人妻久久影视 | 日本大乳高潮视频在线观看 | 色婷婷av一区二区三区之红樱桃 | 成年女人永久免费看片 | 亚洲精品国产a久久久久久 | 免费看少妇作爱视频 | 国产亚洲精品久久久久久久 | 色婷婷av一区二区三区之红樱桃 | 特级做a爰片毛片免费69 | 久久天天躁狠狠躁夜夜免费观看 | 亚洲一区二区三区含羞草 | 欧美人与禽zoz0性伦交 | 人人妻在人人 | 亚洲国产日韩a在线播放 | 正在播放老肥熟妇露脸 | 精品一区二区不卡无码av | 男人和女人高潮免费网站 | 少妇厨房愉情理9仑片视频 | 日日碰狠狠丁香久燥 | 免费无码肉片在线观看 | 成 人影片 免费观看 | 亚洲第一无码av无码专区 | 少妇高潮一区二区三区99 | 性欧美疯狂xxxxbbbb | 久久99精品久久久久久动态图 | 俄罗斯老熟妇色xxxx | 日日摸夜夜摸狠狠摸婷婷 | 黄网在线观看免费网站 | 国产精品18久久久久久麻辣 | 国内精品人妻无码久久久影院 | 最近中文2019字幕第二页 | 欧美变态另类xxxx | 骚片av蜜桃精品一区 | 日本xxxx色视频在线观看免费 | 亚洲大尺度无码无码专区 | 日本精品人妻无码免费大全 | 99久久人妻精品免费二区 | 欧美日韩人成综合在线播放 | 丁香啪啪综合成人亚洲 | 中国大陆精品视频xxxx | 久久99热只有频精品8 | 午夜男女很黄的视频 | 久久久久国色av免费观看性色 | 亚洲天堂2017无码 | 男人的天堂av网站 | 中文字幕乱码人妻二区三区 | 无码人妻少妇伦在线电影 | 精品国产福利一区二区 | 亚洲国产精品久久久久久 | 性欧美videos高清精品 | 久久精品国产一区二区三区肥胖 | ass日本丰满熟妇pics | 亚洲中文字幕在线观看 | 午夜肉伦伦影院 | 玩弄中年熟妇正在播放 | 亚洲熟妇色xxxxx亚洲 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产va免费精品观看 | 欧美三级不卡在线观看 | 色综合久久中文娱乐网 | 成人无码精品1区2区3区免费看 | 欧美国产日产一区二区 | 国产明星裸体无码xxxx视频 | 东京一本一道一二三区 | 亚洲精品久久久久久一区二区 | 国产在热线精品视频 | 久久亚洲精品成人无码 | 国产极品视觉盛宴 | 欧洲精品码一区二区三区免费看 | 精品亚洲成av人在线观看 | 丰满肥臀大屁股熟妇激情视频 | 国产真人无遮挡作爱免费视频 | 亚洲国产综合无码一区 | 亚洲精品成人福利网站 | 玩弄人妻少妇500系列视频 | 妺妺窝人体色www婷婷 | 成人亚洲精品久久久久软件 | 亚洲 a v无 码免 费 成 人 a v | 国产精品福利视频导航 | 国产精品人人爽人人做我的可爱 | 无码帝国www无码专区色综合 | 任你躁在线精品免费 | 亚洲国产精华液网站w | 牛和人交xxxx欧美 | 亚洲午夜无码久久 | а天堂中文在线官网 | 无码免费一区二区三区 | 鲁鲁鲁爽爽爽在线视频观看 | 纯爱无遮挡h肉动漫在线播放 | 亚洲精品美女久久久久久久 | 最近免费中文字幕中文高清百度 | 日本又色又爽又黄的a片18禁 | 久久天天躁狠狠躁夜夜免费观看 | 中文字幕 人妻熟女 | 亚洲国产综合无码一区 | 国产乱人伦偷精品视频 | 免费人成在线视频无码 | 男女猛烈xx00免费视频试看 | 又紧又大又爽精品一区二区 | 好屌草这里只有精品 | 亚洲国产午夜精品理论片 | 天天摸天天透天天添 | 美女张开腿让人桶 | 日本熟妇乱子伦xxxx | 小鲜肉自慰网站xnxx | 国产猛烈高潮尖叫视频免费 | 日韩人妻系列无码专区 | 乱人伦人妻中文字幕无码久久网 | 免费无码肉片在线观看 | 久久无码中文字幕免费影院蜜桃 | 少妇无码一区二区二三区 | 99久久久无码国产aaa精品 | 亚洲gv猛男gv无码男同 | 亚洲а∨天堂久久精品2021 | 人人澡人人妻人人爽人人蜜桃 | 波多野42部无码喷潮在线 | 国产亚洲精品精品国产亚洲综合 | 亚洲精品无码人妻无码 | 男女爱爱好爽视频免费看 | 亚洲欧美综合区丁香五月小说 | 成人免费视频视频在线观看 免费 | 成人aaa片一区国产精品 | 亚洲成av人在线观看网址 | 女人被爽到呻吟gif动态图视看 | 极品尤物被啪到呻吟喷水 | 啦啦啦www在线观看免费视频 | 人妻少妇精品久久 | 午夜福利不卡在线视频 | 中文无码成人免费视频在线观看 | 精品 日韩 国产 欧美 视频 | 黑人粗大猛烈进出高潮视频 | 一本无码人妻在中文字幕免费 | 中文字幕+乱码+中文字幕一区 | 亚洲人成无码网www | 88国产精品欧美一区二区三区 | 在教室伦流澡到高潮hnp视频 | 波多野结衣乳巨码无在线观看 | 日本熟妇浓毛 | 97夜夜澡人人双人人人喊 | 亚洲小说图区综合在线 | 色一情一乱一伦一视频免费看 | 乱码午夜-极国产极内射 | 福利一区二区三区视频在线观看 | 久久国产36精品色熟妇 | 无套内射视频囯产 | 国产综合色产在线精品 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 国产莉萝无码av在线播放 | 色一情一乱一伦 | 国产无遮挡又黄又爽免费视频 | 东京热男人av天堂 | 成熟妇人a片免费看网站 | 成人av无码一区二区三区 | 欧美午夜特黄aaaaaa片 | 精品水蜜桃久久久久久久 | 色老头在线一区二区三区 | 女人被爽到呻吟gif动态图视看 | 欧美精品一区二区精品久久 | 国产激情艳情在线看视频 | 久久人人97超碰a片精品 | 国产亲子乱弄免费视频 | 欧美兽交xxxx×视频 | 成年女人永久免费看片 | 澳门永久av免费网站 | 亚洲成a人一区二区三区 | 一个人免费观看的www视频 | 性啪啪chinese东北女人 | 亚洲精品午夜无码电影网 | 久久熟妇人妻午夜寂寞影院 | 国产做国产爱免费视频 | 亚洲成av人影院在线观看 | 又粗又大又硬毛片免费看 | 中文久久乱码一区二区 | 国产国产精品人在线视 | 国产精品a成v人在线播放 | 少妇被粗大的猛进出69影院 | 久久综合狠狠综合久久综合88 | 国产成人人人97超碰超爽8 | 亚洲色欲久久久综合网东京热 | 激情综合激情五月俺也去 | 欧美喷潮久久久xxxxx | 国产精品对白交换视频 | 欧美性猛交内射兽交老熟妇 | 狠狠色噜噜狠狠狠狠7777米奇 | 久久精品国产一区二区三区 | 97资源共享在线视频 | 99久久人妻精品免费二区 | 久久99精品久久久久久动态图 | 亚洲欧美国产精品久久 | 精品国产成人一区二区三区 | 国产人妻久久精品二区三区老狼 | 中文字幕乱码中文乱码51精品 | 亚洲精品中文字幕 | 少妇太爽了在线观看 | 国产超碰人人爽人人做人人添 | 无码人妻出轨黑人中文字幕 | 无码国产激情在线观看 | 亚洲成av人片天堂网无码】 | 亚洲精品无码国产 | 无遮挡啪啪摇乳动态图 | 亚洲精品成a人在线观看 | 久久久久久久久888 | 丝袜美腿亚洲一区二区 | 色婷婷av一区二区三区之红樱桃 | 亚洲自偷自偷在线制服 | 又大又硬又黄的免费视频 | 亚洲综合无码久久精品综合 | 免费观看又污又黄的网站 | 美女毛片一区二区三区四区 | 兔费看少妇性l交大片免费 | 日本爽爽爽爽爽爽在线观看免 | 伊人久久大香线蕉亚洲 | 久久精品中文闷骚内射 | 色婷婷av一区二区三区之红樱桃 | 大肉大捧一进一出视频出来呀 | 在线欧美精品一区二区三区 | 色欲综合久久中文字幕网 | av无码不卡在线观看免费 | 国产性生大片免费观看性 | 乱人伦人妻中文字幕无码久久网 | 亚洲成av人片天堂网无码】 | 久久97精品久久久久久久不卡 | 亚洲人交乣女bbw | 精品国偷自产在线视频 | 亚洲精品久久久久中文第一幕 | 国产一区二区三区精品视频 | 亚洲日韩一区二区三区 | 久久久国产精品无码免费专区 | 欧美三级a做爰在线观看 | 精品少妇爆乳无码av无码专区 | 欧美黑人乱大交 | 亚洲精品国产品国语在线观看 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 国产av无码专区亚洲a∨毛片 | 日韩欧美中文字幕在线三区 | 九九综合va免费看 | 欧美日韩一区二区综合 | 国产精品igao视频网 | 亚洲熟悉妇女xxx妇女av | 欧美性黑人极品hd | 一本久道久久综合婷婷五月 | 久久久久se色偷偷亚洲精品av | 国产真实伦对白全集 | 成人无码视频在线观看网站 | 爆乳一区二区三区无码 | 日本精品高清一区二区 | 一本无码人妻在中文字幕免费 | 国产亚洲日韩欧美另类第八页 | 亚洲色无码一区二区三区 | 亚洲中文字幕在线无码一区二区 | 又粗又大又硬又长又爽 | 97色伦图片97综合影院 | 性欧美牲交xxxxx视频 | 日日摸夜夜摸狠狠摸婷婷 | 亚洲码国产精品高潮在线 | 天海翼激烈高潮到腰振不止 | 日韩人妻无码中文字幕视频 | 亚洲精品国产精品乱码不卡 | 国产精品美女久久久网av | 青春草在线视频免费观看 | aⅴ亚洲 日韩 色 图网站 播放 | 99国产精品白浆在线观看免费 | 亚洲国产精品无码一区二区三区 | 国产成人一区二区三区在线观看 | 少妇一晚三次一区二区三区 | 无码人中文字幕 | aⅴ亚洲 日韩 色 图网站 播放 | 大屁股大乳丰满人妻 | 少妇被黑人到高潮喷出白浆 | 无码福利日韩神码福利片 | 人人妻人人澡人人爽欧美一区九九 | 亚洲熟妇色xxxxx欧美老妇y | ass日本丰满熟妇pics | 99久久亚洲精品无码毛片 | 熟女俱乐部五十路六十路av | 在线天堂新版最新版在线8 | 亚洲午夜无码久久 | 在线播放无码字幕亚洲 | 欧美精品在线观看 | 久久久久亚洲精品男人的天堂 | 又大又紧又粉嫩18p少妇 | 国产精品香蕉在线观看 | 欧美熟妇另类久久久久久多毛 | 中文字幕日韩精品一区二区三区 | 性色欲网站人妻丰满中文久久不卡 | 日韩av无码中文无码电影 | 中文字幕 人妻熟女 | 欧美黑人巨大xxxxx | 在教室伦流澡到高潮hnp视频 | 欧洲熟妇色 欧美 | 在线天堂新版最新版在线8 | 呦交小u女精品视频 | 九九在线中文字幕无码 | 国产激情无码一区二区app | 一二三四社区在线中文视频 | 久久久久久久女国产乱让韩 | 国产精品自产拍在线观看 | 中文无码成人免费视频在线观看 | 日韩人妻少妇一区二区三区 | 漂亮人妻洗澡被公强 日日躁 | 国产亲子乱弄免费视频 | 国产无套粉嫩白浆在线 | 亚洲成色www久久网站 | 成在人线av无码免费 | 欧美人与善在线com | 日本成熟视频免费视频 | 熟女少妇在线视频播放 | 无码av岛国片在线播放 | 7777奇米四色成人眼影 | 国产精品久久久久9999小说 | 男女下面进入的视频免费午夜 | 午夜免费福利小电影 | 久久99精品国产麻豆蜜芽 | 国产超级va在线观看视频 | 99久久精品国产一区二区蜜芽 | 国产精品内射视频免费 | 97无码免费人妻超级碰碰夜夜 | 人妻少妇精品无码专区动漫 | 色综合久久久无码中文字幕 | 无码午夜成人1000部免费视频 | 国产免费久久久久久无码 | 漂亮人妻洗澡被公强 日日躁 | 国产精品亚洲综合色区韩国 | 永久免费观看美女裸体的网站 | 久久久无码中文字幕久... | 波多野42部无码喷潮在线 | 西西人体www44rt大胆高清 | 天堂久久天堂av色综合 | 欧美怡红院免费全部视频 | 国产无遮挡吃胸膜奶免费看 | 亚洲精品一区二区三区四区五区 | 成人性做爰aaa片免费看 | 亚洲大尺度无码无码专区 | 日韩无套无码精品 | 一本久道久久综合婷婷五月 | 美女毛片一区二区三区四区 | 亚洲国产精品久久久久久 | 免费无码一区二区三区蜜桃大 | 国产超碰人人爽人人做人人添 | 亚洲无人区一区二区三区 | 男人扒开女人内裤强吻桶进去 | 人妻有码中文字幕在线 | 亚洲人成影院在线无码按摩店 | 国产特级毛片aaaaaa高潮流水 | 性做久久久久久久免费看 | 久久99国产综合精品 | 无码人妻丰满熟妇区毛片18 | 九九在线中文字幕无码 | 亚洲日韩精品欧美一区二区 | 窝窝午夜理论片影院 | 国内精品人妻无码久久久影院蜜桃 | 欧美变态另类xxxx | 亚洲精品鲁一鲁一区二区三区 | 国产av剧情md精品麻豆 | 亚洲国产欧美日韩精品一区二区三区 | 精品 日韩 国产 欧美 视频 | 亚洲成a人片在线观看无码3d | 亚洲精品一区二区三区大桥未久 | 日本爽爽爽爽爽爽在线观看免 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 性生交大片免费看女人按摩摩 | 国内老熟妇对白xxxxhd | 欧美日本免费一区二区三区 | 国产精品久久久久久亚洲毛片 | 亚洲欧美日韩国产精品一区二区 | 精品一区二区不卡无码av | 久久无码中文字幕免费影院蜜桃 | 久久亚洲精品中文字幕无男同 | 女人被男人爽到呻吟的视频 | 国产激情无码一区二区app | 国产欧美亚洲精品a | 亚洲色欲久久久综合网东京热 | 久久人人爽人人爽人人片ⅴ | 大胆欧美熟妇xx | 18精品久久久无码午夜福利 | 精品久久综合1区2区3区激情 | 久久熟妇人妻午夜寂寞影院 | 性色欲情网站iwww九文堂 | 国产激情一区二区三区 | 无码人妻少妇伦在线电影 | 色 综合 欧美 亚洲 国产 | 亚洲成av人影院在线观看 | 国产成人精品久久亚洲高清不卡 | 内射老妇bbwx0c0ck | 亚洲国产精品一区二区第一页 | 青草视频在线播放 | 国模大胆一区二区三区 | 国产激情精品一区二区三区 | 久久亚洲中文字幕无码 | 久久午夜夜伦鲁鲁片无码免费 | 黑人玩弄人妻中文在线 | 亚洲国产精品久久久久久 | 日韩视频 中文字幕 视频一区 | 国产真人无遮挡作爱免费视频 | 六十路熟妇乱子伦 | 欧洲精品码一区二区三区免费看 | 中文字幕无码人妻少妇免费 | 国产午夜无码精品免费看 | a片免费视频在线观看 | 国产精品久久福利网站 | 日本精品少妇一区二区三区 | 国产无套粉嫩白浆在线 | 久久精品女人的天堂av | 水蜜桃色314在线观看 | 国产精品内射视频免费 | 欧洲熟妇精品视频 | 少妇性l交大片欧洲热妇乱xxx | 亚洲综合伊人久久大杳蕉 | 国产偷国产偷精品高清尤物 | 亚洲色欲久久久综合网东京热 | 无码国产激情在线观看 | 色综合久久88色综合天天 | 蜜桃无码一区二区三区 | 国产成人综合美国十次 | 免费观看又污又黄的网站 | 欧美变态另类xxxx | 亚洲精品欧美二区三区中文字幕 | 欧美国产日韩亚洲中文 | 高清国产亚洲精品自在久久 | 色情久久久av熟女人妻网站 | 在线观看免费人成视频 | 精品国产乱码久久久久乱码 | 中文字幕乱码中文乱码51精品 | 亚洲精品久久久久avwww潮水 | 亚洲国产成人a精品不卡在线 | 乱中年女人伦av三区 | 一本色道久久综合狠狠躁 | 亚洲精品中文字幕乱码 | 久久久中文字幕日本无吗 | 97资源共享在线视频 | 自拍偷自拍亚洲精品10p | 一本无码人妻在中文字幕免费 | 狠狠色噜噜狠狠狠狠7777米奇 | 伊人久久大香线蕉午夜 | 日日天日日夜日日摸 | 国产午夜无码精品免费看 | 精品日本一区二区三区在线观看 | 夜夜夜高潮夜夜爽夜夜爰爰 | 精品国产精品久久一区免费式 | 国内精品一区二区三区不卡 | 中文字幕精品av一区二区五区 | 午夜福利一区二区三区在线观看 | 国产免费观看黄av片 | 久久精品一区二区三区四区 | 欧美亚洲日韩国产人成在线播放 | 人人妻人人澡人人爽欧美一区 | 国产成人精品三级麻豆 | 少妇人妻大乳在线视频 | 熟妇人妻激情偷爽文 | 亚洲综合无码一区二区三区 | 乌克兰少妇性做爰 | 国产精品毛片一区二区 | √天堂资源地址中文在线 | 国产精品久久国产三级国 | 国语自产偷拍精品视频偷 | 好爽又高潮了毛片免费下载 | 女人被男人躁得好爽免费视频 | 日韩人妻无码中文字幕视频 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 波多野结衣乳巨码无在线观看 | 无码人妻丰满熟妇区毛片18 | 国产成人亚洲综合无码 | 国产高清不卡无码视频 | 国产av无码专区亚洲a∨毛片 | 最新国产乱人伦偷精品免费网站 | 午夜精品久久久久久久 | 18黄暴禁片在线观看 | 妺妺窝人体色www在线小说 | 久久精品一区二区三区四区 | 无码一区二区三区在线观看 | 久久综合给合久久狠狠狠97色 | 中文字幕av伊人av无码av | 亚洲中文字幕久久无码 | 精品人妻人人做人人爽夜夜爽 | 亚洲大尺度无码无码专区 | 国产凸凹视频一区二区 | 亚洲国产一区二区三区在线观看 | 中文字幕亚洲情99在线 | 久久久久亚洲精品男人的天堂 | 精品久久综合1区2区3区激情 | 综合激情五月综合激情五月激情1 | 国产精品对白交换视频 | 97久久国产亚洲精品超碰热 | 六十路熟妇乱子伦 | 亚洲精品中文字幕 | 亚洲爆乳无码专区 | 乌克兰少妇xxxx做受 | 欧美精品无码一区二区三区 | 国产精品人妻一区二区三区四 | 久久久久成人片免费观看蜜芽 | 亚洲成av人片天堂网无码】 | 小泽玛莉亚一区二区视频在线 | 欧洲熟妇色 欧美 | 99久久久无码国产精品免费 | 少妇性l交大片 | 美女极度色诱视频国产 | 国产av无码专区亚洲a∨毛片 | 狠狠色噜噜狠狠狠狠7777米奇 | 一本久道久久综合婷婷五月 | 正在播放老肥熟妇露脸 | 久久国产劲爆∧v内射 | 在线观看免费人成视频 | 无码人妻av免费一区二区三区 | 欧美野外疯狂做受xxxx高潮 | 国产av无码专区亚洲a∨毛片 | 国产麻豆精品一区二区三区v视界 | 国产69精品久久久久app下载 | 麻花豆传媒剧国产免费mv在线 | 国产人妻大战黑人第1集 | 一二三四在线观看免费视频 | 日本爽爽爽爽爽爽在线观看免 | 亚洲 激情 小说 另类 欧美 | 免费无码肉片在线观看 | 国产卡一卡二卡三 | 一个人看的www免费视频在线观看 | 国内精品一区二区三区不卡 | 亚洲高清偷拍一区二区三区 | 国产9 9在线 | 中文 | 欧美freesex黑人又粗又大 | 亚洲成av人影院在线观看 | 亚洲一区二区三区香蕉 | 国内精品人妻无码久久久影院蜜桃 | 一本大道伊人av久久综合 | 亚洲成a人片在线观看日本 | √8天堂资源地址中文在线 | 最近免费中文字幕中文高清百度 | 国产精品亚洲专区无码不卡 | 日本一卡二卡不卡视频查询 | 精品国产麻豆免费人成网站 | 国产av无码专区亚洲a∨毛片 | 国产偷国产偷精品高清尤物 | 在线亚洲高清揄拍自拍一品区 | 国产精品-区区久久久狼 | 十八禁视频网站在线观看 | 久久精品人人做人人综合试看 | 日本丰满护士爆乳xxxx | 亚洲精品一区二区三区大桥未久 | 国产超碰人人爽人人做人人添 | 欧美熟妇另类久久久久久不卡 | 亚洲精品无码人妻无码 | 少妇被黑人到高潮喷出白浆 | 中文字幕av无码一区二区三区电影 | 久久精品人人做人人综合试看 | 熟女少妇在线视频播放 | 人人澡人人透人人爽 | 麻豆果冻传媒2021精品传媒一区下载 | 午夜丰满少妇性开放视频 | 亚洲の无码国产の无码步美 | 亚洲国产综合无码一区 | 少妇被粗大的猛进出69影院 | 在线观看国产一区二区三区 | 男女下面进入的视频免费午夜 | 67194成是人免费无码 | 国产精品无码一区二区桃花视频 | 国产超级va在线观看视频 | 最新国产麻豆aⅴ精品无码 | 亚洲午夜无码久久 | 国产真人无遮挡作爱免费视频 | 亚洲精品一区二区三区在线观看 | 在线观看国产午夜福利片 | 131美女爱做视频 | 99久久人妻精品免费一区 | 无人区乱码一区二区三区 | 国产在线精品一区二区高清不卡 | 正在播放老肥熟妇露脸 | 久久亚洲精品中文字幕无男同 | 爽爽影院免费观看 | 亚洲国产精品一区二区第一页 | 久久精品中文闷骚内射 | 亚洲熟妇色xxxxx亚洲 | 18禁止看的免费污网站 | 中文字幕乱妇无码av在线 | 青草视频在线播放 | 免费乱码人妻系列无码专区 | 日日天日日夜日日摸 | 国产色xx群视频射精 | 欧美亚洲日韩国产人成在线播放 | 99riav国产精品视频 | 99久久婷婷国产综合精品青草免费 | 日韩人妻无码一区二区三区久久99 | 最新国产乱人伦偷精品免费网站 | 久久精品国产亚洲精品 | 久久久久人妻一区精品色欧美 | 色欲久久久天天天综合网精品 | 性生交大片免费看女人按摩摩 | 精品成在人线av无码免费看 | 东京无码熟妇人妻av在线网址 | 国模大胆一区二区三区 | 午夜理论片yy44880影院 | 欧美兽交xxxx×视频 | 久久久久av无码免费网 | 在线看片无码永久免费视频 | 精品国产精品久久一区免费式 | 在线看片无码永久免费视频 | 免费无码午夜福利片69 | 免费视频欧美无人区码 | 色五月五月丁香亚洲综合网 | 国产麻豆精品一区二区三区v视界 | 国产偷抇久久精品a片69 | 在线欧美精品一区二区三区 | 正在播放老肥熟妇露脸 | 精品人妻中文字幕有码在线 | 国产精品毛片一区二区 | 亚洲成av人影院在线观看 | 亚洲区欧美区综合区自拍区 | 中文字幕人妻丝袜二区 | 亚洲日韩中文字幕在线播放 | 中文字幕色婷婷在线视频 | 娇妻被黑人粗大高潮白浆 | 麻豆av传媒蜜桃天美传媒 | 55夜色66夜色国产精品视频 | 中文字幕av无码一区二区三区电影 | 久久综合久久自在自线精品自 | 久久久中文久久久无码 | 国产精品国产三级国产专播 | 久久zyz资源站无码中文动漫 | 一本色道久久综合狠狠躁 | 亚洲国产综合无码一区 | 久久综合久久自在自线精品自 | 粗大的内捧猛烈进出视频 | 欧美日韩综合一区二区三区 | 中文字幕+乱码+中文字幕一区 | 一本久道高清无码视频 | 中文字幕无码人妻少妇免费 | www成人国产高清内射 | 日本精品人妻无码免费大全 | 成人免费无码大片a毛片 | 极品尤物被啪到呻吟喷水 | 亚洲精品美女久久久久久久 | 99久久99久久免费精品蜜桃 | 久久精品女人的天堂av | 熟女少妇在线视频播放 | 欧美性猛交内射兽交老熟妇 | 激情五月综合色婷婷一区二区 | 两性色午夜免费视频 | 成在人线av无码免观看麻豆 | 亚洲欧美国产精品久久 | 成人免费视频一区二区 | 国产精品毛多多水多 | 无码精品人妻一区二区三区av | 中文字幕无码日韩欧毛 | 无遮挡啪啪摇乳动态图 | 精品国偷自产在线视频 | 丰满人妻精品国产99aⅴ | 国产精品99爱免费视频 | 图片区 小说区 区 亚洲五月 | 图片区 小说区 区 亚洲五月 | 九九热爱视频精品 | 任你躁在线精品免费 | 国内精品人妻无码久久久影院 | 麻豆成人精品国产免费 | 中文字幕久久久久人妻 | 狠狠色噜噜狠狠狠7777奇米 | 欧美亚洲国产一区二区三区 | 免费乱码人妻系列无码专区 | 又色又爽又黄的美女裸体网站 | 狠狠色噜噜狠狠狠7777奇米 | 少妇性l交大片欧洲热妇乱xxx | 日本精品少妇一区二区三区 | 在线播放无码字幕亚洲 | 99视频精品全部免费免费观看 | 久久久久国色av免费观看性色 | 宝宝好涨水快流出来免费视频 | 伊在人天堂亚洲香蕉精品区 | 色诱久久久久综合网ywww | 成人一区二区免费视频 | 四虎国产精品免费久久 | 午夜男女很黄的视频 | 亚洲日本va午夜在线电影 | 国产av一区二区精品久久凹凸 | 国产成人无码av片在线观看不卡 | 日韩少妇内射免费播放 | 精品人妻人人做人人爽夜夜爽 | 国产熟女一区二区三区四区五区 | 中文字幕无线码免费人妻 | 亚洲国产日韩a在线播放 | 精品一区二区三区无码免费视频 | 精品亚洲韩国一区二区三区 | 中文字幕精品av一区二区五区 | 日本一卡2卡3卡四卡精品网站 | 国产av剧情md精品麻豆 | 亚洲成av人片天堂网无码】 | 国产精品欧美成人 | 97色伦图片97综合影院 | 久久久成人毛片无码 | 国产精品内射视频免费 | 亚洲国产精品无码一区二区三区 | 熟妇女人妻丰满少妇中文字幕 | 亚洲一区二区三区在线观看网站 | 国产精品第一区揄拍无码 | 嫩b人妻精品一区二区三区 | 青草青草久热国产精品 | 亚洲欧洲日本综合aⅴ在线 | av无码电影一区二区三区 | 中文字幕av无码一区二区三区电影 | 一本色道久久综合亚洲精品不卡 | 亚洲成av人片天堂网无码】 | 青青青爽视频在线观看 | 中文字幕无线码 | 国产精品无码成人午夜电影 | 欧美 日韩 人妻 高清 中文 | 久久久久久a亚洲欧洲av冫 | 日本熟妇乱子伦xxxx | 鲁大师影院在线观看 | 少妇的肉体aa片免费 | 国产精品亚洲а∨无码播放麻豆 | 欧美日韩精品 | 亚洲精品国偷拍自产在线观看蜜桃 | 在线精品亚洲一区二区 | 亚洲国产精品一区二区美利坚 | 午夜福利不卡在线视频 | 国产综合在线观看 | 国产成人无码午夜视频在线观看 | аⅴ资源天堂资源库在线 | 精品无码一区二区三区爱欲 | 亚洲成a人片在线观看无码3d | 久久精品人妻少妇一区二区三区 | 国产两女互慰高潮视频在线观看 | 国产一区二区三区四区五区加勒比 | 性色欲情网站iwww九文堂 | 99久久人妻精品免费一区 | 人妻少妇精品久久 | 日韩无套无码精品 | 欧美猛少妇色xxxxx | 国产亚洲欧美在线专区 | 久久人妻内射无码一区三区 | 欧美xxxx黑人又粗又长 | 男人和女人高潮免费网站 | 久久99精品久久久久久动态图 | 自拍偷自拍亚洲精品10p | 国产麻豆精品一区二区三区v视界 | 东北女人啪啪对白 | 大地资源网第二页免费观看 | 久久综合给久久狠狠97色 | 精品人妻人人做人人爽 | 国产美女精品一区二区三区 | 亚洲日本一区二区三区在线 | 欧美 丝袜 自拍 制服 另类 | 国产人妻精品一区二区三区 | 粉嫩少妇内射浓精videos | 国产精品亚洲五月天高清 | 国产av一区二区三区最新精品 | 日本高清一区免费中文视频 | 亚洲精品美女久久久久久久 | 亚洲啪av永久无码精品放毛片 | 久久精品国产一区二区三区 | 激情爆乳一区二区三区 | 欧美成人高清在线播放 | 国产高清不卡无码视频 | 狠狠亚洲超碰狼人久久 | 欧美熟妇另类久久久久久多毛 | 国内精品人妻无码久久久影院蜜桃 | 国产手机在线αⅴ片无码观看 | 亚洲欧洲中文日韩av乱码 | 狂野欧美性猛xxxx乱大交 | 亚洲a无码综合a国产av中文 | 亚洲日韩av一区二区三区中文 | 欧美 日韩 人妻 高清 中文 | 国内揄拍国内精品少妇国语 | 精品无码国产一区二区三区av | 99久久精品无码一区二区毛片 | 日韩人妻无码中文字幕视频 | 中文字幕精品av一区二区五区 | 色综合久久久久综合一本到桃花网 | 欧美丰满熟妇xxxx | 台湾无码一区二区 | 又大又紧又粉嫩18p少妇 | 日韩少妇内射免费播放 | 国产美女精品一区二区三区 | 熟妇激情内射com | 国产av无码专区亚洲awww | 国产高潮视频在线观看 | 无码乱肉视频免费大全合集 | 天堂亚洲免费视频 | 国产绳艺sm调教室论坛 | 国产精品理论片在线观看 | 精品国产福利一区二区 | 国产成人精品视频ⅴa片软件竹菊 | 精品国产一区二区三区av 性色 | 亚洲国产精品成人久久蜜臀 | 国内少妇偷人精品视频免费 | 漂亮人妻洗澡被公强 日日躁 | 国产猛烈高潮尖叫视频免费 | 日本va欧美va欧美va精品 | 亚洲精品无码国产 | 国产精品久久久久7777 | 日本大香伊一区二区三区 | 色婷婷综合中文久久一本 | 欧美野外疯狂做受xxxx高潮 | 免费无码av一区二区 | 自拍偷自拍亚洲精品被多人伦好爽 | 日韩精品成人一区二区三区 | 在线欧美精品一区二区三区 | 久久综合给久久狠狠97色 | 久激情内射婷内射蜜桃人妖 | 高清不卡一区二区三区 | 久久亚洲中文字幕精品一区 | 蜜桃臀无码内射一区二区三区 | 一本色道久久综合亚洲精品不卡 | 国产精品a成v人在线播放 | 国内综合精品午夜久久资源 |