日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

一篇文章入门Mysql

發布時間:2024/3/12 数据库 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一篇文章入门Mysql 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 01數據庫的用途
    • 02 娛樂化講解表關系
    • 03.mysql 數據庫安裝
    • 04數據語句操作類型
    • 05. 連接數據庫
    • 06. 數據庫結構定義語句
    • 07. 類型、字符集、引擎和索引
    • 08. 增刪改查
    • 09. DCL語句
    • 10. 常用工具簡介
    • 附錄1 . 學習MySQL常用的英文單詞

01數據庫的用途

  • 身份證信息放在公安部的系統
  • 銀行卡的余額和交易記錄、轉帳信息
  • 酒店的開房信息(所有出現了某些方面的數據庫被盜和信息泄漏)
  • 飛機、火車、汽車聯網購票記錄
  • 各個不同的網站、QQ、網上購物、貼吧、喜歡聽的音樂、電影的收藏信息
  • 手機電話機錄、余額、公交卡余額、水費、電費、彩票的購買記錄
  • 打游戲的裝備、等級、魔力、力量、攻擊能力等信息
  • 美國航空母艦也在使用mysql數據庫在管理航母的相關信息

┌──────────────┐
│ application │
└──────────────┘
▲│
││
read││write
││
│▼
┌──────────────┐
│ database │
└──────────────┘

數據模型
數據庫按照數據結構來組織、存儲和管理數據,實際上,數據庫一共有三種模型:

  • 層次模型
  • 網狀模型
  • 關系模型
    層次模型就是以“上下級”的層次關系來組織數據的一種方式,層次模型的數據結構看起來就像一顆。
    網狀模型把每個數據節點和其他很多節點都連接起來,它的數據結構看起來就像很多城市之間的路
    關系模型把數據看作是一個二維表格,任何數據都可以通過行號+列號來唯一確定,它的數據模型看起來就是一個Excel表
    我們以學校班級為例,一個班級的學生就可以用一個表格存起來,并且定義如下:

ID 姓名 班級ID 性別 年齡
1 小明 201 M 9
2 小紅 202 F 8
3 小軍 202 M 8
4 小白 201 F 9
其中,班級ID對應著另一個班級表:

ID 名稱 班主任
201 二年級一班 王老師
202 二年級二班 李老師
通過給定一個班級名稱,可以查到一條班級記錄,根據班級ID,又可以查到多條學生記錄,這樣,二維表之間就通過ID映射建立了“一對多”關系。

數據類型
對于一個關系表,除了定義每一列的名稱外,還需要定義每一列的數據類型。關系數據庫支持的標準數據類型包括數值、字符串、時間等:

名稱類型說明
INT整型4字節整數類型,范圍約+/-21億
BIGINT長整型8字節整數類型,范圍約+/-922億億
REAL浮點型4字節浮點數,范圍約+/-1038
DOUBLE浮點型8字節浮點數,范圍約+/-10308
DECIMAL(M,N)高精度小數由用戶指定精度的小數,例如,DECIMAL(20,10)表示一共20位,其中小數10位,通常用于財務計算
CHAR(N)定長字符串存儲指定長度的字符串,例如,CHAR(100)總是存儲100個字符的字符串
VARCHAR(N)變長字符串存儲可變長度的字符串,例如,VARCHAR(100)可以存儲0~100個字符的字符串
BOOLEAN布爾類型存儲True或者False
DATE日期類型存儲日期,例如,2018-06-22
TIME時間類型存儲時間,例如,12:20:59
DATETIME日期和時間類型存儲日期+時間,例如,2018-06-22 12:20:59

上面的表中列舉了最常用的數據類型。很多數據類型還有別名,例如,REAL又可以寫成FLOAT(24)。還有一些不常用的數據類型,例如,TINYINT(范圍在0~255)。各數據庫廠商還會支持特定的數據類型,例如JSON。

選擇數據類型的時候,要根據業務規則選擇合適的類型。通常來說,BIGINT能滿足整數存儲的需求,VARCHAR(N)能滿足字符串存儲的需求,這兩種類型是使用最廣泛的。

主流關系數據庫
目前,主流的關系數據庫主要分為以下幾類:
商用數據庫,例如:Oracle,SQL Server,DB2等;
開源數據庫,例如:MySQL,PostgreSQL等;
桌面數據庫,以微軟Access為代表,適合桌面應用程序使用;
嵌入式數據庫,以Sqlite為代表,適合手機應用和桌面程序。

02 娛樂化講解表關系

學計算機的男孩、女孩現在都挺多。特別是80、90后互聯網原住民,很多人都特別愛玩游戲。我們通過游戲里面的用戶裝備信息講解表的關系。

銀行取錢、轉賬、發紅包也是我們日常中最常用銀行卡操作,我們還用銀行卡的存取講解表的關系。

游戲里裝備和用戶的關系
在游戲里面的某個人物有頭盔、衣服、靴子、武器、項鏈。
并且,每一個不同的武器會增加上不同的攻防值。那我們就可以這么來模擬游戲的表設計。

注:以下僅為了讓大家更加理解游戲里、用戶和裝備的關系。


用戶表中骷髏王帶上了裝備表中編號為1(死亡面具)和使用了編號為6(魔棒)的武器。

而用戶3(半人馬),使用了裝備表中編號為3(的速度之靴)和7(幽魂權杖)。
這樣就實現了游戲中某些用戶戴上了裝備。如果用戶的行和列數據里面沒有這個選項的話,則沒有這個數據。
通過裝備的屬性值,與用戶等級屬性值相加就實現了用戶穿上裝備好的回血、防御值增加等不同的效果。

03.mysql 數據庫安裝

XAMPP中的MySQL
若你不是使用的XAMPP安裝包安裝的MySQL服務器請略過此塊。看一塊的《全新安裝MySQL服務器》。

如果你通過《PHP入門圣經》來學習的,我們在安裝時教大家安裝的是XAMPP集成環境包。

在環境包中大家已經將MySQL數據庫服務器安裝好了。不需要再進行安裝。

全新安裝MySQL服務器
MySQL是跨平臺的服務器,windows操作系統下的使用與linux下的使用幾乎一模一樣。
我們將會以windows平臺為基礎來講解MySQL 服務器的安裝。

注:Linux操作系統對很多初學者有困難。并且windows具有最廣泛的用戶,本章講解以windows安裝為主。若您熟悉Linux操作系統,也可自行安裝后接著下面課程的學習。

一、下載安裝包

  • 百度搜索關鍵詞:mysql server下載
  • 訪問官網下載:http://dev.mysql.com/downloads/mysql/

二、打開安裝包,同意協議,下一步

三、選擇服務器安裝
develop 是指服務器為開發機【推薦】
server only只安裝服務器
client only 只安裝客戶操作端
full 全部安裝
custom 自定義




五、服務器參數修改
這一步MySQL server會在界面中顯示,由用戶勾選完成最后的安裝配置文件的自動配置。

其中:Config Type(配置文件類型)
Development Machine 是指開發服務器
Server Machine 服務器
Dedicated Machine 專用服務器僅作為數據庫服務器使用
TCP/IP 是指開放的端口mysql 默認的端口是3306

六、設置密碼
會提示密碼的安全狀態


七、日志文件存放位置確認

  • Bin log是二進制文件
  • Error Log 是指錯誤文件
  • slow Query Log 是慢查詢日志

八、啟動服務

04數據語句操作類型

學習數據庫安裝后,最重要的就是學習SQL語句。
SQL是操作數據庫的核心,也是本章開始的一句話:MySQL對于PHP程序員來說就是將業務轉化成表結構。做好業務中的增、刪、改、查。
結構化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用于存取數據以及查詢、更新和管理關系數據庫系統;同時也是數據庫腳本文件的擴展名。
SQL是最重要的關系數據庫操作語言,并且它的影響已經超出數據庫領域,得到其他領域的重視和采用,如人工智能領域的數據檢索等。
SQL是關系模型的數據庫應用語言,由IBM在20世紀70年代為其關系型數據庫 System R 所開發。
SQL 是1986年10 月由美國國家標準局(ANSI)通過的數據庫語言美國標準,接著,國際標準化組織(ISO)頒布了SQL正式國際標準。1989年4月,ISO提出了具有完整性特征的SQL89標準,1992年11月又公布了SQL92標準。
雖然各個數據庫系統略有不同,但是他們基本均遵循SQL 92標準?;蛘咴赟QL 92上做了一些簡單的擴展和變化。
學好了MySQL 的SQL 語法,其他的SQL語法學習起來均是萬變不離其中。
SQL語句按照其功能范圍不同可分為3個類別:

  • 數據定義語言(DDL ,Data Defintion Language)語句:數據定義語句,用于定義不同的數據段、數據庫、表、列、索引等。常用的語句關鍵字包括create、drop、alter等。
  • 數據操作語言(DML , Data Manipulation Language)語句:數據操縱語句,用于添加、刪除、更新和查詢數據庫記錄,并檢查數據的完整性。常用的語句關鍵字主要包括insert、delete、update和select等。
  • 數據控制語言(DCL, Data Control Language)語句:數據控制語句,用于控制不同數據段直接的許可和訪問級別的語句。這些語句定義了數據庫、表、字段、用戶的訪問權限和安全級別。主要的語句關鍵字包括grant、revoke等。

05. 連接數據庫

方法一
安裝后,可以在開始菜單的列表中找到MySQL Command Line 點擊操作的命令行終端操作。效果如圖:

方法二
如果加入到了windows的環境變量中,可以在命令行下直接操作。
在命令行下,通過以下命可以連接到數據庫服務器:

mysql -h localhost -u root -p

密碼是之前設置的密碼 。 ( -h localhost 參數非必選)
如果沒有什么別的問題,登陸成功之后會出現下面內容:

mysql -u root -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 7Server version: 5.6.25 MySQL Community Server (GPL)Copyright (c) 2000, 2015, 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>

06. 數據庫結構定義語句

DDL是數據定義語言,簡單來說,就是對數據庫、數據表、數據字段進行創建、刪除、修改和操作語言,它和數據操作語句(DML)最大的區別在于DML(數據操作語句)是對表內部數據的操作,不涉及表的定義、結構的修改,也不涉及其他對象。

我們在本章在講解這一塊時將其分為了三塊:
數據庫操作
數據表操作
數據字段操作
06.1
創建數據庫
類別 詳細解示
基本語法

create database 數據庫名;

示例

create database liwenkai;

示例說明:創建一個數庫,數據庫的名字為liwenkai
示例:

mysql> create database liwenkai; Query OK, 1 row affected (0.00 sec)

“Query OK” 表示上面的命令執行成功,所有的 DDL 和 DML(不包 括 SELECT)操作執行成功后都顯示“Query OK”,這里理解為執行成功就可以了;“1 row affected” 表示操作只影響了數據庫中一行的記錄,“0.00 sec”則記錄了操作執行的時間。
如果已經創建過會報錯。

查看數據庫
基本語法:
類別 詳細解示
基本語法

show databases;

示例說明 顯示當前服務器的所有數據庫

注意:show是指顯示database 是指數據庫databases 是數據庫的復數形式,指全部數據庫。

示例:

mysql> show databases; +——————————+| Database |+——————————+| information_schema || mysql || performance_schema || user |+——————————+ 4 rows in set (0.00 sec)

選中數據庫
基本語法:

use 庫名;

示例

use liwenkai;

示例說明: 使用數據庫liwenkai
注意:use 是指使用;庫名 是存在當前數據庫系統中的具體的數據庫的名稱;

示例:

mysql> use liwenkai;Database changed

這樣就進入到了 liwenkai 數據庫中了。當然你可以使用 use 語句隨時切換要操作的數據庫,剛剛選中了liwenkai ,現在我們切換到mysql內容的 mysql 數據庫看看:

mysql> use mysql; Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changed

出現 ” Database changed“ 表示切換成功。然后,看看 mysql數據庫里面有什么內容(和查看當前數據庫服務器數據庫一樣使用 show 語句)

查看數據庫中的表
進入到庫后我們可以看這個庫里面有多少個數據表。
基本語法:

show tables;

示例說明 顯示當前數據庫下所有的表
使用use 進入到某個數據庫后可以使用show tables

示例,查看當前數據庫的表:

mysql> show tables; +—————————————-+| Tables_in_mysql |+—————————————-+| columns_priv || db || event || func || general_log | | help_category || help_keyword || help_relation | | help_topic || innodb_index_stats || innodb_table_stats | | ndb_binlog_index || plugin || proc || procs_priv || proxies_priv | | servers || slave_master_info || slave_relay_log_info || slave_worker_info || slow_log || tables_priv || time_zone || time_zone_leap_second || time_zone_name || time_zone_transition || time_zone_transition_type || user |+—————————————-+ 28 rows in set (0.00 sec)

這些表里面的內容是關系數據庫服務器相關的用戶、權限、數據庫狀態、設置等相關的信息數據。

刪除數據庫

基本語法

drop database 庫名;

示例

drop database liwenkai;

示例說明: 刪除一個數庫,數據庫的名字為liwenkai
注意:drop 是漢語可以翻譯為指掉下來,不要了的意思database 是指庫庫名 是指要刪掉的庫的名稱

示例:

mysql> drop database liwenkai; Query OK, 0 rows affected (0.01 sec)

06.2
創建表
基本語法

create table 表名(字段名1 字段類型,.字段名n 字段類型n);

示例

create table user(username varchar(20),password varchar(32));

示例說明 創建一個表名叫user的表,第一個字段為username、表的字段類型為varchar長度為32個長度。第二個字段為password,類型也為varchar,長度也為32個長度。
注意:

快速學習數據庫的管理和操作語句非常的重要,數據類型、字段、字符集、引擎都屬于了解的知識點。
.字段類型大家現在只需要學會int,代表整型。float,代表浮點。char和varchar代表字符串即可。
我們可以在類型后接上長度如:varchar(20)。
其他示例:

mysql> create table emp(ename varchar(10),hiredate date,sal float(10,2),deptno int(2));Query OK, 0 rows affected (0.63 sec)
mysql> create table dept( deptno int(4), deptname varchar(20)); Query OK, 0 rows affected (0.12 sec)

查看表字段結構信息
基本語法

desc 表名;

示例

desc emp

示例說明 查看emp表的表結構
操作顯示如下:

mysql> desc emp;+—————+———————-+———+——-+————-+———-+| Field | Type | Null | Key | Default | Extra |+—————+———————-+———+——-+————-+———-+| ename | varchar(10) | YES | | NULL | || hiredate | date | YES | | NULL | || sal | decimal(10,2) | YES | | NULL | || deptno | int(2) | YES | | NULL | |+—————+———————-+———+——-+————-+———-+4 rows in set (0.39 sec)

查看表的創建SQL語句查看表創建語句
基本語法

show create table 表名 \G;

示例 show create table emp \G;
示例說明 查看表emp的創建語句
執行完整示例:

mysql> show create table emp \G;Table: empCreate Table: CREATE TABLE emp (ename varchar(10) DEFAULT NULL,hiredate date DEFAULT NULL,sal decimal(10,2) DEFAULT NULL,deptno int(2) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;1 row in set (0.00 sec)ERROR:No query specified

上面表的創建 SQL 語句中,除了可以看到表定義以外,還可以看到表的 engine(存儲引擎) 和 charset(字符集)等信息?!癨G”選項的含義是使得記錄能夠按照字段豎著排列,對于內 容比較長的記錄更易于顯示。

刪除表

基本語法

drop table 表名;

示例

drop table emp;

示例說明 刪除表emp
mysql> drop table emp;Query OK, 0 rows affected (0.34 sec)
注:刪除表。表和數據均會丟失,請勿必刪除重要表之前備份數據。

指定表引擎和字符集
在創建表最后,我們常用MyISAM或者InnoDB引擎。在指定引擎時,我們可以使用:

ENGINE=InnoDB
指定表默認字符集:
DEFAULT CHARSET=utf8
效果如下:

CREATE TABLE emp (useraname varchar(10) DEFAULT NULL,password date DEFAULT NULL,)ENGINE=InnoDB DEFAULT CHARSET=utf8;

06.3
假設我們存在user表,user結構如下:

mysql> desc user;+—————+———————-+———+——-+————-+———-+| Field | Type | Null | Key | Default | Extra |+—————+———————-+———+——-+————-+———-+| username | varchar(10) | YES | | NULL | || password | varchar(32) | YES | | NULL | || createtime | int(10) | YES | | NULL | || createip | int(10) | YES | | NULL | |+—————+———————-+———+——-+————-+———-+4 rows in set (0.01 sec)

修改表字段類型 modify

基本語法

alter table 表名 modify 字段名 varchar(20);

示例

alter table user modify username varchar(20);

示例說明 將user表的username的類型改為varchar(20)
我們執行一下,看看結果:

mysql> alter table user modify username varchar(20);Query OK, 0 rows affected (0.48 sec)Records: 0 Duplicates: 0 Warnings: 0 mysql> desc user;+—————+———————-+———+——-+————-+———-+| Field | Type | Null | Key | Default | Extra |+—————+———————-+———+——-+————-+———-+| username | varchar(20) | YES | | NULL | || password | varchar(32) | YES | | NULL | || createtime | int(10) | YES | | NULL | || createip | int(10) | YES | | NULL | |+—————+———————-+———+——-+————-+———-+4 rows in set (0.01 sec)

增加表字段
基本語法

alter table 表名 add column 字段名 類型;

示例

alter table user add column age int(3);`

示例說明 添加一個字段為age,類型為整型長度為3
mysql> alter table emp add column age int(3);Query OK, 0 rows affected (0.40 sec)Records: 0 Duplicates: 0 Warnings: 0
mysql> desc user;+—————+———————-+———+——-+————-+———-+| Field | Type | Null | Key | Default | Extra |+—————+———————-+———+——-+————-+———-+| username | varchar(20) | YES | | NULL | || password | varchar(32) | YES | | NULL | || createtime | int(10) | YES | | NULL | || createip | int(10) | YES | | NULL | || age | int(3) | YES | | NULL | |+—————+———————-+———+——-+————-+———-+5 rows in set (0.00 sec)

增加字段時控制字段順序
我們剛剛學了增加字段。如果你仔細實驗發現每次都是增加在最后面,如何在第一個增加或者在指字字段之后增加呢?

基本語法

ALTER TABLE 表名 ADD 字段名 字段類型 AFTER 字段名;

示例

ALTER TABLE user ADD email VARCHAR(60) AFTER createip;

示例說明 user表中,在createip后增加一個字段為email,類型為varchar,長度為60

基本語法

ALTER TABLE 表名 ADD 字段名 字段類型;

示例

ALTER TABLE user ADD id INT(10) FIRST;

示例說明 user表中在最開始的位置增加一個字段為id,類型為int,長度為10
mysql>ALTER TABLE user ADD email VARCHAR(60) AFTER createip;Query OK, 0 rows affected (0.40 sec)Records: 0 Duplicates: 0 Warnings: 0
mysql> desc user;+—————+———————-+———+——-+————-+———-+| Field | Type | Null | Key | Default | Extra |+—————+———————-+———+——-+————-+———-+| username | varchar(20) | YES | | NULL | || password | varchar(32) | YES | | NULL | || createtime | int(10) | YES | | NULL | || createip | int(10) | YES | | NULL | || email | varchar(60) | YES | | NULL | || age | int(3) | YES | | NULL | |+—————+———————-+———+——-+————-+———-+6 rows in set (0.00 sec)

刪除表字段

基本語法

alter table 表名 drop column 字段名;

示例

alter table user drop column age;

示例說明 在user表中刪除字段age
mysql> alter table user drop column age;Query OK, 0 rows affected (0.27 sec)Records: 0 Duplicates: 0 Warnings: 0
mysql> desc user;+—————+———————-+———+——-+————-+———-+| Field | Type | Null | Key | Default | Extra |+—————+———————-+———+——-+————-+———-+| username | varchar(20) | YES | | NULL | || password | varchar(32) | YES | | NULL | || createtime | int(10) | YES | | NULL | || createip | int(10) | YES | | NULL | || email | varchar(60) | YES | | NULL | |+—————+———————-+———+——-+————-+———-+5 rows in set (0.00 sec)

表字段改名

基本語法

alter table 表名 change 字段原名 字段新名 字段類型;

示例

alter table user change email em varchar(60);

示例說明 在user表中將字段中的email字段名字為em
詳細示例:

mysql> alter table user change email em varchar(60);Query OK, 0 rows affected (0.38 sec)Records: 0 Duplicates: 0 Warnings: 0
mysql> desc user;+—————+———————-+———+——-+————-+———-+| Field | Type | Null | Key | Default | Extra |+—————+———————-+———+——-+————-+———-+| username | varchar(20) | YES | | NULL | || password | varchar(32) | YES | | NULL | || createtime | int(10) | YES | | NULL | || createip | int(10) | YES | | NULL | || em | varchar(60) | YES | | NULL | |+—————+———————-+———+——-+————-+———-+5 rows in set (0.00 sec)

修改表字段排列順序
在前的字段增加和修改語句(add/change/modify)中,最后都可以加一個可選項 first|after。
增加表字段時我們已經學過了如何調整順序。我們現在在來看看另外的change或modify如何來調整順序。
我們用first做個小實驗。
使用modify調整順序
mysql> alter table user modify em varchar(60) first;Query OK, 0 rows affected (0.41 sec)Records: 0 Duplicates: 0 Warnings: 0
mysql> desc user;+—————+———————-+———+——-+————-+———-+| Field | Type | Null | Key | Default | Extra |+—————+———————-+———+——-+————-+———-+| em | varchar(60) | YES | | NULL | || username | varchar(20) | YES | | NULL | || password | varchar(32) | YES | | NULL | || createtime | int(10) | YES | | NULL | || createip | int(10) | YES | | NULL | |+—————+———————-+———+——-+————-+———-+5 rows in set (0.00 sec)

修改表名
基本語法

alter table 舊表名 rename 新的表名;

示例

alter table user rename new_user;

示例說明 將user表名改為new_user
mysql> alter table user rename new_user;Query OK, 0 rows affected (0.35 sec)
mysql> desc new_user;+—————+———————-+———+——-+————-+———-+| Field | Type | Null | Key | Default | Extra |+—————+———————-+———+——-+————-+———-+| em | varchar(60) | YES | | NULL | || username | varchar(20) | YES | | NULL | || password | varchar(32) | YES | | NULL | || createtime | int(10) | YES | | NULL | || createip | int(10) | YES | | NULL | |+—————+———————-+———+——-+————-+———-+5 rows in set (0.00 sec)

07. 類型、字符集、引擎和索引

7.1 數據類型
類型使用
我們學習了這么多類型,在創建表的語句的時候使用對應的類型即可。

舉例如下:

CREATE TABLE IF NOT EXISTS demo (id int(11) NOT NULL, username varchar(50) NOT NULL,password char(32) NOT NULL, content longtext NOT NULL,createtime datetime NOT NULL,s ex tinyint(4) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;

字段其他屬性設置
UNSIGNED(無符號)主要用于整型和浮點類型,使用無符號。即,沒有前面面的-(負號)。存儲位數更長。tinyint整型的取值區間為,-128~127。而使用無符號后可存儲0-255個長度。

創建時在整型或浮點字段語句后接上:

unsigned
ZEROFILL(0填充)0(不是空格)可以用來真補輸出的值。使用這個修飾符可以阻止 MySQL 數據庫存儲負值。

創建時在整型或浮點字段語句后接上:

zerofill
defaultdefault屬性確保在沒有任何值可用的情況下,賦予某個常量值,這個值必須是常量,因為MySQL不允許插入函數或表達式值。此外,此屬性無法用于BLOB或TEXT列。如果已經為此列指定了NULL屬性,沒有指定默認值時默認值將為NULL,否則默認值將依賴于字段的數據類型。

創建時在整型或浮點字段語句后接上:

default '值’
not null如果將一個列定義為not null,將不允許向該列插入null值。建議在重要情況下始終使用not null屬性,因為它提供了一個基本驗證,確保已經向查詢傳遞了所有必要的值。

創建時在整型或浮點字段語句后接上:

not null
null為列指定null屬性時,該列可以保持為空,而不論行中其它列是否已經被填充。記住,null精確的說法是“無”,而不是空字符串或0。

創建時在整型或浮點字段語句后不要聲明not null即可。
7.2 字符集
為了更好的識別中文、日文、英文、希臘語。對于常用的符號進行了編碼,這個編碼就是字符集。

我們只需要了解:

常用字符集
數據庫中我們用什么字符集
英文字符集:

ASCII 美國標準信息交換代碼 單字節 GBK 漢字內碼擴展規范 雙字節
unicode 萬國碼 4字節 UTF-8
Unicode的可變長度字符編碼 1到6個字節

實際工作中要使用的編碼
在中文中常用的字符集分為utf-8和GBK。
實際使用的如下:
gbk_chinese_ci 簡體中文, 不區分大小寫
utf8_general_ci Unicode (多語言), 不區分大小寫

7.3 表引擎
在mysql命令中使用:

show engines;

可以查看到當前服務器支持的所有引擎。

我們介紹幾種常用的引擎和了解幾個不常用的引擎。避免未來在實際工作中看到一些引擎不知道概念。
MyISAM 常用。讀取效率很高的引擎
InnoDB 常用。寫入,支持事處等都支持
Archive 不常用。歸檔引擎,壓縮比高達1:10,用于數據歸檔
NDB 不常用。主要在MySQL 集群服務器中使用,不做介紹
MyISAM
不支持事務,表鎖(表級鎖,加鎖會鎖住整個表),支持全文索引,操作速度快。常用于讀取多的業務。
myisam存儲引擎表由myd和myi組成。
.myd用來存放數據文件,
.myi用來存放索引文件。
對于myisam存儲引擎表,mysql數據庫只緩存其索引文件,數據文件的緩存由操作系統本身來完成。

InnoDB
支持事務,主要面向在線事務處理(OLTP)方面的應用。

行鎖設計,支持外鍵,即默認情況下讀取操作不加鎖。
InnoDB是為處理巨大數據量時的最大性能設計。

注:行鎖:寫入、更新操作的時候將這一行鎖起來,不讓其他人再操作了。表鎖:寫入、更新操作時,將表給鎖起來不讓其他人再操作了。事務:同時操作多個數據,若其中的一個數據操作失敗??苫貪L到操作之前。常用于銀行、電商、金融等系統中。

7.4 索引
索引用于快速找出在某個列中有一特定值的行。

索引類型功能說明
普通索引最基本的索引,它沒有任何限制
唯一索引某一行企用了唯一索引則不準許這一列的行數據中有重復的值。針對這一列的每一行數據都要求是唯一的
主鍵索引它是一種特殊的唯一索引,不允許有空值。一般是在建表的時候同時創建主鍵索引,常用于用戶ID。類似于書中的頁碼
全文索引對于需要全局搜索的數據,進行全文索引

普通索引
基本語法

alter tableadd index(字段)

示例

ALTER TABLE money ADD INDEX(username);

示例解釋 為money表的username字段增加索引

唯一索引
基本語法

alter tableadd UNIQUE(字段);

示例

ALTER TABLE money ADD UNIQUE(email);

示例解釋 為money表的email字段增加唯一索引

全文索引
基本語法

alter tableadd FULLTEXT(字段);

示例

ALTER TABLE money ADD FULLTEXT(content);

示例解釋 為money表的content字段增加唯一索引

主鍵索引
基本語法

alter tableadd PRIMARY KEY(字段);

示例

ALTER TABLE money ADD PRIMARY KEY(id);

示例解釋 為money表的id字段增加主鍵索引
創建表時也可以聲明索引
創建表時可在創建表語句后加上對應的類型即可聲明索引:

PRIMARY KEY(字段)INDEX [索引名] (字段)FULLTEXT [索引名] (字段)UNIQUE[索引名] (字段)
注:中括號中的索引名,代表可選。

整體示例如下:

CREATE TABLE test (id INT NOT NULL ,username VARCHAR(20) NOT NULL
,password INT NOT NULL ,content INT NOT NULL ,PRIMARY KEY (id),INDEX
pw (password),UNIQUE (username),FULLTEXT (content)) ENGINE = InnoDB;

08. 增刪改查

插入記錄有兩種個基本語法

插入基本語法一
類別 詳細解示
基本語法

insert intovalues(1,2,值n);

示例

insert into user values(2,'李文凱','男');

示例說明 向user表中插入值id為2,姓名為李文凱,性別為男
插入基本語法二
基本語法

insert into(字段1,字段2,字段n) values(1,2,值n);

示例

insert into user(id,username,sex) values(213,'小沈陽',1);

示例說明 向user表中插入id為213,username為小沈陽,性別為1
說明基本語法1和基本語法2的區別是:
基本語法1的插入語句,表中有多少個字段就必須要插入多少個值。一個不能多,一個也不能少。若有默認值,不想傳,可以寫上null。
基本語法2中,除非有必填字段必須要寫入值外。如果有默認值的不想寫可以忽略不寫。mysql會自動補主默認值。
基本語法2中,以user(id,username,sex)字段順序為值的順序。
假設有一張表為user表,我們對字段、字段說明、類型和字段選填和必須狀態進行說明,表結構如下:
字段 id username email password sex
中文說明 編號 用戶名 郵箱 密碼 性別
類型說明 int varchar(50) varchar(60) varchar(32) tinyint
默認值說明 自增 必填 選填字段,默認值為123@phpxy.com 選填字段 必填字段
按照基本語法一寫上表中的插入語句:
insert into user values(null,‘李文凱’,‘liwenkai@phpxy.com’,null ,1);

注意:可以不指定字段名稱,但是 values 后面的順序應該和表字段的排序一致。 有默認值的字段可以不寫,則為默認值。
如果有默認值或者可空字段不想傳入具體值,可寫入null。 數據格式必須要與表規定的數據格式一致。 按照基本語法二寫上表中的插入語句:

insert into user(username,sex) values('李文凱',1);

注意

ID為自增的自段可以不用傳入值,每插入一次這個字段的值會自動向上加1。
有默認值和可為空的字段可不傳
以表user(username,sex)的插入順序為準
基本語法二為更常用的用法
基本語法變形:一次插入多條記錄

insert into user(username,password,sex)values('黃曉明', 'abcdef', 1),( 'angelababy', 'bcdeef', 0),( '陳赫', '123456', 1),('王寶強', '987654', 1);

在講解查詢前,我為大家準備了一個數據表。這個表中存放著銀行的余額和用戶的基本信息。

我們定義了一個表結構,表名為money。

創建表的語句如下:

CREATE TABLE money (id INT NOT NULL AUTO_INCREMENT , username VARCHAR(50) NOT NULL , balance FLOAT NOT NULL , province VARCHAR(20) NOT NULL , age TINYINT UNSIGNED NOT NULL , sex TINYINT NOT NULL ,PRIMARY KEY (id(10))) ENGINE = InnoDB CHARACTER SET utf8;

表結構和數據展示如下:

id username balance province age sex
1 李文凱 120.02 湖北 29 1
2 范冰冰 260.23 山東 40 0
3 黃曉明 150.86 山東 40 1
4 井柏然 810 遼寧 27 1
5 李冰冰 20.15 黑龍江 43 0
6 成龍 313 山東 63 1
7 楊冪 123 北京 30 0
8 劉詩詩 456 北京 29 1
9 柳巖 23.4 湖南 36 0
10 趙本山 3456 遼寧 63 1
11 汪峰 34.32 北京 44 1
12 郭德綱 212 天津 43 1

注:balance 是指余額province 是指省份

基礎查詢
類別 詳細解示
基本語法

select * from;

示例

select * from money;

示例說明 查詢money表中所有字段中的所有結果

注:”*” 是一種正則表達式的寫法,表示匹配所有,上面的查詢語句和下面的是等價:

mysql> select * from money;+——+—————-+————-+—————-+——-+——-+| id | username | balance | province | age | sex |+——+—————-+————-+—————-+——-+——-+| 1 | 李文凱 | 120.02 | 湖北 | 29 | 1 || 2 | 范冰冰 | 260.23 | 山東 | 40 | 0 || 3 | 黃曉明 | 150.86 | 山東 | 40 | 1 || 4 | 井柏然 | 810 | 遼寧 | 27 | 1 || 5 | 李冰冰 | 20.15 | 黑龍江 | 43 | 0 || 6 | 成龍 | 313 | 山東 | 63 | 1 || 7 | 楊冪 | 123 | 北京 | 30 | 0 || 8 | 劉詩詩 | 456 | 北京 | 29 | 1 || 9 | 柳巖 | 23.4 | 湖南 | 36 | 0 || 10 | 趙本山 | 3456 | 遼寧 | 63 | 1 || 11 | 汪峰 | 34.32 | 北京 | 44 | 1 || 12 | 郭德綱 | 212 | 天津 | 43 | 1 |+——+—————-+————-+—————-+——-+——-+12 rows in set (0.00 sec)

指定字段查詢
基本語法

select 字段 from;

示例

select id,username, balance from money;

示例說明 查詢money表中id,username, balance字段中的所有結果
mysql> select id,username, balance from money;+——+—————-+————-+| id | username | balance |+——+—————-+————-+| 1 | 李文凱 | 120.02 || 2 | 范冰冰 | 260.23 || 3 | 黃曉明 | 150.86 || 4 | 井柏然 | 810 || 5 | 李冰冰 | 20.15 || 6 | 成龍 | 313 || 7 | 楊冪 | 123 || 8 | 劉詩詩 | 456 || 9 | 柳巖 | 23.4 || 10 | 趙本山 | 3456 || 11 | 汪峰 | 34.32 || 12 | 郭德綱 | 212 |+——+—————-+————-+12 rows in set (0.00 sec)

查詢單個字段不重復記錄 distinct
基本語法

select distinct 字段 from;

示例

select distinct age deptno from money;

示例說明 查詢money表中年齡唯一的所有結果
mysql> select distinct age deptno from money;+————+| deptno |+————+| 29 || 40 || 27 || 43 || 63 || 30 || 36 || 44 |+————+8 rows in set (0.00 sec)

條件查詢 where
基本語法

select 字段 fromwhere where條件;

示例

select * from money where age = 29;

示例說明 查詢money表中年齡為29的所有結果
mysql> select * from money where age = 29;+——+—————-+————-+—————+——-+——-+| id | username | balance | province | age | sex |+——+—————-+————-+—————+——-+——-+| 1 | 李文凱 | 120.02 | 湖北 | 29 | 1 || 8 | 劉詩詩 | 456 | 北京 | 29 | 1 |+——+—————-+————-+—————+——-+——-+2 rows in set (0.00 sec)

where后可接的條件
比較運算符結果集中將符合條件的記錄列出來。上面的例子中,where 后面的條件是一個字段的 ‘=’。
除此之外,還可以使用>、<、>=、<=、!=等比較運算符;
符號 說明

大于
< 小于
= 大于等于
<= 小于等于
!= 不等于
= 等于
邏輯運算符

多個條件還可以使用 or 、 and 等邏輯運算符進行多條件聯合查詢

符號 說明
or 或者
and 并且
我們來看一下多個條件的例子:

示例 :

select * from money where id <10 and province ='湖北'

說明 查詢所有字段 要求id小于10 并且province=‘湖北’
mysql> select * from money where id <10 and province='湖北';+——+—————-+————-+—————+——-+——-+| id | username | balance | province | age | sex |+——+—————-+————-+—————+——-+——-+| 1 | 李文凱 | 120.02 | 湖北 | 29 | 1 |+——+—————-+————-+—————+——-+——-+1 row in set (0.00 sec)

結果集排序
基本語法

select 字段 fromorder by 字段 排序關鍵詞

示例

select id,username, balance from money order by balance desc;

示例說明 查詢money表中的id,username,balance字段,按照余額進行降序排序
排序用到的關鍵詞:

asc 升序排列,從小到大(默認)
desc 降序排列,從大到小
在 select 出來之后的結果集中排序使用 order by ,其中 desc 和 asc 是排序順序中的關鍵字。desc 表示按照字段進行降序排列,asc 表示升序排列,如果不寫關鍵字默認升序排列。

mysql> select id,username, balance from money order by balance desc;+——+—————-+————-+| id | username | balance |+——+—————-+————-+| 10 | 趙本山 | 3456 || 4 | 井柏然 | 810 || 8 | 劉詩詩 | 456 || 6 | 成龍 | 313 || 2 | 范冰冰 | 260.23 || 12 | 郭德綱 | 212 || 3 | 黃曉明 | 150.86 || 7 | 楊冪 | 123 || 1 | 李文凱 | 120.02 || 11 | 汪峰 | 34.32 || 9 | 柳巖 | 23.4 || 5 | 李冰冰 | 20.15 |+——+—————-+————-+12 rows in set (0.00 sec)

多字段排序
order by 后面可以跟多個不同的字段排序,并且排序字段的不同結果集的順序也不同,如果排序字段的值一樣,則值相同的字段按照第二個排序字段進行排序。
基本語法

select 字段 fromorder by 字段1 排序關鍵詞,… …字段n desc asc;

示例

select id,username, balance from money order by balance desc,age asc;

示例說明 查詢money表中的id,username,balance字段,按照余額進行降序排序,若余額全都一樣,則再使用age進行升序排序

注:如果第一個字段已經將結果給排好。第二個字段排序字段不生效。本例中,第二個字段無效。

mysql> select id,username, balance from money order by balance desc,age asc;+——+—————-+————-+| id | username | balance |+——+—————-+————-+| 10 | 趙本山 | 3456 || 4 | 井柏然 | 810 || 8 | 劉詩詩 | 456 || 6 | 成龍 | 313 || 2 | 范冰冰 | 260.23 || 12 | 郭德綱 | 212 || 3 | 黃曉明 | 150.86 || 7 | 楊冪 | 123 || 1 | 李文凱 | 120.02 || 11 | 汪峰 | 34.32 || 9 | 柳巖 | 23.4 || 5 | 李冰冰 | 20.15 |+——+—————-+————-+12 rows in set (0.00 sec)

結果集限制
對于查詢或者排序后的結果集,如果希望只顯示一部分而不是全部,則可以使用 limit 關鍵字對結果集進行數量限制。
基本語法

select 字段 fromlimit 數量;

示例

select id,username, balance from money limit 5;

示例說明 顯示前五個用戶
mysql> select * from money limit 5;+——+—————-+————-+—————-+——-+——-+| id | username | balance | province | age | sex |+——+—————-+————-+—————-+——-+——-+| 1 | 李文凱 | 120.02 | 湖北 | 29 | 1 || 2 | 范冰冰 | 260.23 | 山東 | 40 | 0 || 3 | 黃曉明 | 150.86 | 山東 | 40 | 1 || 4 | 井柏然 | 810 | 遼寧 | 27 | 1 || 5 | 李冰冰 | 20.15 | 黑龍江 | 43 | 0 |+——+—————-+————-+—————-+——-+——-+5 rows in set (0.00 sec)

限制結果集并排序
基本語法

select 字段 fromorder by 字段 關鍵詞 limit 數量

示例

select id,username, balance from money order by balance desc limit 5;

示例說明 按照錢來排序,顯示前五個最有錢的用戶
mysql> select id,username, balance from money order by balance desc limit 5;+——+—————-+————-+| id | username | balance |+——+—————-+————-+| 10 | 趙本山 | 3456 || 4 | 井柏然 | 810 || 8 | 劉詩詩 | 456 || 6 | 成龍 | 313 || 2 | 范冰冰 | 260.23 |+——+—————-+————-+5 rows in set (0.00 sec)

結果集區間選擇
假設我從第0條開始取了3條記錄。又想再從第3條開始取3條記錄。再想從第6條開始取4條記錄怎么辦?

這時候就需要使用到結果集區間選擇。
基本語法

select 字段 fromlimit 偏移量,數量

示例

select id,username, balance from money limit 0,3;

示例說明 從第一條開始取三條記錄

注:第一條記錄為0。

·mysql> select id,username, balance from money limit 0,3;+——+—————-+————-+| id | username | balance |+——+—————-+————-+| 1 | 李文凱 | 120.02 || 2 | 范冰冰 | 260.23 || 3 | 黃曉明 | 150.86 |+——+—————-+————-+3 rows in set (0.00 sec)·
從第三條開始再取三條呢?

·mysql> select id,username, balance from money limit 3,3;+——+—————-+————-+| id | username | balance |+——+—————-+————-+| 4 | 井柏然 | 810 || 5 | 李冰冰 | 20.15 || 6 | 成龍 | 313 |+——+—————-+————-+3 rows in set (0.00 sec)·
通過上面的這個思路,顯示就完成了分頁。每頁顯示10條記錄,那么:

第1頁為 limit 0,10第2頁為 limit 10,10第3頁為 limit 20,10

依此類推… …

統計類函數使用
如果我們想知道總用戶數怎么辦?
查詢誰是數據表里的首富怎么辦?
如果我們想知道用戶的平均金額怎么辦?
如果我們想知道所有用戶的總金額怎么辦?

統計類函數最常用的我們有五個:
sum 求和
count 統計總數
max 最大值
min 最小值
avg 平均值

注:當然你知道其他的mysql函數也可以使用。不過,在實際工作中,大公司的很多大中型項上很少使用,他們都有專門的計數服務器。因為,mysql的計算量本身很大,為了減少壓力通常我們將實際的計算任務交給業務服務器或其他服務器來完成。

基本語法

select 函數(字段) from

示例

select count(id) from money

示例說明 查詢money表的id總數
mysql> select count(id) from money;+—————-+| count(id) |+—————-+| 12 |+—————-+1 row in set (0.00 sec)
你還可以給字段取別名喲!使用as關鍵字。
mysql> select count(id) as zongshu from money;+————-+| zongshu |+————-+| 12 |+————-+1 row in set (0.00 sec)
查詢平均金額
mysql> select avg(balance) from money;+——————————+| avg(balance) |+——————————+| 498.24833393096924 |+——————————+1 row in set (0.00 sec)
查詢總金額
mysql> select sum(balance) from money;+—————————-+| sum(balance) |+—————————-+| 5978.980007171631 |+—————————-+1 row in set (0.00 sec)
查詢最大金額
mysql> select max(balance) from money;+———————+| max(balance) |+———————+| 3456 |+———————+1 row in set (0.00 sec)
查詢最小金額
mysql> select min(balance) from money;+——————————+| min(balance) |+——————————+| 20.149999618530273 |+——————————+1 row in set (0.00 sec) 分組 group by
我們拿金額表里面的省份進行分組數據,分組數據后你會發現。有相同的省份會去掉。即,一個省份為一個組。

基本語法

select * fromgroup by 字段

示例

select * from money group by province;

示例說明 按照地區進行分組
mysql> select * from money group by province;+——+—————-+————-+—————-+——-+——-+| id | username | balance | province | age | sex |+——+—————-+————-+—————-+——-+——-+| 7 | 楊冪 | 123 | 北京 | 30 | 0 || 12 | 郭德綱 | 212 | 天津 | 43 | 1 || 2 | 范冰冰 | 260.23 | 山東 | 40 | 0 || 1 | 李文凱 | 120.02 | 湖北 | 29 | 1 || 9 | 柳巖 | 23.4 | 湖南 | 36 | 0 || 4 | 井柏然 | 810 | 遼寧 | 27 | 1 || 5 | 李冰冰 | 20.15 | 黑龍江 | 43 | 0 |+——+—————-+————-+—————-+——-+——-+

統計分組(分類)各總數:
mysql> select deptno, count(1) from emp group by deptno;+————+—————+| deptno | count(1) |+————+—————+| 1 | 1 || 2 | 5 || 3 | 1 || 5 | 4 |+————+—————+4 rows in set (0.04 sec)

統計省份數量后再進行分組顯示
mysql> select count(province),province from money group by province;+————————-+—————-+| count(province) | province |+————————-+—————-+| 3 | 北京 || 1 | 天津 || 3 | 山東 || 1 | 湖北 || 1 | 湖南 || 2 | 遼寧 || 1 | 黑龍江 |+————————-+—————-+7 rows in set (0.00 sec)

在分組基礎上進行統計
with rollup用的很少。這個知識點設置為了解級別。
它的主要功能是對于分組的數據進行統計后,再進行一次總數統計。
基本語法

select * fromgroup by 字段 with rollup;

示例

select count(province),province from money group by province with rollup;

示例說明 對分組的數再次進行統計
在上面的基礎上統計總數,下例結果中,最后多了一個12 NULL。

mysql> select count(province),province from money group by province with rollup;+————————-+—————-+| count(province) | province |+————————-+—————-+| 3 | 北京 || 1 | 天津 || 3 | 山東 || 1 | 湖北 || 1 | 湖南 || 2 | 遼寧 || 1 | 黑龍江 || 12 | NULL |+————————-+—————-+8 rows in set (0.00 sec)
結果再過濾having
having子句與where有相似之處但也有區別,都是設定條件的語句。
having 是篩選組 而where是篩選記錄。

基本語法

select * fromgroup by 字段 having 條件;

示例

select count(province) as result ,province from money group by province having result >2;

示例說明 對地區分組并統計總數,將分組結果中大于2的分組地區顯示出來
mysql> select count(province) as result ,province from money group by province having result >2;+————+—————+| result | province |+————+—————+| 3 | 北京 || 3 | 山東 |+————+—————+2 rows in set (0.00 sec)

整體使用SQL
我們在上面的語句中都是單一使用的某些語句,沒有整體使用過。

我們現在將語句進行整合后,配合使用一次。整體的SQL語句配合使用的語法結構如下:

SELECT[字段1 [as 別名1],[函數(字段2) ,]……字段n]FROM 表名
[WHERE where條件]
[GROUP BY 字段]
[HAVING where_contition]
[order 條件]
[limit 條件]

注:上面的語句中可以[] 代表可選。

最終的語法總結如下:
select 選擇的列–>from 表–>where 查詢的條件–>group by 分組屬性–>having 分組過濾的條件
–>order by 排序屬性–>limit 起始記錄位置,取記錄的條數
我們進行一次整體的給合使用,查詢money表字段:id,username,balance,province 要求id>1 余額大于50,使用地區進行分組。我們使用用戶id進行降序,要求只準顯示3條。

最后將SQL語句寫成,查詢出來的結果如下:

mysql> select id,username,balance,province from money where id > 1 and balance > 50 group by province order by id desc limit 3;+——+—————-+————-+—————+| id | username | balance | province |+——+—————-+————-+—————+| 12 | 郭德綱 | 212 | 天津 || 7 | 楊冪 | 123 | 北京 || 4 | 井柏然 | 810 | 遼寧 |+——+—————-+————-+—————+3 rows in set (0.00 sec)

很多時候在實際的業務中我們不只是查詢一張表。
在電子商務系統中,查詢哪些用戶沒有購買過產品。
銀行中可能查詢違規記錄,同時查詢出用戶的
查詢中獎信息和中獎人員的基本信息。

以上只是列的情況我們就需要把兩張表在一起進行查詢。
而上述業務中需要多表聯合在一起查詢才能有結果,而多表聯合查詢的本質是:表連接。
表連接
當需要查詢多個表中的字段時,就可以使用表連接來實現。表聯接分為內連接和外連接。
內聯結:將兩個表中存在聯結關系的字段符合聯結關系的那些記錄形成記錄集的聯結。
外連接:會選出其他不匹配的記錄,分為外左聯結和外右聯結。

在學習實驗前,我為大家準備了兩個模擬的數據表:

用戶表,存放用戶信息
訂單表,存放哪個用戶購買過哪個商品
user表創建語句

CREATE TABLE IF NOT EXISTS user (uid int(11) NOT NULL, username varchar(30) NOT NULL, password char(32) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE IF NOT EXISTS order_goods (oid int(11) NOT NULL, uid int(11) NOT NULL, name varchar(50) NOT NULL, buytime int(11) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;

user表數據如下:

uidusernamepassword
1景甜123456
2王小二245667
3李文凱1235531
4井柏然123455
5范冰冰5abcwa
6黃曉明abcdeef
7anglebabycaption
8TFBOYSabcdwww
9安小超12tfddwd
10高小峰3124qwqw
11李小強323fxfvdvd
12李小超311aqqee
13韓小平121rcfwrfq
14宋小康123123tcsd
15佟小剛3cxvdfs

order_goods數據如下:

oid uid name buytime
1 10 蘋果鼠標 1212313
2 3 iphone 12s 123121241
3 12 雪碧 13232333
4 15 34242123
5 3 iphone 鍵盤 12123413

注意:在上表order_goods表中uid是指user表中的uid字段。上表中oid為1的數據行,uid為10的用戶。為user表中uid為10的用戶:高小峰。該用戶購買了商品為蘋果鼠標。購買時間buytime為一個unix時間戳。

內連接
基本語法一:

類別 詳細解示
基本語法 select 表1.字段 [as 別名],表n.字段 from 表1 [別名],表n where 條件;
示例

select user.uid ,user.username as username, order_goods.oid,order_goods.uid, order_goods.name as shopname from user, order_goods where user.uid = order_goods.uid;

示例說明 查詢商品表中哪些用戶購買過商品,并將用戶信息顯示出來
注:下例中from 表使用到了表別名。

由于表名太長,每次寫的時候容易寫錯。我們可以在表后直接跟上一個簡寫英文字符串。在前面拼接字段時,直接使用簡寫字符串.字段即可。

mysql> select u.uid ,u.username as username,o.oid,o.uid,o.name as shopname from user u,order_goods o where u.uid = o.uid;+——-+—————-+——-+——-+———————-+| uid | username | oid | uid | shopname |+——-+—————-+——-+——-+———————-+| 10 | 高小峰 | 1 | 10 | 蘋果鼠標 || 3 | 李文凱 | 2 | 3 | iphone 12s || 12 | 李小超 | 3 | 12 | 雪碧 || 15 | 佟小剛 | 4 | 15 | || 3 | 李文凱 | 5 | 3 | iphone 鍵盤 |+——-+—————-+——-+——-+———————-+5 rows in set (0.00 sec)
基本語法二:
類別 詳細解示
基本語法 select 表1.字段 [as 別名],表n.字段 from 表1 INNER JOIN 表n on 條件;
示例

select user.uid ,user.username as username, order_goods.oid,order_goods.uid, order_goods.name as shopname from user inner join order_goods on user.uid = order_goods.uid;

示例說明 查詢商品表中哪些用戶購買過商品,并將用戶信息顯示出來
結果與基本語法1中一致。

mysql> select user.uid ,user.username as username,order_goods.oid,order_goods.uid,order_goods.name as shopname from user inner join order_goods on user.uid = order_goods.uid;+——-+—————-+——-+——-+———————-+| uid | username | oid | uid | shopname |+——-+—————-+——-+——-+———————-+| 10 | 高小峰 | 1 | 10 | 蘋果鼠標 || 3 | 李文凱 | 2 | 3 | iphone 12s || 12 | 李小超 | 3 | 12 | 雪碧 || 15 | 佟小剛 | 4 | 15 | || 3 | 李文凱 | 5 | 3 | iphone 鍵盤 |+——-+—————-+——-+——-+———————-+5 rows in set (0.00 sec)

外連接

基本語法

select1.字段 [as 別名],表n.字段 from1 LEFT JOIN 表n on 條件;

示例

select * from user left join order_goods on user.uid = order_goods.uid;

示例說明 以左邊為主,查詢哪些用戶未購買過商品,并將用戶信息顯示出來

外連接又分為左連接和右鏈接,具體定義如下。

左連接:包含所有的左邊表中的記錄甚至是右邊表中沒有和它匹配的記錄
mysql> select * from user left join order_goods on user.uid = order_goods.uid;+——-+—————-+——————+———+———+———————-+—————-+| uid | username | password | oid | uid | name | buytime |+——-+—————-+——————+———+———+———————-+—————-+| 10 | 高小峰 | 3124qwqw | 1 | 10 | 蘋果鼠標 | 1212313 || 3 | 李文凱 | 1235531 | 2 | 3 | iphone 12s | 123121241 || 12 | 李小超 | 311aqqee | 3 | 12 | 雪碧 | 13232333 || 15 | 佟小剛 | 3cxvdfs | 4 | 15 | | 34242123 || 3 | 李文凱 | 1235531 | 5 | 3 | iphone 鍵盤 | 12123413 || 1 | 景甜 | 123456 | NULL | NULL | NULL | NULL || 2 | 王小二 | 245667 | NULL | NULL | NULL | NULL || 4 | 井柏然 | 123455 | NULL | NULL | NULL | NULL || 5 | 范冰冰 | 5abcwa | NULL | NULL | NULL | NULL || 6 | 黃曉明 | abcdeef | NULL | NULL | NULL | NULL || 7 | anglebaby | caption | NULL | NULL | NULL | NULL || 8 | TFBOYS | abcdwww | NULL | NULL | NULL | NULL || 9 | 安小超 | 12tfddwd | NULL | NULL | NULL | NULL || 11 | 李小強 | 323fxfvdvd | NULL | NULL | NULL | NULL || 13 | 韓小平 | 121rcfwrfq | NULL | NULL | NULL | NULL || 14 | 宋小康 | 123123tcsd | NULL | NULL | NULL | NULL |+——-+—————-+——————+———+———+———————-+—————-+16 rows in set (0.00 sec)

右連接:包含所有的右邊表中的記錄甚至是右邊表中沒有和它匹配的記錄
基本語法

select1.字段 [as 別名],表n.字段 from1 right JOIN 表n on 條件;

示例 select * from user right join order_goods on user.uid = order_goods.uid;
示例說明 查詢商品表中哪些用戶購買過商品,并將用戶信息顯示出來
mysql> select * from user right join order_goods on user.uid = order_goods.uid;+———+—————-+—————+——-+——-+———————-+—————-+| uid | username | password | oid | uid | name | buytime |+———+—————-+—————+——-+——-+———————-+—————-+| 10 | 高小峰 | 3124qwqw | 1 | 10 | 蘋果鼠標 | 1212313 || 3 | 李文凱 | 1235531 | 2 | 3 | iphone 12s | 123121241 || 12 | 李小超 | 311aqqee | 3 | 12 | 雪碧 | 13232333 || 15 | 佟小剛 | 3cxvdfs | 4 | 15 | | 34242123 || 3 | 李文凱 | 1235531 | 5 | 3 | iphone 鍵盤 | 12123413 |+———+—————-+—————+——-+——-+———————-+—————-+5 rows in set (0.00 sec)

子查詢
有時候,當我們查詢的時候,需要的條件是另外一個select語句的結果,這時就需要使用子查詢。用于子查詢的關鍵字包括in、not in、=、!=、exists、not exists等。

類別 詳細解示
基本語法

select 字段 fromwhere 字段 in(條件);

示例1

select * from user where uid in (1,3,4);

示例1說明 按照id 查詢指定用戶

示例2

select * from user where uid in (select uid from order_goods);

示例2說明 將購買過商品的用戶信息顯示出來

示例1:
mysql> select * from user where uid in (1,3,4);+——-+—————-+—————+| uid | username | password |+——-+—————-+—————+| 1 | 景甜 | 123456 || 3 | 李文凱 | 1235531 || 4 | 井柏然 | 123455 |+——-+—————-+—————+3 rows in set (0.00 sec)
示例2:
mysql> select * from user where uid in (select uid from order_goods);+——-+—————-+—————+| uid | username | password |+——-+—————-+—————+| 10 | 高小峰 | 3124qwqw || 3 | 李文凱 | 1235531 || 12 | 李小超 | 311aqqee || 15 | 佟小剛 | 3cxvdfs |+——-+—————-+—————+4 rows in set (0.00 sec)
mysql> select * from emp where deptno in (select deptno from dept);

記錄聯合
使用 union 和 union all 關鍵字,將兩個表的數據按照一定的查詢條件查詢出來后,將結果合并到一起顯示。兩者主要的區別是把結果直接合并在一起,而 union 是將 union all 后的結果進行一次distinct,去除重復記錄后的結果。
基本語法

select語句1 union[all] select語句2

示例

select * from user where uid in (1,3,4);

示例說明 將商品表中的用戶信息和用戶表中的用戶信息的結果組合在一起
mysql> select uid from user union select uid from order_goods;+——-+| uid |+——-+| 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 10 || 11 || 12 || 13 || 14 || 15 |+——-+15 rows in set (0.00 sec)

更新記錄
更新數據我們已經說過。需要修改內容,修改銀行卡余額,修改裝備信息的時候都需要使用到update,修改語句。

修改(也叫更新)語句的基本語法如下:

update 表名 set 字段1=1,字段2=2,字段n=值n where 條件;

示例

update money set balance=balance-500 where userid = 15;

示例說明 修改money表,將balance余額減500。要求userid為15
假設我們有下面這一個表,表結構如下:

iduesrnamebalance
1李文凱50000.00
2黃曉明150000000.00
15馬云15000.00
16陳赫1234131.00

mysql> select * from emp where deptno=15;+———+—————+—————+| userid |username| balance |+———+—————+—————+| 15 | 馬云 | 15000.00 |+———+———-+——————-+1 row in set (0.00 sec)

使用 update 語句進行記錄更新
mysql> update money set balance=balance-500 where userid = 15;Query OK, 1 row affected (0.35 sec)Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from emp where deptno=15;+———+—————+—————+| userid |username| balance |+———+—————+—————+| 15 | 馬云 | 14500.00 |+———+———-+——————-+1 row in set (0.00 sec)

修改多個字段
mysql> update money set balance=balance-500,username='李文凱' where userid = 15;Query OK, 1 row affected (0.00 sec)Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from emp where deptno=15;+———+—————+—————+| userid |username| balance |+———+—————+—————+| 15 |李文凱 | 14500.00 |+———+———-+——————-+1 row in set (0.00 sec)

同時對兩個表進行更新
基本語法

update1,2 set 字段1=1,字段2=2,字段n=值n where 條件;

示例

update money m,user u m.balance=m.balance*u.age where m.userid=u.id;

示例說明 修改money,將money表的別名設置為m;user表的別名設置為u;將m表的余額改為m表的balance*用戶表的age。執行條件是:m.userid = u.id
mysql> update money m,user u m.balance=m.balance*u.age where m.userid=u.id;

使用 delete 刪除記錄
基本語法

delete from[where 條件];

示例

delete from user where id > 10;

示例說明 刪除掉用戶表中id大于10的所有用戶
user表,表結構如下:

iduesrnamebalance
1李文凱50000.00
2黃曉明150000000.00
15馬云15000.00
16陳赫1234131.00

mysql> delete from user where id = 1;Query OK, 1 row affected (0.08 sec)
刪除掉了id為1的,李文凱這一行的記錄。

清空表記錄
delete和truncate是一樣的,但它們有一點不同,那就是DELETE可以返回被刪除的記錄數,而TRUNCATE TABLE返回的是0。
如果一個表中有自增字段,使用truncate table 這個自增字段將起始值恢復成1.
基本語法

TRUNCATE TABLE 表名;

示例

TRUNCATE TABLE user;

示例說明 清空表的數據,并且讓自增的id從1開始自增

【切記】
刪除時一定要記住加上where條件,不然會清空掉整個表的記錄。
刪除重要數據前一定要備份、備份、備份。

09. DCL語句

創建庫用戶

添加權限
基本語法

grant 權限 on.to '用戶'@'主機' identified by '密碼';

示例

grant select, insert on test.* to 'liwenkai'@'localhost' identified by '4311';

示例說明 給予liwenkai用戶,在本機連接test庫所有表的權限。操作的這些表具有查詢和寫入權限
注:可以針對一個用戶增加多條權限。

刪除權限
基本語法

revoke 權限 on.from '用戶'@'主機';

示例

grant select, insert on test.* to 'liwenkai'@'localhost' identified by '4311';

示例說明 給予liwenkai用戶,在本機連接test庫所有表的權限。操作的這些表具有查詢和寫入權限

參數說明
grant all 在grant后接all說明給予所有權限
revoke all 在revoke后接all說明刪除所有權限
權限 on . . 所明給予所有庫所有表的操作權限
‘用戶’@‘主機’ 主機里面若為%。任意來源的主機均可以使用這個用戶來訪問
創建數據庫用戶liwenkai ,具有對test數據庫中所有標的 select / insert 權限

示例:增加權限

mysql> grant select, insert on test.* to 'liwenkai'@'localhost' identified by '4311';Query OK, 0 rows affected (0.00 sec)
示例:移除權限

mysql> revoke insert on test.* from 'liwenkai'@'localhost';Query OK, 0 rows affected (0.30 sec)
注:上面的一些語句用的較少。你可以將知識點的掌握級別設置為了解級別。更多的時候,權限設置項特別多,人們往往記不住具體的命令。更多 的時候人們使用專門的工具來操作權限。

10. 常用工具簡介

常用的工具有:

  • phpMyAdmin(中文,推薦)
  • Navicat(中文,推薦)
  • mysql workbench(英文,官方出品,在設計E-R圖時推薦)
  • 附錄1 . 學習MySQL常用的英文單詞

    select update delete drop where insert order by order by limit
    database table function sql language script API office word html web
    server windows back next cancel folder choose setup install
    administrator/root/admin finish stop start config log/logs help quit
    module service port Explorer linu mac os studio zend studio eclipse
    notepad note pad vim gvim down download code info phpinfo dollar
    var/variable echo int integer bool boolearn string title float
    double if else null result dump set unset object array resource
    call back callback type is get numeric mixed auto check define line
    method class version dir name space include user my test demo password
    text get post submit value input body address file request fire fox
    bug action software content home role length protocol interface status
    time connection remote switch case default break date while go to goto
    count table continue declare function plus cookie session static match
    max min rand year uninx timezone secnods minutes hours day weekday
    month mirco first end tags replace encoding pop push list each key
    prev reset current sort regex read create write move copy data exists
    clear cache able lock seek close group own owner path base build parse
    discuz upload size limit memory enabled progress temp done error field
    style png jpeg/jpg gif header width height ascii display report level
    notice warning all core STRICT DEPRECATED trigger mysql command
    monitor or oracle Copyright engine index charset execute fetch row
    assoc db database edit delete update alter modify change add unsigned
    ZEROFILL enum stamp union order goods left right join from inner outer
    shop cms system manger money access agent token thread thread-safe
    throw video

    總結

    以上是生活随笔為你收集整理的一篇文章入门Mysql的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    国产精品久久婷婷六月丁香 | 久久激情网站 | 成人午夜电影免费在线观看 | 97超碰人人模人人人爽人人爱 | 97视频免费在线观看 | 在线观看成人小视频 | 性色大片在线观看 | 91精品伦理| 天天天干天天射天天天操 | 免费观看av | 免费久久99精品国产婷婷六月 | 黄色免费看片网站 | 国产精品久久久久久久久久 | 欧美一级视频在线观看 | 91免费网址 | 成人丁香花 | 国产在线v| 911国产精品| av线上免费观看 | 久久久久久久久艹 | 人人插人人插 | 国产一二三区在线观看 | 中文在线免费视频 | 亚洲视频第一页 | 在线а√天堂中文官网 | 九月婷婷综合网 | 欧美日韩国产免费视频 | 精品一区在线看 | 国产精品美女免费视频 | 女人18毛片a级毛片一区二区 | 在线观看 亚洲 | 亚洲国产99 | 亚洲国产成人精品久久 | 日本高清中文字幕有码在线 | 91成人精品在线 | 在线观看小视频 | 一区二区三区免费在线 | 精品不卡av | 国产999精品久久久久久 | 久久69精品久久久久久久电影好 | 欧美日韩一区二区免费在线观看 | 激情丁香婷婷 | 国产精品福利视频 | 激情综合亚洲 | 久久免费视频在线观看 | 天堂在线视频免费观看 | 天天综合网久久综合网 | 欧美成人69av | 美女网站视频久久 | 国产精品永久久久久久久www | 久久久www成人免费毛片 | 天天综合网国产 | 在线va网站 | 在线播放国产精品 | 黄色特级一级片 | 中文字幕在线国产 | 欧美成人日韩 | 人人添人人 | 精品久久美女 | 久久婷婷影视 | 欧美国产日韩在线观看 | 日韩视频欧美视频 | 亚洲精品国产精品国 | 九九九电影免费看 | 国产精品久久99综合免费观看尤物 | 在线免费观看视频 | www.日本色 | 久久中文字幕视频 | 黄色片软件网站 | 午夜精品av | 激情五月五月婷婷 | 97免费中文视频在线观看 | 亚洲欧美日韩国产精品一区午夜 | 日韩国产欧美在线视频 | 亚洲天堂精品视频在线观看 | 麻豆激情电影 | 国产在线观看91 | 中文字幕在线播放视频 | 免费视频在线观看网站 | 久草在线最新视频 | 尤物一区二区三区 | 亚洲国产日韩精品 | 91麻豆精品国产午夜天堂 | 日韩欧美精品在线观看视频 | 热久久免费视频精品 | 久久高清国产视频 | 808电影免费观看三年 | 精品国产1区2区3区 国产欧美精品在线观看 | 超碰99人人 | 欧洲精品码一区二区三区免费看 | 婷婷色狠狠 | 婷婷色婷婷 | 狠狠五月天 | 久久99国产精品视频 | 亚洲精品五月 | 四虎成人精品永久免费av | 丁香电影小说免费视频观看 | 亚洲精品乱码久久久久久 | 在线视频一二区 | 成人免费视频免费观看 | 亚洲一区二区三区四区在线视频 | 欧美日韩精品影院 | 97超碰免费在线 | 日韩资源在线 | 国产视频欧美视频 | 国产精品久久中文字幕 | 偷拍精品一区二区三区 | 曰本免费av | 色综合久久久久综合 | 99久久综合狠狠综合久久 | 在线观看免费福利 | 久久亚洲电影 | 五月天视频网站 | 精品视频成人 | 在线看片中文字幕 | 日韩在线视频观看 | 国产字幕av | 在线日韩中文 | 精品在线观看国产 | 婷婷激情综合五月天 | 九九视频免费观看视频精品 | 96视频免费在线观看 | 五月婷婷在线视频观看 | 天天干人人干 | 亚洲一区久久久 | 亚洲在线网址 | 国产福利91精品 | 99精品欧美一区二区三区黑人哦 | 人人讲 | 欧美一级片免费 | 最近中文字幕免费av | 日本三级国产 | 日韩偷拍精品 | 国产黄色一级大片 | 三级av片| 国产成人精品一区二 | 超级av在线 | 日韩欧美在线一区 | 美女在线观看av | 天天操天天吃 | 国产精品久久久久久久久久白浆 | 婷婷日| 欧美日韩在线视频一区 | 日日夜夜天天久久 | 97精品国产91久久久久久 | 日韩欧美在线观看一区 | 成人网看片 | 欧美日韩高清一区 | av在线播放不卡 | 日韩 国产| 亚洲精选久久 | 在线观看爱爱视频 | 黄色a视频免费 | 国产一区私人高清影院 | 亚洲国产精品电影 | 久草线 | 亚洲一区二区精品 | 欧美一二三视频 | 蜜臀av夜夜澡人人爽人人桃色 | 狠狠色噜噜狠狠狠 | 国产亚洲精品久久久网站好莱 | 国产一区不卡在线 | 五月色丁香 | 97视频网址 | 免费av网址大全 | 91精品第一页 | 亚洲国产精品一区二区久久,亚洲午夜 | 久久夜色精品国产欧美一区麻豆 | 日韩av不卡在线观看 | 91资源在线免费观看 | 日韩精品一区二区免费视频 | 四虎国产精品免费观看视频优播 | 精品国产亚洲一区二区麻豆 | 一级a性色生活片久久毛片波多野 | 亚洲精品国产精品国自 | 欧美午夜a | 免费观看视频的网站 | 操高跟美女 | 国产专区在线看 | 日日碰狠狠躁久久躁综合网 | 91视频啊啊啊 | 超碰在线免费97 | 国产乱码精品一区二区蜜臀 | 久久综合九色综合欧美就去吻 | 国产成人在线一区 | 91免费观看国产 | 国产精品视频全国免费观看 | www麻豆视频 | 国产乱码精品一区二区蜜臀 | 国产亚洲一区二区在线观看 | 成人av电影在线 | 麻豆系列在线观看 | 中文字幕在线播放视频 | 四虎成人精品永久免费av | 国产精品ⅴa有声小说 | 日韩电影在线观看中文字幕 | 精品在线播放视频 | 色噜噜在线观看视频 | 精品国产视频在线 | 亚洲欧美日韩国产精品一区午夜 | 最新亚洲视频 | 欧美日韩国产精品一区二区三区 | 久久视频国产 | 国产二区免费视频 | 中文字幕日韩免费视频 | 国产情侣一区 | 丁香婷婷色综合亚洲电影 | 亚洲最大激情中文字幕 | 免费男女网站 | 国产999免费视频 | 日韩视频一 | 美女视频网 | 五月天久久综合 | 国产成人一级电影 | 亚洲日本va在线观看 | 亚洲精品高清视频在线观看 | 高清久久久久久 | 99久久精品国产一区二区三区 | 日韩欧美视频免费观看 | 五月婷婷色 | 五月婷婷另类国产 | 久久成人人人人精品欧 | 在线观看日韩精品 | 天天夜夜亚洲 | 九九热久久久 | 精品视频一区在线观看 | 国产理论片在线观看 | 成人手机在线视频 | 亚州国产精品视频 | 亚洲激情在线观看 | 欧美精品久久99 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 永久免费的av电影 | 国产午夜在线观看视频 | 日韩在线三级 | 久久国产精品区 | 天天操天天操天天操天天操天天操 | 成人午夜片av在线看 | 天天干天天怕 | 成年人视频在线免费观看 | 91麻豆国产| 国产精品久久久久久久久久妇女 | 13日本xxxxxⅹxxx20| 在线观看的a站 | 在线免费观看黄色av | 伊人五月婷 | 天天综合五月天 | 精品久久久久国产 | a爱爱视频 | 日韩精品一区二区三区丰满 | 久草免费资源 | 国产综合精品一区二区三区 | japanese黑人亚洲人4k | 五月天激情婷婷 | 天堂在线视频免费观看 | 欧美小视频在线观看 | 视频精品一区二区三区 | 亚洲午夜av久久乱码 | 日韩中文字幕亚洲一区二区va在线 | 欧美日韩免费一区 | 中文字幕乱码电影 | 欧美另类网站 | 日本黄色免费在线 | 黄色av电影 | 国产成人精品久久亚洲高清不卡 | 精品一区免费 | 精品在线观 | 黄色在线成人 | 一区二区三区久久 | 日本丶国产丶欧美色综合 | 日韩免费一级电影 | 亚洲欧美成人综合 | 久久精品久久久久久久 | 国产高清免费视频 | 97国产在线播放 | 九九久久国产 | 91成人看片| 中国美女一级看片 | 国产精品久久久久四虎 | 高清av中文字幕 | 国产精品18久久久久久vr | 一区二区三区国产欧美 | 四虎成人免费影院 | 日韩高清一区二区 | 一区二区视频欧美 | 91av电影在线观看 | 欧美一级片在线免费观看 | 中文字幕在线观看视频免费 | 午夜狠狠操 | 国产又粗又硬又长又爽的视频 | 丰满少妇麻豆av | 91亚洲精品久久久蜜桃网站 | 麻豆久久一区二区 | 人人看人人草 | 日韩精品欧美视频 | 亚洲免费永久精品国产 | 日日干干夜夜 | 99视频免费 | 日本福利视频在线 | 天天操天天操天天操天天操 | 中文字幕在线影院 | 又粗又长又大又爽又黄少妇毛片 | 亚洲国内精品在线 | 99r在线视频 | 日本中文不卡 | 中文字幕中文字幕在线一区 | 中文字幕你懂的 | 日韩在线观看第一页 | 国产日韩欧美在线观看 | 成人97视频一区二区 | 色婷婷视频在线观看 | 欧美亚洲国产一卡 | 91久久久久久久一区二区 | 久久新视频| 丁香五月亚洲综合在线 | av片子在线观看 | av黄色影院| 九九视频在线观看视频6 | 亚洲国产中文字幕 | 2019精品手机国产品在线 | 亚洲高清在线视频 | sm免费xx网站 | 天天夜夜操 | 99在线热播精品免费 | 日日操天天操夜夜操 | 亚洲专区视频在线观看 | 亚洲va欧美va人人爽春色影视 | 欧美一区二区精品在线 | 国产一级免费在线观看 | 欧美久久久一区二区三区 | 免费观看全黄做爰大片国产 | 中文字幕超清在线免费 | 国产高清视频在线播放 | 在线视频第一页 | 一本到视频在线观看 | 91精品国产高清自在线观看 | 黄色免费看片网站 | 国产一级在线看 | 国产专区日韩专区 | 91在线www| 日韩成人在线免费观看 | 天天色天天操综合 | 亚洲欧美视频在线播放 | 久久精品视频在线看 | 狠狠色香婷婷久久亚洲精品 | 99久久精品免费看国产四区 | 日韩精品亚洲专区在线观看 | 午夜美女福利直播 | 久草电影在线观看 | 五月婷婷六月丁香 | 久久艹综合 | 在线国产观看 | 国产视频精选在线 | 96av在线视频 | 久久精品99久久久久久2456 | 色吊丝在线永久观看最新版本 | 久久99国产精品 | 人人干人人草 | 999精品 | 国产在线超碰 | 婷婷在线免费视频 | 国产精品欧美一区二区三区不卡 | 国产一区二区在线免费播放 | 亚洲色图27p | 欧美一级片免费在线观看 | 中文在线字幕免费观看 | 91完整版在线观看 | 综合久久影院 | 九九九九九九精品 | 四虎在线永久免费观看 | 精品久久久久久久久中文字幕 | 亚洲va欧美va | 亚洲美女免费精品视频在线观看 | 五月婷婷激情综合网 | 在线免费av网站 | 丁香综合激情 | av免费观看在线 | 亚洲春色成人 | 天天干天天做天天爱 | 色婷婷精品大在线视频 | 国产剧在线观看片 | 毛片网在线 | 色吧av色av | 天天草天天 | 日韩首页 | 国产九九九精品视频 | 99国产视频 | 国产一区二区在线观看免费 | 丁香色天天 | 久久av不卡 | 久久免费精品国产 | 国产精品久久久久久久久久东京 | 岛国av在线 | 亚洲精品免费在线观看视频 | 久久精品亚洲 | 色婷婷国产在线 | 91香蕉视频好色先生 | 亚洲精品www.| 97视频资源| 香蕉久久久久久av成人 | 欧美不卡视频在线 | 91九色蝌蚪| av在线中文 | 中文字幕成人网 | 久久久久亚洲a | 久久精品一二三区白丝高潮 | 丁香综合激情 | 五月天伊人 | 天天射色综合 | 免费国产ww | 欧美日韩精品在线 | 免费色视频网址 | 亚洲人人精品 | av中文字幕在线播放 | 五月天久久婷 | av韩国在线 | 91高清在线 | 97天堂 | 国产美女免费视频 | 中文字幕高清av | av一区在线播放 | 天天干天天天天 | 在线国产片 | 最新av网站在线观看 | 国产传媒中文字幕 | 亚洲成人资源在线观看 | 国产精品永久久久久久久www | 一区 二区 精品 | av资源在线看 | 伊人午夜 | 久久精品久久久久 | 麻豆视频一区 | 亚洲精品乱码久久久久久蜜桃不爽 | 色噜噜狠狠狠狠色综合久不 | 人人干在线观看 | 久保带人 | 国产男男gay做爰 | 欧美日韩一区久久 | 亚洲高清视频在线播放 | 久久久九色精品国产一区二区三区 | 一区二区三区四区五区六区 | 亚洲乱亚洲乱妇 | 五月天中文字幕mv在线 | 国产一级特黄毛片在线毛片 | 色综合天天综合 | 欧美日韩高清一区二区 国产亚洲免费看 | 国产成人一区二区三区免费看 | 91av视频网| 久久网页 | 久久精品久久久精品美女 | 国产精品麻豆免费版 | 欧美老人xxxx18 | 最近中文字幕 | 久久理论片| 久久99视频 | 99中文在线 | 国产精品久免费的黄网站 | 亚州国产精品 | 亚洲久草网 | 狠狠色网 | 亚洲影视九九影院在线观看 | www.成人久久 | 国产精品18久久久 | 久久高视频 | 国产亚洲在| 精品国产一区二区三区久久影院 | 黄色精品国产 | 国产精品久久久久久电影 | 久久草草热国产精品直播 | 亚洲自拍偷拍色图 | 毛片在线播放网址 | 日本精品中文字幕 | 91激情在线视频 | 激情综合五月婷婷 | 免费av福利| 97免费在线观看视频 | 国产成人一区二区在线观看 | 国产精品videoxxxx | 日韩欧美视频在线免费观看 | 亚洲开心色 | 一区二区三区电影大全 | 国产精品视频观看 | 国产成人一区二区啪在线观看 | 日韩欧美一区视频 | 欧美日韩18 | 国产精品理论片 | 日韩成人中文字幕 | www.天天色 | 亚洲视频精品在线 | 日韩在线观 | 91专区在线观看 | 久草精品在线观看 | 成人黄色片免费 | 亚洲成人欧美 | 一区免费观看 | 日本中文字幕在线免费观看 | 激情av一区二区 | 天天操天天干天天摸 | 在线国产精品视频 | 久久精品中文字幕免费mv | 99视频国产精品免费观看 | 久久噜噜少妇网站 | 激情婷婷综合 | 精品产品国产在线不卡 | 碰超在线 | 91亚洲精品国产 | 手机在线永久免费观看av片 | 超碰成人av| 色综合久久久久综合体桃花网 | 激情久久一区二区三区 | 亚洲精品国产精品国自产观看浪潮 | 亚洲精品99久久久久中文字幕 | 在线韩国电影免费观影完整版 | 国产亚洲在线观看 | 狠狠色丁香久久婷婷综合五月 | 亚洲视频在线免费观看 | 欧美老人xxxx18 | 免费在线成人av | 五月天色丁香 | 中文字幕免费 | 国产一二三精品 | 日日躁天天躁 | 欧美,日韩 | 精品国产一区二区三区男人吃奶 | av资源免费在线观看 | 欧美日韩91| 日韩三级视频在线看 | 久久久麻豆视频 | 91丨九色丨91啦蝌蚪老版 | 国产免费黄视频在线观看 | 国产一级免费av | 激情视频网页 | 在线视频欧美日韩 | 欧美日韩国产网站 | 808电影免费观看三年 | 97色涩| 性色av一区二区三区在线观看 | 日韩免费在线视频观看 | 久久精品国产亚洲精品 | 韩国一区在线 | 国产精品视频免费在线观看 | 天天操福利视频 | 成人午夜精品福利免费 | 国产在线不卡 | 久久久免费视频播放 | 亚洲极色 | 亚洲精品动漫在线 | 国产成人久久精品 | 亚洲九九九在线观看 | 激情黄色一级片 | 亚洲国产操 | 日韩v欧美v日本v亚洲v国产v | 99免费在线 | 91麻豆视频网站 | 国产在线观看你懂的 | 插婷婷| 成年人免费在线观看网站 | 日韩狠狠操 | 久久久国产在线视频 | 国产九九热 | 国产一区欧美日韩 | 国产剧情av在线播放 | 欧美在线观看小视频 | 久草香蕉在线视频 | 99这里只有久久精品视频 | 久草在线一免费新视频 | 一区二区影视 | 特级西西444www大胆高清无视频 | 久久激情久久 | 亚洲婷婷在线 | 欧美一二三区播放 | 亚洲 欧美 国产 va在线影院 | 8x成人在线 | 午夜性色| 天天操天天能 | 在线免费黄色av | 在线观看成人国产 | 亚洲国产成人久久综合 | 亚洲视频h | 久久久免费在线观看 | 国产视频在线免费 | 天天操·夜夜操 | 中文字幕第| 免费看三级 | 欧美一区二区三区激情视频 | 婷婷在线播放 | 国产精品va视频 | 国产一区二区在线影院 | 国产视频每日更新 | 国产理论影院 | 中文在线中文a | 高清av中文字幕 | 91九色视频| 丁香影院在线 | 中文字幕在线视频一区二区 | 久久国产精品成人免费浪潮 | 中文字幕日本电影 | 高清av网站 | 99久免费精品视频在线观看 | 最近中文字幕大全 | 国产美女在线精品免费观看 | 日韩精品在线免费观看 | 国产护士在线 | 天天曰天天曰 | 国产99久久久欧美黑人 | 欧美日韩在线免费观看视频 | 日日添夜夜添 | av片免费播放 | 国产精选在线观看 | www.夜夜夜| 天天曰天天 | 欧美日韩亚洲在线观看 | 久爱精品在线 | 成人免费视频视频在线观看 免费 | 成人福利在线播放 | 久久精品久久99 | 久久99久久精品 | 在线黄色免费av | 国产做aⅴ在线视频播放 | 黄av免费| 四虎永久网站 | 国产96av | 国产成人精品在线 | 婷婷视频 | 天堂久久电影网 | 天天操天天操天天操天天操 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 九九视频网 | 精品久久久成人 | 手机av资源 | 国产黄色视 | 国产黄色精品视频 | 日韩黄色免费看 | 久久综合影音 | 中文在线资源 | 亚洲精品动漫成人3d无尽在线 | 黄色特级毛片 | 天天草天天干天天射 | av久久久| 久久久久五月 | 国产精品不卡在线观看 | 成人在线观看网址 | 国内亚洲精品 | 久久这里只有精品首页 | 欧美国产亚洲精品久久久8v | 精品久久久久久亚洲综合网站 | 日日精品 | 国产精品乱码久久 | 亚洲影院国产 | 91综合视频在线观看 | 国产1区2区3区在线 亚洲自拍偷拍色图 | 97电影院在线观看 | 好看av在线 | a视频免费 | 国产精品九九久久99视频 | 最近中文字幕视频网 | 中文字幕乱视频 | 91香蕉视频色版 | 久久久久成人精品亚洲国产 | 国产综合福利在线 | 色午夜| 最近免费中文字幕 | 亚洲一区二区观看 | 久久国产精品99久久久久久老狼 | 亚洲日本黄色 | 日韩av线观看 | 国产一区免费 | 国产精品综合久久久 | 色鬼综合网 | 中文字幕在线观看免费观看 | 久久久久久久久国产 | 最近中文字幕高清字幕在线视频 | 国产在线成人 | 日韩av伦理片 | 丁香婷婷网 | 成人免费网视频 | 欧美日韩亚洲在线 | 成人观看视频 | 99这里精品 | 三级动图| 成人av影院在线观看 | 一本一道久久a久久精品蜜桃 | 永久免费精品视频网站 | 99人久久精品视频最新地址 | 中文字幕av在线不卡 | 久久久久久久久国产 | 国产视频一区二区在线观看 | 色在线亚洲 | 国产高清视频在线播放一区 | www.人人干| 久久久久久久久久免费 | www.福利| 国产美女精品视频 | 狠狠色网 | 一本一本久久a久久精品综合小说 | 久草免费电影 | 日韩中文字幕免费视频 | 天天操狠狠操网站 | 美女免费视频一区二区 | 日日夜夜婷婷 | 久草在线视频资源 | 五月婷av| 国产精品永久久久久久久久久 | 欧美精品一区二区三区四区在线 | www日日 | 成人av影视在线 | 色婷婷综合成人av | free. 性欧美.com | 久久免费视频在线观看6 | 你操综合 | 日韩欧美精品在线观看 | 黄色国产精品 | 日韩三级视频在线看 | 91豆麻精品91久久久久久 | 亚洲高清激情 | 婷婷视频在线 | 久久99久久久久久 | 中文字幕一区二区三 | 在线看v片成人 | 男女视频91 | 九九免费在线视频 | 日韩va在线观看 | 国产精品视频免费观看 | 7777精品伊人久久久大香线蕉 | 永久免费的av电影 | 久久久一本精品99久久精品66 | 亚洲一区二区高潮无套美女 | 日韩一区二区三区高清在线观看 | 99在线看| 久久夜色精品国产欧美一区麻豆 | 国产成人精品久久亚洲高清不卡 | 97超级碰 | 男女全黄一级一级高潮免费看 | 私人av| 久久网页 | 国产成人精品亚洲精品 | 九九视频一区 | 日本黄色大片儿 | 国产精品mv在线观看 | 色小说在线 | 国产精品久久久久久久99 | av线上免费观看 | 国产精品igao视频网网址 | 免费日韩av片 | 国产免费三级在线观看 | 国产一区国产精品 | 深爱婷婷网 | www.色爱 | 久久看毛片 | 免费在线观看日韩 | 欧美另类美少妇69xxxx | 三级黄色大片在线观看 | 精品久久久久久久久久久久久久久久久久 | 国产精品亚洲人在线观看 | 中文字幕在线第一页 | 日韩69av| wwwwwww黄| 一区二区三区四区不卡 | 久久久精品影视 | 国产99久久久久 | 在线免费精品视频 | 午夜精品剧场 | 欧美日韩高清在线 | 91免费看片黄| 亚洲精品在线免费观看视频 | 欧美日韩亚洲第一页 | 久草在线免费播放 | 久久久久免费电影 | 成人在线一区二区三区 | 黄网站色欧美视频 | 国产性天天综合网 | 午夜精品福利在线 | 天天综合天天综合 | 88av色| av在线播放亚洲 | 久久理伦片 | 亚洲最大av网站 | 98超碰人人 | 久草97| 日韩视频三区 | 国产精在线| 免费久久久久久 | 色综合久久久久综合体桃花网 | a黄色大片 | 日韩在线观看视频中文字幕 | 国产亚洲视频在线 | 青青河边草观看完整版高清 | 天天操人 | 国产精品久久久久高潮 | 免费aa大片| 欧美a在线看 | 久久人人爽人人 | 国产一区二区视频在线播放 | 国产精品久久99精品毛片三a | 亚洲精品456在线播放乱码 | 欧美激情视频三区 | 欧美在线视频免费 | 视频国产区 | 人人爽久久涩噜噜噜网站 | 成年人免费观看在线视频 | 国产精品无av码在线观看 | 日韩欧美视频免费在线观看 | 91精品国产综合久久福利 | av免费在线观 | 成人av av在线 | 天天操天天干天天玩 | 97视频总站| 国产精品涩涩屋www在线观看 | 中中文字幕av在线 | 能在线看的av | 亚洲精品玖玖玖av在线看 | 国产人成免费视频 | 天堂av在线免费 | 久草视频免费在线观看 | 天天爽天天做 | 日韩激情小视频 | 亚洲在线观看av | 亚洲成人资源在线 | 天天操天天操天天操天天操天天操 | 欧美日韩在线观看一区二区 | 一区二区欧美激情 | 97成人精品区在线播放 | 亚洲激情免费 | 在线观看av国产 | 玖玖玖国产精品 | 精品一区精品二区高清 | 国产精品视频在线观看 | 日韩免费三区 | 欧美性黄网官网 | 在线观看精品 | 天堂av官网 | 久久综合色一综合色88 | 国产又黄又爽又猛视频日本 | 国产精品一区二区果冻传媒 | 激情久久婷婷 | 久草在线 | 国产精品999久久久 久产久精国产品 | 欧美日韩亚洲在线观看 | 超碰午夜| 亚洲闷骚少妇在线观看网站 | 伊人开心激情 | 久久无码av一区二区三区电影网 | 午夜久久久精品 | 国产成人精品a | 成人久久久电影 | 久久69精品久久久久久久电影好 | 人人澡人人草 | 美女黄频视频大全 | 免费看一及片 | 国产无遮挡又黄又爽在线观看 | 免费观看一区二区三区视频 | 99精品色| 国产精品九九久久久久久久 | 久久999久久 | 日韩av成人在线观看 | 精品国产乱码 | 日韩免费中文字幕 | 国产第一页在线观看 | 日韩天堂网 | 国产一区二区在线免费播放 | 精品福利视频在线观看 | 麻豆视频免费在线播放 | 国产一级免费观看视频 | 成人在线播放免费观看 | 91高清视频在线 | 蜜臀av性久久久久av蜜臀妖精 | 99产精品成人啪免费网站 | 中文字幕永久 | 久久精品4 | 成人免费看视频 | 国产日本亚洲高清 | 右手影院亚洲欧美 | 日韩精品极品视频 | 中文字幕久久网 | 在线中文字母电影观看 | 国产一区电影在线观看 | 黄p在线播放 | 成人在线观看免费 | 91麻豆精品国产午夜天堂 | 激情丁香久久 | 国产在线视频一区二区 | 欧美激情第28页 | av电影av在线 | 91禁在线观看 | 日本中文字幕影院 | 久久国产露脸精品国产 | 日韩丝袜 | 色99视频| 日韩在线短视频 | 综合久久久久久 | 成人在线免费观看视视频 | 中文字幕成人网 | 区一区二区三在线观看 | 亚洲影视资源 | 黄色影院在线免费观看 | 日本在线视频一区二区三区 | 93久久精品日日躁夜夜躁欧美 | 欧美精品在线观看一区 | 免费看v片网站 | 中文字幕日韩无 | 亚洲精品女人久久久 | 99久久久久久国产精品 | 一级淫片在线观看 | 色99色| 高清一区二区三区 | 久草爱视频 | 久久激情视频免费观看 | av在线日韩| 成年人在线观看 | 中文在线 | 91人人人 | 国产高清免费 | 精品国产乱码久久久久久1区2匹 | 久久久视屏 | www.久艹| 国产伦理一区二区三区 | av电影在线观看完整版一区二区 | 日本久久久久久久久 | 91完整版在线观看 | 久草综合在线观看 | 亚洲精品mv在线观看 | 色综合天天狠狠 | 国产成人久久久77777 | 激情综合站 | 欧美国产91| www.91国产| 国产五月色婷婷六月丁香视频 | 国产一级免费视频 | 亚洲午夜小视频 | 欧美精品亚州精品 | 97日日碰人人模人人澡分享吧 | 日韩在线电影观看 | 欧美激情视频一区 | av在线播放中文字幕 | 国产+日韩欧美 | 国产又粗又猛又黄又爽的视频 | 黄色a在线观看 | 成人免费看片98欧美 | 国产视频黄 | 日韩av免费大片 | 天天操偷偷干 | 在线观看日韩中文字幕 | 99精品在线观看视频 | 日韩欧美有码在线 | 亚洲精品www久久久久久 | 91精品国产高清自在线观看 | 久草在线最新 | 亚洲五月激情 | 国产免费黄视频在线观看 | 婷婷丁香国产 | 色丁香久久 | 欧美精品久久久久久久亚洲调教 | 黄色一集片 | 久久国产精品99久久久久久进口 | 曰本三级在线 | 日韩精品免费 | 亚洲欧美视频在线观看 | 高清av影院 | 狠狠躁夜夜躁人人爽超碰91 | 精品视频免费久久久看 | 日韩剧情 | 亚洲成a人片77777kkkk1在线观看 | 日韩在线电影一区 | 日韩精品中文字幕在线不卡尤物 | 97视频免费看| 激情五月色播五月 | 免费h视频| 亚洲精品乱码久久久久久按摩 | 久久精品免费电影 | 欧洲不卡av | 婷婷久久久 | 久草在线视频网 | 911久久香蕉国产线看观看 | 成年人在线免费看视频 | 国产无遮挡猛进猛出免费软件 | 超碰在线官网 | 亚洲免费观看在线视频 | 天天综合网 天天综合色 | 成人在线免费看 | 日本在线观看黄色 | 81国产精品久久久久久久久久 | 亚洲精品乱码久久久久久 | 欧美精品一区在线 | 国产福利91精品张津瑜 | 国产精品免费观看在线 | 手机看片国产 | 亚洲a在线观看 | 国产精品久久久久久久久搜平片 | 午夜av在线 | 视频在线一区二区三区 | 久久精品视频观看 | 九九色网 | 国产高清福利在线 | 欧美成人播放 | 国产91成人在在线播放 | 九九一级片| 欧美a在线免费观看 | 国产黄色片在线 |