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

歡迎訪問 生活随笔!

生活随笔

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

数据库

Mysql基础复习

發布時間:2023/12/16 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql基础复习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????????數據庫的基本操作

如何創建數據庫
數據庫的刪除操作
存儲引擎的了解及其工作原理和如何選擇
?1、創建數據庫

創建數據庫是在系統磁盤上劃分一塊區域用于數據的存儲和管理

?mysql安裝完成以后,將會在其data目錄下自動創建幾個必須的數據庫,可以使用 ?show ?databases語句查看。

通過執行show databases ?可以看到 mysql ?安裝自帶的數據庫是:information_schema、mysql、performance_schema、sakila、test、word,其中mysql是必須的,此數據庫描述了用戶的訪問權限。

創建mysql數據庫的語法格式是: ?create database database_name,其中database_name是數據庫名稱。數據庫創建完成以后可以執行 show ?create database ?查看數據庫的定義。

創建數據庫:create ?database ?database_name

查看數據庫:show ?create ?databases

查看數據庫的定義:show create database ?database_name

以上不在舉例

2、刪除數據庫

刪除數據庫是將已存在的數據庫從磁盤空間上清除,清除之后,數據庫中所有的數據也將一同被刪除。

mysql中刪除數據庫的語法是:drop database ?database_name,其中database_name 為數據庫名稱,若要刪除的數據庫不存在,則刪除出錯。是否刪除成功可執行 ?show ?databases查看。

提示:使用 drop ?database命令要非常的謹慎,因為執行此命令時,mysql不會給出任何的提醒確認信息,執行命令后,數據庫中存儲的所有數據表和數據將一同被刪除,且不可恢復。

3、數據庫的儲存引擎

???數據庫存儲引擎是數據庫底層軟件組件,數據庫管理系統(DBMS)使用數據引擎進行創建、查詢、更新和刪除數據操作。不同的存儲引擎提供不同的存儲機制、索引技巧、鎖定水平等功能,使用不同的存儲引擎,還可以獲得特定的功能。現在許多不同的數據庫管理系統都支持多種不同的數據引擎。MySQL的核心就是存儲引擎。MySQL提供了多個不同的存儲引擎,包括處理事務安全表的引擎和處理非事務安全表的引擎。在mysql中,同一個服務器中可以針對具體的要求對每一張庫表使用不同的存儲引擎。

MySQL 5.7 支持存儲引擎:InnoDB、MyISAM、Memory、Merge、Archive、Federated、CSV、Blackhole等。

可以使用 ?show ?engines ?命令查看系統所支持的存儲引擎。?

我通過navicat工具執行 show ?engines命令,結果如下圖:

其中support列的值:YES表示此引擎可以使用,NO表示不可以被使用,default表示該引擎是當前默認存儲引擎。

簡述InnoDB和MyISAM存儲引擎:

InnoDB引擎

?InnoDB是事務型數據庫的首選引擎,支持事務安全表(ACID),支持行鎖定和外鍵,MySQL 5.5.5版本之后,InnoDB作為默認的存儲引擎,InnoDB的主要特性有:

InnoDB給MySQL提供了具有提交、回滾和崩潰恢復能力的事物安全(ACID兼容)存儲引擎。
InnoDB是為處理巨大數據量的最大性能設計。他的CPU效率可能是任何其他基于磁盤的關系數據庫引擎所不能匹配的。
InnoDB存儲引擎完全與MySQL服務器整合,InnoDB存儲引擎為在主內存中緩存數據和索引而維持它自己的緩沖池。InnoDB將它的表和索引存在一個邏輯表空間中,表空間可以包含數個文件(或原始磁盤分區)?。這與MyISAM表不同,比如在MyISAM表中每個表被存在分離的文件中。
InnoDB支持外鍵完整性約束(foreign key)。存儲表中的數據時,每張表的存儲都按主鍵順序存放,如果沒有顯示在表定義時指定主鍵,InnoDB會為每一行生成一個6B的rowid,并以此作為主鍵。
InnoDB被用在眾多需要高性能的大型數據庫站點上。 ?InnoDB不創建目錄,使用InnoDB時,MySQL將在MySQL數據目錄下創建一個名為ibdata1的10MB大小的自動擴展數據文件,以及兩個名為ib_logfile0和ib_logfile1的5MB大小的日志文件。??
MyISAM引擎

MyISAM基于ISAM的存儲引擎,并對其進行擴展。它是在web、數據存儲和其他應用環境下最常用的存儲引擎之一。MyISAM擁有較高的插入、查詢速度,但不支持事務。在MySQL5.5.5之前的版本中,MyISAM是默認的存儲引擎。MyISAM主要特性有:

大文件(達63位文件長度)在支持大文件的文件系統和操作系統上被支持。
當把刪除、更新及插入操作混合使用的時候,動態尺寸的行產生更少的碎片。
每個MyISAM表最大的索引數是64,這可以通過重新編譯來改變。每個索引的最大的列數是16個。
blob和text列可以被索引。
null值被允許在索引列中,這個值占每個鍵的0~1個字節。
每個字符列可以有不同的字符集。
有varchar的表可以固定或動態記錄長度。
varchar和char列可以多達64KB。
使用MyISAM引擎創建數據庫,將產生3個文件。文件的名字以表的名字開始,擴展名指出文件類型:frm存儲表定義,數據文件的擴展名為.MYD(MYData),索引文件的擴展名是.MYI(MYIndex)。

?

存儲引擎的選擇

??不同的存儲引擎都有各自的特點,以適應不同的需求,下面是每種引擎可以提供的功能:

存儲引擎比較
功能?? ?InnoDB?? ?MyISAM?? ?Memory?? ?Archive
存儲限制?? ?64TB?? ?256TB?? ?RAM?? ?None
支持事務?? ?YES?? ?NO?? ?NO?? ?NO
支持全文索引?? ?NO?? ?YES?? ?NO?? ?NO
支持數索引?? ?YES?? ?YES?? ?YES?? ?NO
支持哈希索引?? ?NO?? ?NO?? ?YES?? ?NO
支持數據緩存?? ?NO?? ?N/A?? ?YES?? ?NO
支持外鍵?? ?YES?? ?NO?? ?NO?? ?NO
若要提供提交、回滾和崩潰恢復能力的事務安全(ACID兼容)能力,并要求實現并發控制,InnoDB是最好的選擇。
若數據表主要用來插入和查詢記錄的,MyISAM是最好的選擇,因為MyISAM引擎能提高較高的處理效率。
若只是臨時存放數據且量不大、也不需要較高的數據安全性,可以使用Memory引擎,MySQL中使用該引擎作為臨時表,存放查詢的中間結果。
若只有insert和select操作,可選擇Archive,Archive存儲引擎支持搞并發的插入操作,但是本身不是事務安全的。此引擎適合存儲歸檔數據 如記錄日志信息。
???????????????????????????????????數據表的基本操作

一、創建數據表

創建表
主鍵約束
外鍵約束
非空約束
唯一性約束
默認約束
主鍵自增
二、查看數據表結構

查看表結構
查看表詳情結構語句,即建表語句
三、修改表結構

修改表名
修改字段的數據類型
修改字段名
添加字段
刪除字段
修改字段的排列位置
修改表的存儲引擎
刪除表的外鍵約束
四、刪除數據表

刪除未被關聯的表
刪除被其他關聯的主表
一、創建數據表

1.1、表的創建:

數據表屬于數據庫,建表之前,應使用 ?use database_name ?選擇將要建表的數據庫。

建表語法格式:

create table ?<表名>(
? ? 字段名1,數據類型 [列級別的約束條件] [默認值],
? ? 字段名2,數據類型 [列級別的約束條件] [默認值],
? ? ......
?
? ? [表級別的約束條件]
?

使用create table 創建表時,要注意:

表名稱不區分大小寫,但不能使用MySQL中的關鍵字,如:drop 、alter、insert等。、
若創建多個列,需要逗號隔開。
命令查看數據庫中所有的表: ?show tables

1.2、主鍵約束

??主鍵又稱主碼,是表中一列或多列的組合。主鍵約束(primary key)要求主鍵列的數據唯一且不允許為空。主鍵能夠唯一地標識表中的一條記錄,可以結合外鍵來定義不同數據表之間的關系,并且可以加快數據庫查詢速度。主鍵分為兩種類型:單字段主鍵和多字段聯合主鍵。

單字段主鍵:由一個字段組成

語法格式:1、 字段名 ?數據類型 primary key [默認值] ??????2、[constraint<約束名>] primary key [字段名]

示例:id為主鍵

//單主鍵 ?格式1
create table user(
? ? id int(11) primary key,
? ? name varchar(20),
? ? phone ?varchar(11) ? ?
)
//單主鍵格式2
create table ?student(
? ? id int(11),
? ? name varchar(20),
? ? phone varchar(11),
? ? primary key(id)
)
多字段聯合主鍵:由多個字段組成

格式:primary ?key [字段1,字段2,...,字段n]

示例:name和phone作為聯合主鍵

create table ?test(
? ? name varchar(20),
? ? phone varchar(11),
? ? address varchar(50),
? ? primary key(name,phone)
)
1.3、外鍵約束

?外鍵釋義:

是表中的一個字段,可以不是本表的主鍵,但是對應另一個表的主鍵。
外鍵的主要作用是保證數據的一致性和完整性,定義外鍵后,不允許刪除另一個表中的具有關聯關系的行。
外鍵是用來在兩個表的數據之間建立連接,可以是一列或多列。
一個表可以有一個或多個外鍵
外鍵對應的是參照完整性,一個表的外鍵可以為空值,若不為空值,則每一個外鍵值必須等于另一個表中主鍵的某個值。
語法格式:

constraint ??外鍵名 ??foreign ??key (字段名) ??references ??主表名(主鍵列名)

語法釋義:

外鍵名是定義外鍵約束的名稱,一個表中不能有相同的外鍵名稱。
字段名是子表需要添加外鍵約束的字段列。
主表名是被子表外鍵所關聯的表的名稱。
主鍵列名是是被子表外鍵所關聯的表的主鍵列。
實例:

a表中字段b_id作為外鍵關聯b表中的主鍵id,外鍵名是fk_a_b, ?

CREATE TABLE `a` (
? `id` int(10) NOT NULL,
? `name` varchar(20) NOT NULL,
? `b_id` int(10) DEFAULT NULL,
? PRIMARY KEY (`id`),
? KEY `fk_a_b` (`b_id`),
? CONSTRAINT `fk_a_b` FOREIGN KEY (`b_id`) REFERENCES `b` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
?
CREATE TABLE `b` (
? `id` int(10) NOT NULL,
? `name` varchar(20) NOT NULL,
? `address` varchar(50) DEFAULT NULL,
? PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
提示:

關聯是指關系型數據庫中,相關表之間的關聯。
是通過相容或相同的屬性或屬性組來表示的。
子表的外鍵必須關聯主表的主鍵,且關聯字段的數據類型必須匹配,若不匹配創建的時候就會報錯。
1.4非空約束

非空約束指字段的值不能為空,對于非空約束的字段,在添加數據沒有指定值,數據庫則會報錯。

語法格式:

??????字段名 數據類型 ?not null

實例:

創建test表,并指定name字段不能為空

CREATE TABLE `test` (
? `id` int(11) NOT NULL,
? `name` varchar(20) NOT NULL,
? PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
1.5 唯一性約束

唯一性約束要求該列唯一,允許為空,但是只能出現一個空值。唯一約束可以確保一列或者多列不出現重復值

語法格式:

?字段名 數據類型 ?unique ?????定義完列直接指定唯一約束

?constraint ?約束名 unique(字段名) ?定義完所有列之后指定唯一約束(可以多字段使用唯一性約束,這樣多字段確定一條數據,即唯一)

實例:

//指定完列直接使用唯一約束 UNIQUE
create table test1(
id int(11) PRIMARY key,
name varchar(20) UNIQUE
)
//指定完所有列再使用唯一約束 ?約束名為aa?
create table test2(
id int(11) PRIMARY key,
address varchar(20),
CONSTRAINT aa UNIQUE(address)
)
//指定完所有列可以給多字段使用唯一約束 ?下面 約束名為cc ?則 test3表中name+phone 唯一
create table test3(
id int(11) PRIMARY key,
name varchar(20) NOT NULL,
phone VARCHAR(20) NOT null ,
CONSTRAINT cc UNIQUE(`name`,`phone`)
)
UNIQUE與PRIMARY KEY的區別:

一個表中可以多個字段聲明為unique,但是只能有一個primary key聲明。
聲明為primary key的列不允許有空值,但是聲明為unique的字段允許空值(null)存在。
1.6 默認約束

默認約束指定某列的默認值。

語法格式:

字段名 數據類型 default 默認值

實例:

address默認值為null,remark的默認值是‘1111’

create table test2(
id int(11) PRIMARY key,
address varchar(20) default null,
remark varchar(20) ?default '1111'
)
1.7 主鍵自增

主鍵自增:

系統自動生成字段的主鍵值
為表主鍵設置auto_increment關鍵字來實現
MySQL中auto_increment的初始值是1,每新增一條記錄,字段值自動加一
一個表只能有一個字段使用auto_increment約束,且該字段必須為主鍵的一部分
auto_increment約束的字段可以是任何整數類型
語法格式:

字段名 ?數據類型 auto_increment

實例:

create table exp(
id BIGINT(20) PRIMARY KEY auto_increment,
name VARCHAR(50) DEFAULT NULL
)
設置id為主鍵的時候執行insert插入操作時不用管id字段

?

?

查看數據表結構

1.1查看表結構

語法格式:desc 表名 ?或者 describe ?表名

1.2查看表的詳細結構

語法格式: show ??create ?table ?表名

1.1實例:

desc test3

釋義:

field 表示字段
type 表示字段類型
null ?表示該列是否可以存儲null值
key ?表示該列是否已編制索引,PRI表示該列是主鍵的一部分;NUI表示該列是UNIQUE索引的一部分;MUL表示該列某個給定值允許出現多次
default ?表示該列是否有默認值,如果有的話值是多少
extra ?表示可以獲取的與給定列的有關附加信息,比如auto_increment等
1.2 實例:

show ?create ?table ?test3

釋義:簡單的說就是得到的是得到的建表語句,初次之外就是庫表的存儲引擎和編碼格式

修改數據表

修改表是指修改已存在數據表的結構,MySQL使用alter ?table 語句修改表。

常用修改表的操作:

修改表名
修改字段名
修改字段類型
增加字段
刪除字段
修改字段的位置
更改存儲引擎
刪除表的外鍵約束
等等.....
1.1修改表名

語法格式: alter ?table ?舊表名 ??rename ?to ?新表名

實例:將test3表名更改為test表名 ???????>>?alter ?table ?test3 ?rename ?to ?test

1.2 修改字段名

語法格式: alter ?table ?表名 ?change ?舊字段名 ??新字段名 ?新數據類型

舊字段指修改前的字段名
新字段名指修改后的字段名
新數據類型指修改后的字段類型(當然修改前后的字段類型可以一樣,但是不能為空)
實例:表test3,表結構如下圖

???????????

將name字段修改為address ?類型是字符串

alter ?table ?test3 ?change ?name ??address ?varchar(50)

結果:

將test3的phone字段的數據類型由varchar(20)修改為int(11)

alter table test3 change phone phone int(11)

備注: ?change ?不僅可以修改字段名也可以只修改字段類型,實現和modify同樣的效果。

1.3修改字段類型

語法格式:alter table 表名 modify 字段名 數據類型

??????????????或 alter ?table ?表名 change ?字段名a ?字段名a ?數據類型 ????????????????change上述已經陳述過了

將test3表中的phone字段的數據類型由int(11)更改為varchar(11)

alter table test3 modify phone varchar(11)

change和modify的區別:

change不僅可以修改字段名,也可以修改字段的數據類型(修改前后的字段名一樣即可)
modify只可以修改字段的數據類型,不可以修改字段名,但是modify可以修改字段的位置(參照后面1.6)
1.4 增加字段?

語法格式:alter ?table ?表名 ?add ?新字段名 ?數據類型 ?[約束條件] [first | after ?已存在字段]

括號內為可選參數

實例:給test3表添加一個新字段name, 數據類型varchar(20),在phone字段后面

alter table test3 add name varchar(20) after phone

在test3的第一列添加 email字段,數據類型varchar(30),唯一約束

alter table test3 add email varchar(30) unique first

1.5刪除字段

語法格式: alter table 表名 drop 字段名

將test3中的email字段刪除

alter table test3?drop email

1.6 修改字段的位置

語法格式: alter table 表名 modify 字段名 數據類型 ?[first | after 已存在字段]

實例:將test3中的name字段放置id后面

alter table test3 modify name varchar(20) after id

1.7 修改存儲引擎

語法格式: alter table 表名 engine=<新的存儲引擎>

用show create table test3查看test3的存儲引擎,將InnoDB改為MyISAM

alter table test engine=MyISAM

1.8 外鍵的刪除

語法格式:alter table 表名 drop foreign key 外鍵名稱

刪除數據表

刪除數據表就是將數據庫中已存在的表從數據庫中刪除。

表的刪除主要分為兩種情況:

?????????????????????????????第一種:沒有被其他的表關聯

?????????????????????????????第二種:有被其他的表關聯

第一種 沒有被其他的表關聯:

語法格式:drop table [if exists] 表1,...表n;

drop table 可以刪除多個沒有被其他表關聯的數據表
刪除多表時,之間用逗號隔開
若果要刪除的表不存在,則MySQL會包錯誤信息。參數 if exists用于在刪除前判斷刪除的表是否存在,加上該參數刪除表時,若表不存在,sql可以順利執行,但是會發出警告
第二種刪除被關聯的表

數據表如果存在關聯的情況下,若直接刪除父表,結果會顯示失敗。原因是直接刪除,將破壞表的參照完整性,若果必須刪除,可以先刪除與其關聯的子表,再刪除父表,只是這樣同時刪除了兩個表中的數據。但有的情況寫可能要保留子表,這事如要單獨刪除父表,只需將關聯的表的外鍵條件取消,然后就可以刪除父表。

語法格式:先刪除外鍵約束 ?alter table 表名 drop foreign key 外鍵名稱

??????????????????再刪除父表 ??drop ?table 表名

實例:

tb_dept的主鍵id被tb_emp的dept_id字段所關聯,所以tb_dept是父表,tb_emp是從表。

刪除父表的的思想:

????????????????先刪除從表tb_emp的外鍵約束: alter table ?tb_emp drop foreign key fk_name

????????????????然后再刪除主表: drop table tb_dept

刪除外鍵約束的tb_emp表對象信息:

這樣在執行刪除父表的命令就不會報錯誤信息。

???????????????????????????????????數據類型和運算符

?

常見的數據類型的概念和區別
如何選擇數據類型
常見的運算符和區別及其運用
數據類型的介紹:

數值數據類型:包括整數類型 tinyint、smallint、mediumint、int、bigint、浮點小數數據類型 float和double、定點小數類型 decimal
日期/時間類型:包括year、time、date、datetime、timestamp。
字符串類型:包括char、varchar、binary、varbinary、blob、text、emum、set等。字符串類型又分為文本字符串和二進制字符串。
整數類型

??????數據型數據類型主要用來存儲數字,MySQL提供了多種數值數據類型,不同的數據類型提供不同的取值范圍,可以存儲的值范圍越大,其所需要的存儲空間也會越大。MySQL主要提供的整數類型有:tinyint、smallint、mediumint、int、bigint。整數類型的屬性字段可以添加auto_increment自增約束條件。

下圖展示MySQL中的整數型的數據類型及取值范圍

類型名稱?? ?說明?? ?存儲需求?? ?有符號?? ?無符號
TINYINT?? ?很小的整數?? ?1個字節?? ?-128~127?? ?0~255
SMALLINT?? ?小的整數?? ?2個字節?? ?-32768~32767?? ?0~65535
MEDIUMINT?? ?中等大小的整數?? ?3個字節?? ?-8388608~8388607?? ?0~16777215
INT(INTEGER)?? ?普通大小的整數?? ?4個字節?? ?-2147483648~2147483647?? ?0~4294967295
BIGINT?? ?大整數?? ?8個字節?? ?-9223372036854775808~9223372036854775807?? ?0~18446744073709551615
???????????????實例:定義一個字段 tinyint(4)???????

?????????????????????????該聲明指明,在year字段中的數據一般只顯示4位數字的寬度。???

注意:4指的是顯示的寬度,與數據類型的取值范圍無關。顯示寬度只是指明MySQL最大可能顯示的數字個數,數值的位數小于指定的寬度時會有空格填充;若大于指定寬度的值,只要不超過數據類型的取值范圍也可以存儲,而且也能夠顯示出來。

如果定義字段不指定整型數據類型所顯示的寬度,則系統會為每一種類型指定默認的寬度。

實例展示:創建test5時,未指定字段類型的寬度,用desc 查看顯示系統為每種類型加上了默認的顯示寬度

上圖可以看出,系統將添加不同的默認顯示寬度。這些顯示寬度能夠保證顯示每一種數據類型可以取到取值范圍內的所有值。

例如: TINYINT有符號和無符號的取值范圍是 -128~127和0~255,由于負號占了一個數字位,因此TINYINT默認顯示的寬度時4.同理其他整數類型的默認顯示寬度與其有符號數的最小值的寬度相同。

不同的整數類型有不同的取值范圍,并且需要不同的存儲空間,因此,應該根據實際需要選擇最合適的類型,這樣有利于提高查詢效率和節省存儲空間。

浮點數類型和定點數類型

MySQL用浮點數和定點數來表示小數。

浮點類型有兩種:單精度浮點類型 ?FLOAT 和雙精度浮點類型 DOUBLE。

定點類型只有一種:DECIMAL 。

浮點類型和定點類型都可以用(M,N)來表示,其中M稱為精度,表示總共的位數;N表示小數的位數。

類型名稱?? ?說明?? ?存儲需求
FLOAT?? ?單精度浮點數?? ?4個字節
DOUBLE?? ?雙精度浮點數?? ?8個字節
DECIMAL(M,D)?? ?壓縮的“嚴格”定點數?? ?M+2 個字節
不論是浮點類型還是定點類型,如果用戶指定的精度超出精度范圍,則會四舍五入進行處理。

例如: ?定義 字段 ?X float(5,1) ?說明 X字段總長度5,有以為小數的 ?浮點類型數據

??現在 給 字段 X賦值5.12后,最終結果是5.1 ??四舍五入

?

日期與時間類型

MySQL中表示日期的數據類型主要有:DATETIME、DATE、TIMESTAMP、TIME、YEAR。

類型名稱?? ?日期格式?? ?日期范圍?? ?存儲需求
YEAR?? ?YYYY?? ?1901~2155?? ?1個字節
TIME?? ?HH:MM:SS?? ?-838:59:59~838:59:59?? ?3個字節
DATE?? ?YYYY-MM-DD?? ?1000-01-01~9999-12-3?? ?3個字節
DATETIME?? ?YYYY-MM-DD HH:MM:SS?? ?1000-01-01 00:00:00 ~ 9999-12-31 23:59:59?? ?8個字節
TIMESTAMP?? ?YYYY-MM-DD HH:MM:SS?? ?1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC?? ?4個字節
YEAR類型

year可以使用格式指定值

以4位字符串或者4位數字格式表示的year,范圍為“1901” ~ “2155”。輸入格式為“YYYY”或者 YYYY,例如輸入2019或者“2019”,插入到數據庫的值均為2019.
以2位字符串格式表示year,范圍為“00” ~ “99”。 “00” ~ “69” 范圍被轉換為2000~2069,“70” ~ “99” 范圍被轉換為 1970~1999。“0”與“00”的作用相同,插入到數據庫的值都是2000。
以2位數字表示的year,范圍為1~99。1~69范圍的值對應2001~2069,70~99范圍的值對應1970~1999。注意:在這里0值將被轉換為0000。而不是2000
TIME類型

TIME類型用于只需要時間信息的值,格式為HH:MM:SS,HH表示小時,MM表示分鐘,SS表示秒。TIME類型的取值范圍是-838:59:59 ~ 838:59:59.小時部分如此大的原因是TIME類型不僅可以用于表示一天的時間(必須大于24小時),還可能是某個事件過去的時間或兩個事件之間的時間間隔(可以大于24小時或者甚至為負)。

可以使用各種格式指定TIME的值:

'D HH:MM:SS' 格式的字符串。還可以使用下面任何一種'非嚴格'的語法:'HH:MM:SS'、'HH:MM'、'D HH:MM'、'D HH'、'SS',這里的D表示日,可以取0~34之間的值。在插入數據庫時,D被轉換為小時保存,格式為 ' D*24 + HH '。 ?
'HHMMSS'格式的、沒有間隔符的字符串或者HHMMSS格式的數值,假定是有意義的時間。例如: '101112' 被理解為 ' 10:11:12 ',但是'109712'是不合法的(它有一個沒有意義的分鐘部分),存儲時將變為 00:00:00 。
提示:為TIME列分配簡寫值時應注意:如果沒有冒號,MySQL解釋值時,假定最右邊的兩位表示秒。(MySQL解釋TIME值為過去的時間而不是當天的時間)。例如,讀者可能認為 ' 1112 '或者1112表示11:12:00(即11點12分),但是MySQL將他們解釋為 00:11:12(即11分12秒)。同樣 ' 12 ' 或者 12 被解釋為 00:11:12。相反,TIME值中如果使用冒號則肯定被看作當天的時間。也就是說,' 11:12?' 表示 11:12:00,而不是 00:11:12 。

實例:

字段及類型?? ?插入的值?? ?結果
date ?TIME?? ?'10:05:05'?? ?10:05:05
date ?TIME?? ?'23:23'?? ?23:23:00
date ?TIME?? ?'2 10:10'?? ?58:10:00
date ?TIME?? ?'10'?? ?00:00:10
date ?TIME?? ?'101112 '?? ?10:11:12
date ?TIME?? ?'101113'?? ?10:11:13
如果插入 ?107010,MySQL會報錯誤信息,因為其中有一個不合法的分鐘。

?

插入系統當前時間: CURRENT_TIME、NOW()

DATE類型

DATE類型用在僅需要日期值時,沒有時間部分。格式為 'YYYY-MM-DD',其中YYYY表示年,MM表示月,DD表示日。在給DATE類型字段賦值時,可以使用字符串類型或者數字類型的數據插入,只要符合DATE的日期格式即可。

可以用一下格式給DATE賦值:

'YYYY-MM-DD'或者 'YYYYMMDD' 字符串格式表示的日期,取值范圍為 '1000-01-01' ~ '9999-12-3'。例如,輸入'2019-05-05'或'20190505',插入數據庫的日期都是 2015-05-05。
'YY-MM-DD'或'YYMMDD' 字符串格式表示的日期,MySQL使用以下規則解釋兩位年值:'00~69'表示'2000~2069','70~99'表示'1970~1999'。
YY-MM-DD或YYMMDD數字格式表示的日期,與上述類似,00~69表示2000~2069,70~99表示1970~1999。
使用 CURRENT_DATE或NOW(),插入系統當前時間。
提示:MySQL允許 不嚴格 語法:任何標點符號都可以用作日期部分之間的間隔符。例如,'98-11-31'、'98.11.31'、'98/11/31'是等價的。這些值也可以正確地插入到數據庫。

DATETIME類型

DATATIME ?包含日期和時間信息的值,格式: YYYY-MM-DD HH:MM:SS ,分別表示年月日時分秒。在給DATETIME類型字段賦值時,可以用字符串或數字類型的數據插入,只要符合DATETIME的格式即可。

字符串格式: 'YYYY-MM-DD HH:MM:SS'或'YYYYMMDDHHMMSS',取值范圍為 '1000-01-01 00:00:00' ~ '999-12-323:59:59'。
字符串格式: 'YY-MM-DD HH:MM:SS'或'YYMMDDHHMMSS'','00~69'表示是2000~2069,'70~99'表示是1970~1999。
數字格式:YYYY-MM-DD HH:MM:SS或YYMMDDHHMMSS,00~69表示是2000~2069,70~99表示是1970~1999。
提示:MySQL也允許不嚴格的語法,雷同DATE。

TIMESTAMP類型

TIMESTAMP顯示的格式與DATETIME相同,取值范圍為 1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07,其中 UTC為世界標準時間,因此在對此類型字段插入值時要保證在合法的取值范圍內。

TIMESTAMP典型實例:創建表test ??字段id,date

create table test(
? ? id int(11) primary key,
? ? date TIMESTAMP
)
執行上述建表語句后,查看表的對象信息

CREATE TABLE `test` (
? `id` int(11) NOT NULL,
? `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
? PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
關注這句?`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,后面加粗部分是自動生成的, ?然后就是default current_timestamp 看著有點不合適,不過重點是紅色部分:ON UPDATE CURRENT_TIMESTAMP,這部分的作用就是當此表某行某一字段值發生變化時,此日期會自動更新為系統當前時間。

當然這個也可以去掉:

勾掉即可取消

?

然后就是說下timestamp時區的問題,UTC為世界標準時間,我們一般所在時區為東8區。

實例 在test ?插入一條數據:

執行 ?select * from test ?結果如下:

這個是東8區顯示的時間格式,現在執行 ?set time_zone='+10:00',將東8區改成東10區,在執行查詢語句,結果是:

?

東10區比東8快了兩個小時......。請結合地理知識自嗨下吧

?

字符串類型

??字符串類型不僅可以存儲字符串數據,還可以存儲其他數據(例如圖片和聲音的二進制數據)。MySQL支持兩類字符型數據:文本字符串和二進制字符串。

先說下 文本字符串:

類型名稱?? ?說明?? ?存儲需求
CHAR(M)?? ?固定長度非二進制字符串?? ?M字節,1<= M <= 255
VARCHAR(M)?? ?變長非二進制字符串?? ?L+1字節,在此 L<=M 和 1<= M <= 255
TINYTEXT?? ?非常小的非二進制字符串?? ?L+1字節,在此 L < 2^8
TEXT?? ?小的非二進制字符串?? ?L+2字節,在此 L < 2^16
MEDIUMTEXT?? ?中等大小的非二進制字符串?? ?L+3字節,在此 L < 2^24
LONGTEXT?? ?大的非二進制字符串?? ?L+4字節,在此 L < 2^32
ENUM?? ?枚舉類型,只能有一個枚舉字符串值?? ?1或2個字節,取決于枚舉值的數目(最大值65535)
SET?? ?一個設置,字符串對象可以有零個或多個SER成員?? ?1、2、3、4或8個字節,取決于集合成員的數量(最多64個成員)
?CHAR類型

???CHAR(M)是固定長度的非二進制字符串,在定義時指定字符串列長,M表示列長度,M的范圍:0~255個字符。當保存時在右側填充空格以達到指定的長度,當檢索到char值時,尾部的空格將被刪除掉。

VARCHAR類型

VARCHAR(M)是長度可變的字符串,M表示最大列長度,M的范圍是 0~65535。VARCHAR的最大實際長度由最長的行的大小和使用的字符集確定,而其實際占用的空間為字符串的實際長度加1。VARCHAR在值保存和檢索時尾部的空格仍保留(char在值保存時右邊保留空格,檢索時右邊空格被自動刪除)

TEXT類型

TEXT列保存非二進制字符串,如文章內容、評論等。當保存或查詢TEXT列的值時,不刪除尾部的空格。

TEXT分為44四類:

TINYTEXT ??最大長度為255字符的TEXT列。
TEXT ?最大長度為65535字符的TEXT列。
MEDIUMTEXT ?最大長度為16777215字符的TEXT列。
LONGTEXT ?最大長度為4294967295字符的TEXT列。
ENUM類型

ENUM是一個字符串對象,其值為表創建時在列規定中枚舉的一列值。

語法格式: 字段名稱 ENUM('值1','值2',...'值n')

釋義:字段名稱指將要定義的字段,值n指枚舉列表中的第n個值。

ENUM類型的字段在取值時,只能在指定的枚舉列表中取,而且一次只能取一個。
如果創建的成員中有空格時,其尾部的空格將自動被刪除。
ENUM值在內部用整數表示,每個枚舉值均有一個索引值,列表所允許的成員值從1開始編號,MySQL存儲的就是這個索引編號。
枚舉最多可以有65535個元素。
實例一:

定義ENUM類型的列('first','second','third'),該列可以取得值和每個值的索引如下圖所示

值?? ?索引
NULL?? ?NULL
''?? ?0
first?? ?1
second?? ?2
third?? ?3
ENUM值依照列索引順序排列,并且空字符串排在非空字符串前,NULL值排在其他所有的枚舉值前。

實例二:

該實例查看列成員的索引值。

CREATE TABLE `test` (
? `id` int(11) NOT NULL AUTO_INCREMENT,
? `name` enum('first','second','third') ,
? PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
?
insert into test values(null,'second');
insert into test values(null,'first');
insert into test values(null,'third');
insert into test values(null,null);
?
?
SELECT name,name+0 from test;
結果:

從上述例子可以得出:索引值得順序(大小)是跟聲明枚舉值得順序有關,跟插入值得順序無關。

提示:ENUM列總有一個默認值。如果將ENUM列聲明為NULL,NULL值則作為該列的一個有效值,并且默認值為NULL。如果ENUM列被聲明為NOT NULL,其默認值為允許的值列表的第一個元素。

?

實例三:

聲明枚舉值,插入值和索引效果一樣。

CREATE TABLE `test` (
? `id` int(11) NOT NULL AUTO_INCREMENT,
? `name` enum('first','second','third') ,
? PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
?
insert into test values(null,1);
insert into test values(null,'second');
insert into test values(null,3);
insert into test values(null,2);
?
SELECT name,name+0 from test;
結果:

實例四:

不在枚舉值范圍的值,插入報錯。

CREATE TABLE `test` (
? `id` int(11) NOT NULL AUTO_INCREMENT,
? `name` enum('first','second','third') ,
? PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
?
insert into test values(null,5);
?
執行報出的錯誤信息:
?
[SQL]insert into test values(null,5);
[Err] 1265 - Data truncated for column 'name' at row 1
?
?
insert into test values(null,'aaa');
?
執行報出的錯誤信息:
?
[SQL]insert into test values(null,5);
[Err] 1265 - Data truncated for column 'name' at row 1
?
?
不能插入不在枚舉范圍內的值或索引值
SET類型

SET是一個字符串對象,可以有零或多個值,SET列最多可以有64個成員,其值為表創建時規定的一列值,指定包括多個SET成員的SET列值時,各成員之間用逗號(,)間隔開。

語法格式:SET('值1','值2',...'值n')

?????SET與ENUM類型相同,SET值在內部用整數表示,列表中每一個值都有一個索引編號。當創建表時,SET成員值得尾部空格將自動被刪除。但與ENUM類型不同的是,ENUM類型的字段只能從定義的列值中選擇一個插入,而SET類型的列可從定義的列值中選擇多個字符的聯合。

?如果插入SET字段中列值有重復,MySQL自動刪除重復的值
插入SET字段的值得順序并不重要,MySQL會在存入數據庫時,按照定義的順序顯示
如果插入了不正確的值,默認情況下,MySQL將忽視這些值,并給出警告。
實例:

drop table ?if EXISTS test;
CREATE TABLE `test` (
? `id` int(11) NOT NULL AUTO_INCREMENT,
? `name` set('a','b','c','d') ,
? PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
?
insert into test values(null,'a');
insert into test values(null,'a,b,a');
insert into test values(null,'c,a,d');
insert into test values(null,'a,x,d');
//最后一個插入報出警告
[SQL]
insert into test values(null,'a,x,d');
[Err] 1265 - Data truncated for column 'name' at row 1
?
select * from test;
?結果:

?

二進制字符串類型

MySQL中的二進制數據類型有:

類型名稱?? ?說明?? ?存儲需求
BIT(M)?? ?位字符類型?? ?大約(M+7)/8個字節
BINARY(M)?? ?固定長度二進制字符串?? ?M個字節
VARBINARY(M)?? ?可變長度二進制字符串?? ?M+1字節
TINYBLOB(M)?? ?非常小的BLOB?? ?L+1 字節,在此L<2^8
BLOB(M)?? ?小BLOB?? ?L+2字節,在此L<2^16
MEDIUMBLOB(M)?? ?中等大小的BLOB?? ?L+3 字節,在此L<2^24
LONGBLOB(M)?? ?非常大的的BLOB?? ?L+4字節,在此L<2^32
二進制因為不熟悉,暫時不列舉實例 ?^_^

?

????????????????????????????????????????????????????????常見遠算符

????運算符連接表達式中各個操作數,其作用是用來指明對操作數所進行的運算,遠算符是告訴MySQL執行特定算術或邏輯操作的符號。運用運算符可以更加靈活地使用表中的數據。

??常見的運算符類型有:算術運算符、比較運算符、邏輯運算符、位運算符。

算術運算符?

?????????????????????????????????????????????????????????????????????????????????????MySQL中的算術運算符

運算符?? ?作用?? ?簡單實例
+?? ?加法運算?? ?字段名稱 + n
-?? ?減法運算?? ?字段名稱 - ?n
*?? ?乘法運算?? ?字段名稱 * n
/?? ?除法運算,返回商?? ?字段名稱 / n
%?? ?求余運算,返回余數?? ?字段名稱 % n
提示:

進行算術運算的時候注意 ?算術運算符的優先級
進行除法運算時候,除數為0是沒有意義的,若被0除,則返回結果為NULL。
比較運算符

一個比較運算符的結果是1、0或者是NULL,比較運算符經常在SELECT的查詢條件子句中使用。

???????????????????????????????????????????????????????????????????????????????????????MySQL中的比較運算符

運算符?? ?作用
=?? ?等于
<=>?? ?安全的等于
<>(!=)?? ?不等于
<=?? ?小于等于
>=?? ?大于等于
<?? ?小于
>?? ?大于
IS NULL?? ?判斷一個值是否為NULL
IS NOT NULL?? ?判斷一個值是否不為NULL
LEAST?? ?在有兩個或多個參數時,返回最小值
GREATEST?? ?在有兩個或多個參數,返回最大值
BETWEEN AND?? ?判斷一個值是否落在兩個值之間
ISNULL?? ?與ISNULL作用一樣
IN?? ?判斷一個值是IN列表中的任意一個值
NOT IN?? ?判斷一個值不是IN列表中的任意一個值
LIKE?? ?通配符匹配
REGEXP?? ?正則表達式匹配
簡單的比較運算符跳過不舉實例了,找一些常用或不常見的舉些實例

等于運算符(=)

????等號運算符用來判斷數字、字符串和表達式是否相等。如果相等返回1否則返回0。

講述下比較規則:

若有一個或兩個參數為NULL,則比較運算的結果為NULL。
若同一個比較運算中的兩個參數都是字符串,則按照字符串進行比較。
若兩個參數均為整數,則按照整數進行比較。
若一個字符串和數字進行相等判斷,則MySQL可以自動將字符串轉為數字進行比較。
安全等于運算符(<=>)

?????這個操作符和 = 操作符 執行 相同的比較操作,不過<=>可以用來判斷NULL值。在兩個參數均為NULL時,其返回值為 1 而不為NULL;而當一個操作數為NULL時,其返回值為0而不為NULL。

實例:

不等于運算符(<> 或 !=)(常用)

???'<>' 或 '!=' 用于判斷數字、字符串、表達式不相等的判斷。如果不等,返回1,否則返回0。不等于運算符不能用于判斷空值NULL

IS NULL(ISNULL),IS NOT NULL 運算符(常用)

IS NULL(ISNULL)是檢驗一個值是否為NULL,若為NULL,返回值為1,否則返回值為 0。

IS NOT NULL 是檢驗一個值是否為非NULL,若是非NULL,返回值為1,否則返回值為 0 。

BETWEEN AND運算符(常用)

????語法格式: str ?between ?min ?and max?

若str大于等于min且小于等于max,則BETWEEN的返回值為1,否則返回值 0。 ?其實此運算符多用于 條件語句中

LEAST運算符

語法格式: LEAST(值1,值2,....,值n)

其中值n表示參數列表中的有n個值。作用是:在有兩個或多個參數的情況下,返回最小值。假如任意一個自變量為NULL,則LEAST()的返回值為NULL。

首先 ?參數 要滿足 有兩個或多個參數的情況下。
當參數中是整數或浮點數時,LEAST將返回其中最小的值。
當參數為字符串,返回字母表中順序最靠前的字符。
當參數中有NULL時,不能判斷大小,返回值為NULL。
GREATEST

???語法格式:GREATEST(值1,值2,....,值n)

其中n 表示參數列表有n個值。當有兩個或多個參數時,返回值為最大值。假如任意一個自變量為NULL,則GREATEST()的返回值為NULL。

首先 ?參數 要滿足 有兩個或多個參數的情況下。
當參數中是整數或浮點數時,GREATEST將返回其中最大的值。
當參數為字符串,返回字母表中順序最靠后的字符。
當參數中有NULL時,不能判斷大小,返回值為NULL。
IN 、NOT IN 運算符(常用)

多運用與 子查詢中,不多陳述。

LIKE運算符(常用)

LIKE運算符用來匹配字符串,語法格式:??str ?like 匹配條件。

若str有滿足匹配條件的,則返回值為 1 (true),反之返回 0(false)。

若str或匹配條件中,任意一個為NULL,則結果為NULL。

匹配條件中用到以下兩種通配符:

' % ' ,匹配任何數目的字符,甚至包括零字符
' _ ' ,只能匹配一個字符,也可以說是占位符
實例:?

'%a' ?匹配最后一位為a結尾的字符串。
'a%' ?匹配首位以a開頭的字符串。
'a__d' ?匹配以a開頭,以d結尾的四位字符串。
REGEXP運算符

regexp運算符用來匹配字符串,語法格式: str regexp 匹配條件?。

若str滿足匹配條件,返回 1(true),否則返回 0(false) 。

若str或匹配條件任意一個為NULL,則結果為NULL。

REGEXP運算符在進行匹配時,常用的有下面幾種通配符:

' ^?' ,匹配以該字符后面的字符開頭的字符串。 比如 '^a',匹配以a開頭的字符串。
' $ ',匹配以該字符后面的字符結尾的字符串。比如 'a$' ,匹配以a結尾的字符串。
' . ' ,匹配任意一個單字符。
'[...]' ,匹配在方括號內的任何字符。比如 '[a-zA-Z]'匹配a到z或A到Z的任意一個字符。比如'[0-9]'等。
' * ' ,匹配零個或多個在他前面的字符。比如 'x*' 匹配任何數量的 'x'字符,'[0-9]*' 匹配任何數量的數字,而'*'匹配任何數量的任何字符串。
實例:

'^y' ?>>> 匹配以y開頭的字符串。
'y$' >>> 匹配以y結尾的字符串。
'.xyz' 這個匹配這樣的:'axyz'、'axyzb'
正則表達式是一個可以進行復雜查詢的強大工具,相對于LIKE,字符串匹配。他可以使用更多的通配符類型,查詢結果更加靈活。

邏輯運算符

在MySQL中,所有邏輯運算符的求值所得結果均為TRUE、FALSE、NULL。

?????????????????????????????????????????????????????????????????????????????????MySQL中的邏輯運算符

運算符?? ?作用
NOT 或者 !?? ?邏輯非
AND 或者 &&?? ?邏輯與
OR 或者 ||?? ?邏輯或
XOR?? ?邏輯異或
NOT 或者 !

邏輯非運算符NOT或者!表示:

當操作數為 0 時,所得值為 1
當操作數為非零值時,所得值為 0
當操作數為NULL時,所得值為NULL
簡單理解:NOT 或 ! 后跟的字符串或者表達式 ?為0時,返回 1;為非零值時,返回 0;為NULL時,返回 NULL 。

實例:

???

前四對可知NOT和 ! 的返回值都相同,唯獨最后一個 NOT 1+1 和 !1+1 的值不同。。。這是因為牽扯的運算符的優先級問題

NOT的優先級低于 + 號,所以先計算+ 在執行 NOT, 所以 NOT 1+1 =??NOT 2 = 0;

!的優先級大于+號,所先執行!1,在執行+1,所以 !1+1 = 0+1=1 。

所以使用運算符時,在不清楚運算符的情況下,最好使用(),以保證運算結果的正確。

AND 或者 &&

邏輯與運算符AND或者&&表示:

所有操作數均為非零值且不為NULL時,返回值為 1?
當有一個或多個操作數為0時,返回值為 0
其余情況,返回值為NULL
實例:

有上圖可知AND和&&的作用相同, ?其實按照上述1、2、3一一對應就可以得到結果。

注意:AND運算符可以有多個操作數,當多個操作數運算時,AND兩邊一定要使用空格隔開,不然會影響結果的正確性。

OR 或者 ||

邏輯或運算符OR或者||表示:

當兩個操作數均為非NULL值且任意一個操作數為非零值時,返回值為 1,否則返回 0
當有一個操作數為NULL且另一個操作數為非零值時,返回值為 1,否則為NULL
當兩個操作數均為NULL時,返回值為NULL
實例:

XOR

邏輯異或運算符XOR:

當任意一個操作數為NULL時,返回值為NULL,
對于非NULL操作數,如果兩個操作數都是非零或者都是零值,返回值為0
若一個操作數為0值,另一個為非0值,返回結果為 1
實例:

提示: a XOR b 的計算等同于(a AND(NOT b))或者((NOT a)AND b)

?

位運算符

????????位運算符時是用來對二進制字節中的位進行測試、位移或者測試處理。

?????????????????????????????????????????????????????????????????????????????????MySQL中的位運算符

運算符?? ?作用
|?? ?位或
&?? ?位與
^?? ?位異或
<<?? ?位左移
>>?? ?位右移
~?? ?位取反,反轉所有比特
位或運算符(|)

位或運算的實質是將參與運算的幾個數據,按對應的二進制數逐位進行邏輯或運算。對應的二進制位有一個或兩個為 1,則運算結果為1,否則為 0。

實例:

其實 ?位或(|)運算需要先學會 邏輯或(OR 或 ||)運算。

實例解析:9的二進制數值為1001,4的二進制數值為0100,2的二進制數值為0010.

????????????????先 ?1001與0100進行按位邏輯或運算得到二進制1101

????????????????在 用 二進制1101與0010進行邏輯或運算得到二進制1111

????????????????而 1111二進制轉換十進制就是15

位與運算符(&)

????位與運算的實質是將參與運算的幾個操作數,按對應的二進制數逐位進行邏輯與運算。對應的二進制位都為1,則該位的運算結果為1,否則為0 。

位異或運算符(^)

位異或運算的實質是將參與運算的兩個參數,按對應的二進制數逐位進行邏輯異或運算。對應位的二進制數不同時,對應位的結果為1,如果兩個對應位數都為0或者都為1,咋對應位的結果為0 。

位左移運算符(<<)

位左移運算符<<使指定的二進制的所有位都左移指定的位數。左移指定位數之后,左邊高位的數值將被移出并丟棄,右邊低位空出的位置用0補齊。

語法格式: str ?<< n ??釋義 str的二進制數值 ?左移 ?n ?位

實例: 4 << 2

位右移運算符(>>)

位右移運算符>>使指定的二進制值得所有位都右移指定的位數。右移指定位數之后,右邊低位的數值將被移出并丟棄,左邊高位空出的位置用0補齊。

語法格式: ?str ?>> ?n ???釋義: ?str的二進制右移n位

實例: ?16 >> 2

位取反運算符(~)

位取反運算的實質是將參數,按二進制數逐位反轉。即二進制按位是1的變0,是0的變1。

實例: 1取反 ?????~1

?

來一張運算符的優先級圖

優先級?? ?運算符
最低?? ?=(賦值運算) ??:=
??? ?|| ????OR
XOR
&& ?AND
NOT
BETWEEN ?CASE ?WHEN ??ELSE
=(比較運算) <==> ??>= ??> ?<= ?< ?<> ?!= ??IS ?LIKE ??REGEXP ??IN
|
&
<< ???>>
- ??+
* ????/(DIV) ???%(MOD)
^
-(負號) ???~
最高?? ?!
?

????????????????????????????????????????????????????????????????MySQL函數

了解什么是MySQL的函數
數學函數
字符串函數
時間和日期函數
條件函數
系統信息函數
加密函數
其他特殊函數
?

什么是MySQL函數

函數表示對輸入參數值返回一個具有特定關系的值,MySQL提供了大量豐富的函數,在進行數據庫管理以及數據的查詢和操作時將會經常用到各種函數。通過對數據的處理,數據庫功能可以變得更加強大,更加靈活地滿足不同用戶的需求。

從功能上函數主要分為以下幾類:數學函數、字符串函數、日期和時間函數、條件判斷函數、系統信息函數、加密函數等。

接下來介紹不同函數的用法:

數學函數

數學函數主要用來處理數值數據,主要的數學函數有:絕對值函數、三角函數(正余弦函數、正余切函數)、對數函數、隨機函數等。在有錯誤產生時,數學函數將會返回空值NULL。

1、絕對值函數 ?ABS(X)

ABS(X)返回X的絕對值

當然 ABS(X),X可以是數據表的字段名??

2、圓周率函數 ?PI( )

PI()返回圓周率π的值。默認得顯示小數位數是6位。

3、平方根函數 SQRT(X)

SQRT(X)返回非負數X的二次方根。

實例:列舉一些簡單便于口算的例子

注意:負數沒有平方根,所以返回NULL。

4、求余函數 MOD(X,Y)

MOD(X,Y)返回x被y除后的余數。MOD()對于有小數部分的數值也起作用,它返回除法運算后的精確余數。

5、獲取證書的函數 CEIL(X)、CEILING(X)和FLOOR(X)

CEIL(X)和CEILING(X)函數的意義相同,都是返回不小于x的最小整數值,返回值轉化為一個BIGINT,而FLOOR(X)返回不大于x的最大整數值,返回值轉化為一個BIGINT。

這個幾個函數向上還是向下取值,容易混淆。

個人記憶方法。。。floor 英文釋義有:地板、地板或者最小的 ?最低的 ?意思。 floor(X)取比x小且最接近的整數,反之ceil(x)、ceiling(x)取比x大且最接近的整數。 ??記floor反推ceil和ceiling

6、獲取隨機數函數 RAND( )和RAND(X)\

RAND(x)返回一個隨機浮點值v,范圍在0到1之間(即0<= v >= 1.0)。若指定參數X,則它被用作種子值,用來產生重復序列,若沒有指定參數x,則每次產生的隨機數值時不同的。

7、函數 ROUND(X)、ROUND(X,Y)和TRUNCATE(X,Y)

ROUND(X)返回最接近于參數X的整數,對X的值進行四舍五入。

ROUND(X,Y)返回最接近于參數X的數,其值保留到小數點后面Y位,若Y為負值,則將保留Y值到小數點左邊Y位。

注意:y為負數時,保留的時候不進行四舍五入,正數的時候會進行四舍五入。

TRUNCATE(X,Y) 返回被舍去至小數點后y位的數字x。若y的值為0,則結果不帶有小數點或不帶有小數部分。若y為負數,則截去(歸零)x小數點左起第y位開始后面所有低位的值。

提示:ROUND(X,Y)函數截取值的時候會四舍五入,TRUNCATE(X,Y)直接截取不會四舍五入。

8、負號函數 SIGN(X)

SIGN(X)返回參數的符號,x的值為負、零或正時返回結果依次為-1、0或1。

9、冪運算函數 POW(X,Y)、POWER(X,Y) 和 EXP(X)

POW(x,y)或POWER(x,y)函數返回x的y次乘方的結果值。

EXP(X)返回e的x乘方后的值。

10、對數運算函數 LOG(X) 和 LOG10(X)

LOG(x)返回x的自然對數,x相對于基數e的對數

對數定義域不能為負數,因此LOG(-3)返回的結果為NULL

LOG10(x)返回x的基數為10的對數。

對數的定義域為非負,否則返回NULL

11、角度與弧度相互轉換的函數 radians(x)和degrees(x)

radians(x)將參數x由角度轉化為弧度。

degrees(x)將參數x由弧度轉化為角度

還有一些 其他的函數

正弦函數 ??SIN(X) 返回x的正弦,其中x為弧度值。

反正弦函數 ASIN(X) 返回X的反正弦,即正弦x的值。若x不在-1到1的范圍之內,則返回NULL。

余弦函數 COS(X) ?返回x的余弦,其中x為弧度。

反余弦函數 ACOS(X) 返回x的反余弦,即余弦x的值。若x不在-1-1的范圍內,則返回NULL。

正切函數 TAN(X) 返回x的正切,其中x為給定的弧度值。

反正切函數 ATAN(X) 返回x的反正切,即正切的x的值。

余切函數 ?COT(X) 返回x的余切。

字符串函數

字符串函數主要用來處理數據庫中的字符串數據,MySQL中字符串函數有:計算字符串長度函數、字符串合并函數、字符串替換函數、字符串比較函數、查找指定字符串位置函數等。

1、計算字符串字符數的函數 ?CHAR_LENGTH(str)

????char_length(str) 返回值為字符串str所包含的字符個數。

2、計算字符串長度的函數 LENGTH(str)?

??返回值為字符串的字節長度,使用utf8編碼字符集時,一個漢字是3個字節,一個數字或字母算一個字節。

?

看下 ?char_length(str)和 length(str) ?的區別:

除了漢字的字符串,字母和數字 ?計算結果兩者一樣。

3、合并字符串函數 CONCAT(s1,s2,...) 、CONCAT_WS(x,s1,s2,...)

concat(s1,s2,...) 返回結果為連接參數產生的字符串,或許有一個或多個參數。

?????若有任何一個參數為NULL,則返回值為NULL。

?????若所有參數均為非二進制字符串,則結果為非二進制字符串。

?????若參數中有一個是二進制字符串,則結果為一個二進制字符串。

concat_ws(x,s1,s2,...) ?concat_ws代表concat with separator ,是concat()的特殊形式。第一個參數x是其他參數的分隔符,分隔符的位置放在要連接的兩個字符串之間。分隔符可以是一個字符串也可以是其他參數。如果分隔符為NULL,則結果為NULL。函數會忽略任何分隔符參數后的NULL值。

除此之外 還有一個函數?group_concat()

這個實戰用的比較多,實例看文章:https://blog.csdn.net/qq_35044419/article/details/79492746

4、字符串替換函數 INSERT(s1,x,len,s2)

INSERT(s1,x,len,s2) 返回從s1串x(不是下標)位置開始,用s2字符串替換s1串len長度后的字符串。

若x的值超出字符串s1的長度,則返回原字符串s1。
若len的長度大于字符串s1的長度,則從s1起始位置x開始,截到結尾,再s2取填充。
若任意一個參數為NULL,則返回值為NULL。
實例:

a:從'abcdefg'第2位置開始,用'YYYYY'替換2個長度,即替換掉bc,則替換后結果是:'aYYYYYdefg'。

b:從'abcdefg'第2位置開始,用'YYYYY'替換4個長度,即替換掉bcde,則替換后的結果是:'aYYYYYfg'

c:從'abcdefg'第2位置開始,用'YYYYY'替換0個長度,即啥也不替換,則替換后的結果是:'abcdefg'

d和d1不解釋,0超出'abcdefg'的長度,返回原串

e:從'abcdefg'第2位置開始,用'YYYYY'替換10個長度,由于10大于'abcdefg'的長度,即從2位置開始替換的結尾,結果:'aYYYYY'

f:10超過'abcdefg'的長度,返回原串

g:任意一個參數為NULL,則返回NULL。

以上實例表達的很清晰。

5、字母大小寫轉換函數

LOWER(str) 、LCASE(str) 將字符串str中的字母字符全部轉換成小寫字母(大寫轉小寫,小寫不用變)。

UPPER(str) 、UCASE(str)將字符串str中的字母字符全部轉換成大寫字母(小寫轉成大寫,大寫不用變)。

不舉實例

6、獲取指定長度的字符串的函數 LEFT(s,n) 和RIGHT(s,n)

LEFT(s,n)返回字符串s從左邊開始長度為n的字符串。

RIGHT(s,n)返回字符串從右邊開始長度為n的字符串。

實例:

實例不解釋

7、字符串填充函數 LPAD(s1,len,s2)和RPAD(s1,len,s2)

LPAD(s1,len,s2) 返回字符串s1,其左邊由字符串s2填補到len字符長度,若s1的長度大于len,則返回值被縮短至len字符(即從s1的右邊開始縮短,直至長度等于len)

實例:

注意e和e1、f和f1、g和g1的結果。

RPAD(s1,len,s2) ?這個與LPAD(s1,len,s2)相反。

實例:

8、刪除空格的函數

LTRIM(str) 返回字符串str左側空格被刪除的字符串。

RTRIM(str) 返回字符串str右側空格被刪除的字符串。?

TRIM(str) ???返回字符串str兩側空格被刪除的字符串。

?

比較通俗易懂,不做實例。。。。

9、刪除指定字符串的函數 TRIM(s1 FROM?s)

TRIM(s1 FROM s) 刪除字符串s中兩端所有的字符串s1。s1為可選項,在未指定的情況下刪除空格。

實例:

看結果,但是有點不解,結果中也有ab,不清楚這個函數怎么分割的兩端 ^_^

10、重復生成字符串的函數 REPEAT(s,n)

REPEAT(s,n) 返回重復生成n次s的字符串

不做實例

11、空格函數SPACE(n)和REPLACE(s,s1,s2)

SPACE(s) 返回一個由n個空格組成的字符串。 ??不做實例

REPLACE(s,s1,s2) 返回由字符串s2替換s中所有的字符串s1的字符串。

12、比較字符串大小的函數 STRCMP(s1,s2)

STRCMP(s1,s2) 比較字符串的大小

若s1與s2相同,則返回0
若s1小于s2,則返回-1
若s1大于s2,則返回1
不做實例

13、獲取子串的函數 SUBSTRING(s,n,len)和MID(s,n,len)

substring(s,n,len) ?s是指字符串,n值開始截取的位置(正數時正向位置開始,負數時反向位置開始),len時截取的長度(省略時截取到結尾,若為小于1的數,咱返回空串)。

mid(s,n,len)作用很substring(s,n,len)相同

實例:

14、匹配字符串開始位置的函數

LOCATE(str1,str)、POSITION(str1 IN str2)、INSTR(str,str1)三個函數的作用相同,返回字符串str1在字符串str中的開始位置。

以上實例可知,若str1在str中存在,則返回子串str1的開始位置,不存在則返回0
?

總結

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

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

玖玖视频在线 | 亚洲成年人av | 天天射天天操天天 | www色av| 国产亚洲精品久久网站 | 在线免费观看涩涩 | 99精品欧美一区二区 | 黄色软件网站在线观看 | www狠狠| 玖玖爱在线观看 | 国产精品久久艹 | 最新午夜 | 国产精品麻豆99久久久久久 | 精产嫩模国品一二三区 | 少妇搡bbb | 日韩一区精品 | 婷婷久久国产 | 成人a v视频| 中文字幕在线观看第三页 | 亚洲婷婷在线 | 三三级黄色片之日韩 | 亚洲资源网 | 亚洲最大av网站 | 国产精品午夜av | 99精品国产一区二区三区麻豆 | www.成人精品 | 在线色吧 | 青春草视频在线播放 | 九九久久免费 | 亚洲精品国产精品国自产 | 91最新网址| 国产aa免费视频 | www色com| 在线免费国产 | 婷婷网五月天 | 狠狠88综合久久久久综合网 | 国产区网址 | 黄色亚洲精品 | 91资源在线| 色久综合 | 国产一区二区三区免费在线 | 成人av影院在线观看 | 色国产精品 | 91成人国产| 美女久久久久久久久久 | 亚洲精品成人 | 精品天堂av | www.天天射.com | 成人小视频在线观看免费 | 亚洲精品乱码久久 | 久久精品亚洲一区二区三区观看模式 | 伊人午夜 | 毛片网在线 | 日韩精品一区二区在线观看视频 | 久人人 | 午夜久久久影院 | 91污视频在线 | 久久99精品久久只有精品 | 91精品视频在线看 | adc在线观看 | 国产成人精品亚洲日本在线观看 | 国产一区二区不卡视频 | 综合色中色 | 国产精品普通话 | 黄色av一区二区 | 久久国语露脸国产精品电影 | 欧美一区二区三区不卡 | 日韩精品一区二区在线视频 | 成人小视频在线观看免费 | 久久99久久99精品免观看粉嫩 | 又黄又爽免费视频 | 久久激情电影 | 亚洲精品久久久久中文字幕m男 | 一区av在线播放 | 国产成人亚洲在线电影 | 国产精品毛片一区二区三区 | 九九综合九九综合 | 国产精品18毛片一区二区 | 国产亚洲欧洲 | 中文字幕在线免费看 | 久久久久麻豆v国产 | 五月婷婷在线综合 | 韩国av一区二区三区在线观看 | 99理论片 | 欧美另类亚洲 | 国产成人三级一区二区在线观看一 | 国产精品免费观看在线 | 日本电影久久 | 天天爽天天爽夜夜爽 | 国产成人精品在线观看 | 五月天视频网 | 精品播放 | 国产在线综合视频 | 国产精品18videosex性欧美 | 九九免费精品视频在线观看 | 香蕉影视 | 99视频+国产日韩欧美 | 色婷婷亚洲综合 | 久久久福利视频 | 91人人插| 91亚洲综合 | 亚洲首页| 久草在线官网 | 午夜精品久久久久久99热明星 | 日本中文字幕网址 | 午夜精品电影一区二区在线 | 精品久久久久久久久久岛国gif | 国产一级免费片 | 97国产小视频| 国内精品久久影院 | 国产精品资源在线观看 | 69精品久久久 | www黄免费 | 欧美激情第一区 | 国产美女精品久久久 | 久久亚洲影院 | 国产护士在线 | 久久久综合九色合综国产精品 | 丰满少妇高潮在线观看 | 久久久久五月天 | 在线观看黄av | 手机色在线 | 亚洲精品小区久久久久久 | 成人免费在线看片 | 亚洲黄色小说网 | 成人影视免费看 | 日韩av伦理片 | 日韩极品在线 | 亚洲午夜久久久综合37日本 | 欧美精品久久久久久久久久丰满 | 国产不卡在线看 | 91免费观看视频在线 | av免费看在线 | 亚洲精品视频在线观看免费视频 | 91探花国产综合在线精品 | 亚洲精品在线免费观看视频 | 久久综合欧美精品亚洲一区 | 五月花丁香婷婷 | 久久精品电影网 | 一级精品视频在线观看宜春院 | 欧美小视频在线观看 | 免费观看www小视频的软件 | 三级av免费看 | 亚洲精品乱码久久久久久蜜桃欧美 | 婷婷丁香激情综合 | 国产亚洲高清视频 | 天堂av免费 | 91香蕉亚洲精品 | 国产精品国产三级国产专区53 | 欧美 高跟鞋交 xxxxhd | 久久99精品一区二区三区三区 | 婷婷激情5月天 | 中文字幕国产在线 | 成人久久精品视频 | 五月丁色 | 在线午夜av| 国产v视频 | 国产一区免费在线观看 | 久久丝袜视频 | 81精品国产乱码久久久久久 | 久久夜夜爽| 国产理论片在线观看 | 在线观看亚洲免费视频 | 一本色道久久精品 | 66av99精品福利视频在线 | 天天五月天色 | 精品久久国产精品 | 黄色亚洲免费 | 亚洲欧洲国产精品 | 日韩夜夜爽 | 91精品视频一区二区三区 | 亚洲精品乱码久久久久久蜜桃不爽 | 开心色插 | 国产成人精品网站 | 一级久久久 | 久久久久久99精品 | 最近的中文字幕大全免费版 | 精品久久久免费视频 | 欧美国产精品一区二区 | 91精品久久久久久 | 狠狠操欧美 | 午夜国产福利在线观看 | 福利视频网址 | 日韩伦理一区二区三区av在线 | 亚洲成人av在线播放 | 五月在线| 国产96视频 | 在线观看亚洲电影 | 九九热在线播放 | 国产精品美女久久久久久久 | 亚洲美女视频在线 | 中文字幕精品三级久久久 | 色黄视频免费观看 | 日日夜夜综合网 | 国产精品一区在线观看你懂的 | av一区二区三区在线播放 | 亚洲精品黄色在线观看 | 国产又粗又猛又黄又爽 | 日韩午夜小视频 | 久久99久久99精品免费看小说 | 久久久久欧美精品 | 婷婷激情久久 | 国产黄色片一级三级 | 精品国产视频在线观看 | 国产高清 不卡 | 91在线九色 | 91精品国产成人观看 | 最近中文字幕高清字幕在线视频 | 久久精品1区| 欧美日韩久久不卡 | 久久手机免费视频 | 亚洲丝袜中文 | 欧美一级爽 | 国产高清视频在线播放一区 | 美女久久久久久 | 中文字幕资源在线 | 奇米网网址 | 超碰在线天天 | 亚洲一区二区高潮无套美女 | 成人免费视频在线观看 | 999成人| 中文字幕久久久精品 | 911国产在线观看 | 69国产盗摄一区二区三区五区 | 久久久久久国产精品 | 午夜精品久久久久久久99 | 国产尤物在线视频 | 波多野结衣视频一区 | 色综合www | 九色精品 | 人人插人人做 | 久久久毛片 | 久久精品电影 | 国产成人精品一区二三区 | 久久精品一二三区 | 狠狠操操操| 97**国产露脸精品国产 | 久久国产精品二国产精品中国洋人 | 精品欧美一区二区精品久久 | 一区二区三区在线看 | 亚洲精品在线观看的 | 日韩国产精品久久久久久亚洲 | 日韩在线观 | 五月天久久婷 | 丁香花中文字幕 | 亚洲一二三在线 | 日韩久久一区 | 色婷婷色| 久久99国产精品免费 | 亚洲成人精品国产 | 午夜久久久久久久久 | 欧美在线视频精品 | 欧美做受xxx | 超碰伊人网 | 成人久久亚洲 | 午夜影视一区 | www.久久婷婷 | 国产美女精品视频免费观看 | 一级a性色生活片久久毛片波多野 | 人人爽人人av | 一区二区 不卡 | 色视频一区 | 国内精品久久久久久久久久清纯 | 成人三级av | 亚洲 欧美 综合 在线 精品 | 亚洲激精日韩激精欧美精品 | 九九热视频在线播放 | 性日韩欧美在线视频 | 精品免费一区二区三区 | 亚洲国产午夜视频 | 欧美美女一级片 | 国产成人一区二区三区电影 | 91视频最新网址 | 五月婷婷综合在线 | 久久视频6| 色婷婷激情四射 | 亚洲国产日韩av | 草莓视频在线观看免费观看 | 美女网站视频免费都是黄 | 久久五月婷婷综合 | 欧美精品久久久久久久久久丰满 | 97在线观看免费视频 | 中文字幕免费观看全部电影 | 成人精品电影 | 日韩中文字幕在线看 | 2022国产精品视频 | 狠狠网亚洲精品 | 国产高清在线免费视频 | 99精品偷拍视频一区二区三区 | 91麻豆看国产在线紧急地址 | 国产 亚洲 欧美 在线 | 久久国产精品免费观看 | 综合天堂av久久久久久久 | 久久精品免费 | 911av视频| 久久久久国产一区二区三区 | 国产精品入口麻豆www | 最近中文字幕在线播放 | 91成熟丰满女人少妇 | 制服丝袜亚洲 | 精品一区精品二区高清 | a级国产乱理伦片在线观看 亚洲3级 | 九九九免费视频 | 亚州av一区| 99精品热视频只有精品10 | 天堂av官网| 亚洲欧美视频在线播放 | 99re8这里有精品热视频免费 | 最新精品视频在线 | 在线影院av | 色综合久久久久 | 国产精品女主播一区二区三区 | 国产又粗又猛又黄视频 | 日韩成人精品一区二区三区 | 亚洲欧美日韩国产一区二区三区 | 日韩视频一区二区三区 | 免费三级大片 | 久久久亚洲精品 | 国内少妇自拍视频一区 | 麻豆影视网站 | 欧美一级片免费在线观看 | 国产一区在线免费 | 人人艹人人 | 手机看片中文字幕 | 欧美久久久久久久久中文字幕 | 在线观看va | 日韩精品你懂的 | 国产精品视频久久久 | 91毛片在线观看 | 久久久久久久av | 66av99精品福利视频在线 | japanese黑人亚洲人4k | 456成人精品影院 | 日本爱爱免费 | 天天操比 | 久久国产欧美日韩 | 探花视频在线版播放免费观看 | 国产特级毛片 | 国产高清在线观看 | 国产精品中文字幕在线观看 | 久久99精品久久久久久 | 免费能看的av | 在线免费观看黄色 | 99国产在线视频 | 日韩精品在线免费观看 | 91九色porny蝌蚪视频 | 亚洲三级在线免费观看 | 精品乱码一区二区三四区 | 在线你懂的视频 | 在线免费观看国产视频 | 97精品国产97久久久久久 | 在线看国产日韩 | 黄网站色视频免费观看 | 中文字幕在线字幕中文 | 夜夜摸夜夜爽 | 日本在线观看黄色 | 免费日韩一区二区三区 | 国产专区在线 | www蜜桃视频 | 手机在线中文字幕 | 日韩特黄av | 亚洲精品美女在线观看 | 91精品视频观看 | 亚洲欧美日韩精品久久奇米一区 | 久久午夜色播影院免费高清 | 欧美性粗大hdvideo | 免费人成在线观看网站 | 久久免费中文视频 | 欧美性生活久久 | 久久精品久久精品久久精品 | 777久久久 | 一区二区三区影院 | 亚洲精品视频二区 | 免费av看片| 中文字幕在线看片 | 色av资源网 | 国产一级片播放 | 狠狠色丁香婷婷综合视频 | 色综合五月天 | 久久在线精品视频 | av在线成人 | 日本中文字幕免费观看 | 亚洲精品国产精品乱码不99热 | 日韩黄色网络 | 成人九九视频 | 久久精品在线 | 激情久久五月 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 狠狠干五月天 | 久久精品国产免费看久久精品 | 国产精品一区二区av影院萌芽 | 免费试看一区 | 91成人在线视频观看 | 精品国产人成亚洲区 | 成人黄色在线视频 | 精品久久一 | 精品乱码一区二区三四区 | 亚洲精品视频免费 | 国产精品一区二区免费看 | 亚洲最大成人网4388xx | 99久热在线精品视频 | 成人性生交大片免费看中文网站 | 久久婷婷一区二区三区 | 日本中文不卡 | 在线中文字幕观看 | 99精品视频免费观看 | 天天操天天弄 | 九九视频精品免费 | 亚州天堂 | 韩日三级av | 日韩视频在线一区 | 97电影院网| 五月婷婷在线视频 | 亚洲九九精品 | 就要干b| 91精品视频一区二区三区 | 久久免费美女视频 | 免费视频久久久 | 97超级碰碰 | av再线观看 | 欧美精品久久人人躁人人爽 | 国产麻豆精品久久一二三 | 亚洲婷婷网 | 日韩精品免费一区二区三区 | 亚洲综合色激情五月 | 日韩电影久久 | 国内成人综合 | 国内视频在线 | 丝袜美女视频网站 | 在线免费中文字幕 | 日本久久电影 | 天天操天天操天天操天天操天天操天天操 | 亚洲 av网站 | 中文字幕三区 | 精品资源在线 | 精品亚洲欧美无人区乱码 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 久久精品99国产精品日本 | 色狠狠狠 | 成人黄色免费在线观看 | 日韩成人不卡 | 中文字幕色播 | 欧美大片在线观看一区 | 一区中文字幕电影 | 久久亚洲人 | 欧美精品久久久久久久亚洲调教 | 国产中文字幕av | 久久久久久久久久久久影院 | 亚洲乱码精品久久久久 | 婷婷在线精品视频 | 亚洲国产手机在线 | 欧美久久久久久久久久久久久 | 午夜成人影视 | 久久爱资源网 | 日日干日日色 | 日韩在线免费看 | www.久久免费 | 五月天色中色 | 精品免费久久久久久 | 久久免费精品国产 | 国产精品理论片在线播放 | 伊人婷婷色 | 国产91在线免费视频 | 成人毛片100免费观看 | 成人精品电影 | 亚洲精品资源在线观看 | 超碰日韩在线 | 成人av高清在线观看 | 免费国产亚洲视频 | 日韩av一区在线观看 | 国产成人av网站 | 亚洲精品玖玖玖av在线看 | 91网址在线看 | 久久成人国产精品一区二区 | 国产九九热视频 | 日韩特黄一级欧美毛片特黄 | 99在线热播精品免费99热 | 久久久久久久毛片 | 色丁香久久 | 一级黄色片在线观看 | 美女福利视频在线 | 久操视频在线观看 | 国产精品一区二区免费视频 | 麻豆视频一区二区 | 五月婷香| 三级av免费看 | 91麻豆产精品久久久久久 | 国产一级淫片在线观看 | av黄色免费网站 | 2020天天干夜夜爽 | 国产三级视频在线 | 国产精品剧情在线亚洲 | 成人毛片一区二区三区 | 欧美一区二区在线刺激视频 | 色精品视频 | 日本aaa在线观看 | 国产中文字幕一区 | 欧美韩国在线 | 婷婷社区五月天 | 五月婷婷中文网 | 韩国av一区二区 | 色婷婷综合久久久 | 精品在线观看视频 | 国产精品18久久久久久久网站 | 国产精品美女在线观看 | 亚洲国产成人久久综合 | 精品国产美女 | 久草网站在线观看 | 日韩av不卡在线观看 | 日韩videos高潮hd | 婷婷丁香狠狠爱 | 成人在线免费观看视视频 | 婷婷www| 欧美a性 | 中文字幕久久精品亚洲乱码 | 欧美亚洲国产一卡 | 毛片网免费 | 亚洲一级免费观看 | 麻花天美星空视频 | 91丨九色丨勾搭 | 国产在线第三页 | 97人人澡人人爽人人模亚洲 | 久久精品欧美一 | 手机看片 | 国产精品第一页在线观看 | 日日夜夜精品免费观看 | 日韩三级免费 | 一级黄色毛片 | 国产午夜一级毛片 | www夜夜操com | 欧美视频二区 | 日韩精品一区二区三区水蜜桃 | 国产高清99 | 欧美日韩视频一区二区三区 | 黄色精品在线看 | 在线免费国产视频 | 免费进去里的视频 | 国产精品视频免费观看 | 黄色a一级片 | 色综合久久88色综合天天人守婷 | 高清免费在线视频 | 日日夜夜婷婷 | 黄色毛片大全 | .精品久久久麻豆国产精品 亚洲va欧美 | 狠狠色丁香婷婷综合视频 | 午夜999 | 欧美一区二区伦理片 | 国产黄色精品 | 欧美日韩p片 | 五月开心六月伊人色婷婷 | 黄色一级大片在线免费看国产一 | 久久99中文字幕 | 国产欧美最新羞羞视频在线观看 | 亚洲欧洲日韩 | 黄色午夜 | 天天玩天天干天天操 | 91在线视频在线 | 狠狠狠色丁香婷婷综合激情 | 日韩欧美精品一区二区三区经典 | 国产精品免费大片视频 | 久久这里只有精品23 | av网站在线免费观看 | 久久综合久久综合久久综合 | 欧美精品中文 | 韩国精品福利一区二区三区 | 免费视频在线观看网站 | 最新中文字幕在线观看视频 | 六月色丁香 | 午夜视频色 | 色婷婷激情 | 欧美精品一区在线 | 亚洲精品黄色 | 久久香蕉国产精品麻豆粉嫩av | 日本性xxx| 国产999精品久久久影片官网 | 精品国偷自产在线 | 国产最新在线 | 超碰人人在线 | 91成人看片 | 日本午夜在线亚洲.国产 | 色婷婷综合久久久久中文字幕1 | 国内精品免费久久影院 | 成人黄色大片 | 8090yy亚洲精品久久 | 综合色在线 | 韩国精品在线 | 亚洲男女精品 | 精品国产乱码久久 | 鲁一鲁影院 | 国产视频在线播放 | 日韩影视精品 | 91视频88av| 亚洲一级理论片 | 国产 av 日韩 | 在线看黄色的网站 | 91在线视频播放 | 欧美在线一级片 | 亚洲视频网站在线观看 | 天天狠狠| 日韩精品免费一区二区 | 91看片在线免费观看 | 日韩乱色精品一区二区 | 一区二区三区精品在线 | 成人午夜精品福利免费 | 国产精品美女久久 | 人人澡超碰碰 | 免费在线看v | 国产精彩视频一区二区 | 免费99精品国产自在在线 | 久久久久久久影视 | 精品视频9999 | 精品久久99 | 亚洲毛片久久 | 国产在线一卡 | 欧美日韩在线观看一区 | 亚洲欧洲视频 | 国产精品美女毛片真酒店 | 97色综合 | 精品福利网 | 丁香久久综合 | 一级特黄av | 久久激情视频 | 国际精品久久久 | 亚洲激情在线观看 | 国产精品成久久久久 | 日韩视频一二三区 | 一区二区三区免费看 | 天天爱天天操天天干 | 亚洲精品国产综合99久久夜夜嗨 | 欧美精品小视频 | 欧美日韩国产成人 | 久久人人爽人人爽人人片av免费 | 91av免费看 | 亚洲天天综合 | 免费成人av电影 | 国产精品白丝av | 亚洲国产小视频在线观看 | www欧美xxxx| 成人三级网站在线观看 | 男女全黄一级一级高潮免费看 | 波多野结衣小视频 | 亚洲精品自在在线观看 | 99视频在线免费 | 色wwwww| 美女国内精品自产拍在线播放 | 国产精品一区二区麻豆 | 国产97在线观看 | 在线免费黄网站 | 日韩精选在线 | 久久精品一区二区国产 | 丰满少妇在线观看网站 | 久久精品电影网 | 国产一区二区三区高清播放 | 久草在线免费看视频 | 国产视频一区在线播放 | 韩国一区二区在线观看 | 婷婷综合导航 | 婷婷精品视频 | 国产中文字幕视频在线观看 | 婷婷午夜 | 国产精品女同一区二区三区久久夜 | 日韩黄在线观看 | 日韩免费不卡视频 | 99久久精品国产系列 | av国产网站| 一本一道久久a久久综合蜜桃 | 国产在线91在线电影 | 在线精品观看 | 黄在线免费看 | 久久在线精品视频 | 久久久久久久99精品免费观看 | 精品国产aⅴ麻豆 | av线上免费看| 亚洲欧美日韩精品久久奇米一区 | 免费观看黄 | 国产日韩中文字幕在线 | 国产黄色片一级 | 欧美日韩在线观看视频 | 欧美激情精品 | 日韩欧美一区二区三区免费观看 | 国产精品理论片在线播放 | 成片视频免费观看 | 麻豆免费在线视频 | 天天干天天玩天天操 | 最近日本韩国中文字幕 | 97在线免费视频观看 | 99视频在线观看视频 | 国产理论在线 | 成人av网站在线播放 | 97超碰在 | 丁香六月在线观看 | 亚洲一片黄 | 久久国产精品一区二区三区 | 国产成人精品久久久久 | 久久夜色网| 九九久久电影 | 亚洲欧美国产精品18p | 国产亚洲精品久久久网站好莱 | 黄色成年 | 中文字幕在线免费 | 西西4444www大胆视频 | 免费在线黄色av | 天堂av在线网 | 夜夜爽www| 久久国产三级 | 婷婷激情在线观看 | 亚洲免费婷婷 | 不卡视频在线 | 天天天天爱天天躁 | 成人免费中文字幕 | 久久成人国产精品 | 一级免费看| 日日爱视频 | 麻豆视频91 | 久久久久在线 | 国产群p视频 | 麻豆国产视频 | 国产精品综合久久久 | 亚洲欧洲精品一区二区精品久久久 | 夜夜干夜夜 | 最新亚洲视频 | 国产糖心vlog在线观看 | 黄色软件视频网站 | 99精品欧美一区二区三区 | 伊人激情综合 | 麻豆国产在线播放 | 国产原厂视频在线观看 | 免费中文字幕 | 黄色特级毛片 | 黄色www在线观看 | 激情婷婷网| 日韩69视频 | 五月婷婷婷婷婷 | 黄色高清视频在线观看 | 亚洲精品456在线播放第一页 | 国产一区二区在线免费播放 | 最新日韩在线 | 久久婷婷开心 | 亚洲精品视频免费看 | 久久精品综合 | 日韩3区 | 人人爽人人爽人人爽 | 欧美日韩后 | 伊人五月| www.色午夜,com | 美女视频a美女大全免费下载蜜臀 | 久久久精品网站 | 四虎在线观看视频 | 国产一区二区三区网站 | 亚洲最新av网站 | 欧美激情综合色综合啪啪五月 | 亚洲成人av影片 | 在线观看视频免费播放 | 特黄特色特刺激视频免费播放 | 欧美久久精品 | 成人久久18免费网站麻豆 | 国产精品video| 天天色天天艹 | 国产精品一区二区久久精品爱涩 | 久久国产精品区 | 成 人 a v天堂| 99免费国产 | 色综合天天综合网国产成人网 | 免费在线观看av的网站 | 久久精品导航 | 国产在线视频一区 | 亚洲经典视频 | 日韩久久精品一区二区 | 久久在线免费视频 | 黄色在线看网站 | 日韩性xxxx| 日韩免费看片 | 亚洲黄色免费网站 | 国产群p视频 | 日韩欧美高清在线观看 | 色婷婷综合久久久中文字幕 | 日本精品视频在线 | 日韩免费在线一区 | 亚洲精品一区二区三区新线路 | av电影在线观看完整版一区二区 | 欧美成人69av | 国内精品久久久久久久影视麻豆 | 黄网站色欧美视频 | 日韩乱理 | 欧美日韩国产一二三区 | 免费久久网 | 日韩在线观看视频中文字幕 | 国产精品美女久久久久久久 | 久久精品视频在线 | 成人精品999| 国产在线 一区二区三区 | 国产精品成人一区二区三区吃奶 | 国产精品1区2区 | av免费片| 久久久久欧美精品 | www.午夜视频 | 日韩在线视频线视频免费网站 | 精品一区二区免费视频 | 在线色视频小说 | 久久大视频 | 欧美最新大片在线看 | 久久精品官网 | 97在线资源 | 婷婷六月综合网 | 特级西西444www大精品视频免费看 | www国产精品com | 99精品黄色| 国产精品久久久久久妇 | 免费日韩三级 | 日本最新高清不卡中文字幕 | 在线91观看 | 久久九九影院 | 最新日本中文字幕 | 特黄免费av| 日日干激情五月 | 国产91精品高清一区二区三区 | 色网影音先锋 | 国产精品视频app | 国产精品视频久久久 | 久草网在线视频 | 国产精品久久久久久久久费观看 | 亚洲一级特黄 | 中文字幕免费观看全部电影 | 日韩欧美精品在线观看视频 | 日日综合网 | 国产精品九九久久99视频 | 久久精品91久久久久久再现 | 亚洲精品美女视频 | 亚洲第一区在线观看 | 97色婷婷成人综合在线观看 | 偷拍精品一区二区三区 | 97影视| 十八岁免进欧美 | 天天操天天干天天操天天干 | www色片 | 久久久亚洲麻豆日韩精品一区三区 | 亚洲免费国产视频 | 91久久丝袜国产露脸动漫 | 国产日产在线观看 | 精品中文字幕在线 | 欧美在线视频第一页 | 久久99这里只有精品 | 人人爽人人爽人人片 | 欧美不卡视频在线 | 天天干夜夜爽 | 亚州人成在线播放 | 999久久国产精品免费观看网站 | 精品美女久久 | 久久高清免费视频 | 日韩av免费大片 | 久久亚洲私人国产精品 | 亚洲视频高清 | 国产 av 日韩| 成人在线免费观看视视频 | 日本xxxxav | 久久爱www.| 精品亚洲免费视频 | 国产成人精品av在线观 | 国产中文字幕精品 | 亚洲精品一区二区三区四区高清 | 涩涩网站在线 | 色综合亚洲精品激情狠狠 | 人人爽人人爽人人爽人人爽 | 九九在线高清精品视频 | 中文字幕一区二区三区精华液 | 天天操天天干天天插 | 国产精品一区二区三区在线 | 草久在线播放 | 成人在线视频你懂的 | 色午夜 | 欧美日韩中文在线视频 | 日本护士三级少妇三级999 | 久久丁香网| 欧美影片 | 人人狠狠综合久久亚洲婷 | 人人超在线公开视频 | 一级性视频 | 成人片在线播放 | 国产高清精| 色综合综合 | 久久久精品 | 成人啪啪18免费游戏链接 | 91麻豆国产福利在线观看 | 亚洲激情小视频 | 国产成人91 | 精品视频www | 久草免费色站 | 这里有精品在线视频 | 精品久久久久国产免费第一页 | 中文字幕在线观看亚洲 | 91av超碰 | 久久精品超碰 | 色综合人人 | 欧洲精品视频一区二区 | 激情五月婷婷激情 | 国产小视频在线免费观看 | 精品影院| 亚洲91精品| 日韩欧美高清一区二区三区 | 中文字幕免费观看 | 欧美日韩国产在线观看 | 国产精品热视频 | 国产在线毛片 | 色狠狠久久av五月综合 | 国产亚洲综合精品 | 欧美国产日韩一区二区三区 | 中文字幕在线第一页 | 国产资源在线免费观看 | 丁香 婷婷 激情 | 久久夜色精品国产欧美乱 | 天天操福利视频 | 成人在线视频一区 | 在线免费观看视频a | 亚洲黄色一级电影 | 成年人app网址 | 国产精品精品久久久 | 欧美午夜寂寞影院 | 黄色com | 视频在线观看91 | 欧美日韩国产精品一区二区 | 亚洲另类视频 | 国产一区二区三区四区在线 | 精品久久久久久亚洲综合网站 | 国产成人精品免费在线观看 | 免费黄a大片 | 日本久草电影 | 丁香花在线观看视频在线 | 国产一级片不卡 | 国产五码一区 | 日韩二区三区在线观看 | 亚洲精品一区二区精华 | 九色最新网址 | 精选久久| 国产 日韩 欧美 自拍 | 亚洲综合在线一区二区三区 | 91精品久久久久久久久 | 日韩高清毛片 | 一区二区精品在线观看 | 久久天天操 | 国产特级毛片aaaaaaa高清 | 日韩欧美极品 | 国产不卡毛片 | 在线视频专区 | 亚洲精品www久久久 www国产精品com | 久草男人天堂 | 亚洲免费激情 | 国产精品久久久久影院日本 | 日本久久高清视频 | 久久久久一区 | 一级成人网 | 狠狠色狠狠色综合日日小说 | 久久综合狠狠综合久久激情 | 美女福利视频一区二区 | 久久视频精品 | 97网在线观看 | 中文字幕在线乱 | 丁香婷婷综合色啪 | 国产手机视频 | 国产精品mm| 不卡的av片| 天堂av最新网址 | 中文字幕精品久久 | 国产只有精品 | 91九色综合 | 久久永久免费视频 | 成人 亚洲 欧美 | 国产精品18久久久久久久久久久久 | 色婷婷综合激情 | 91在线免费视频 | 91福利视频在线 | 69亚洲精品 | 日韩v在线91成人自拍 | 婷婷色网 | 91精品久久久久久粉嫩 | 五月婷婷在线观看视频 | 欧美性生活大片 | 欧美久久久久久久久久久久 | 黄色看片 | 91视频最新网址 | 天天爽夜夜爽精品视频婷婷 | 国产精品一区二区久久久久 | 久久久99精品免费观看app | 国产一区二区三区在线免费观看 | 日韩大片在线播放 | 精品在线二区 | 久久久久国产a免费观看rela | 精品久久精品久久 | 午夜 久久 tv | 亚洲精品乱码久久久久久久久久 | 成人福利av| 欧美国产精品久久久久久免费 | 天堂av高清 | 国产在线久草 | 日韩女同av | 久久视频这里有久久精品视频11 | 色综合婷婷久久 | 久久久午夜精品福利内容 | 亚洲欧美日韩精品久久奇米一区 |