亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長(zhǎng)資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    本篇文章給大家?guī)?lái)MySQL的基礎(chǔ)的相關(guān)知識(shí)整理分享,知識(shí)點(diǎn)雖然簡(jiǎn)單,但是比較多,方便自己以后查找,希望對(duì)大家有幫助。

    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    一、SQL簡(jiǎn)述

    1.SQL的概述

    Structure Query Language(結(jié)構(gòu)化查詢(xún)語(yǔ)言)簡(jiǎn)稱(chēng)SQL,它被美國(guó)國(guó)家標(biāo)準(zhǔn)局(ANSI)確定為關(guān)系型數(shù)據(jù)庫(kù)語(yǔ)言的美國(guó)標(biāo)準(zhǔn),后被國(guó)際化標(biāo)準(zhǔn)組織(ISO)采納為關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言的國(guó)際標(biāo)準(zhǔn)。數(shù)據(jù)庫(kù)管理系統(tǒng)可以通過(guò)SQL管理數(shù)據(jù)庫(kù);定義和操作數(shù)據(jù),維護(hù)數(shù)據(jù)的完整性和安全性。

    2.SQL的優(yōu)點(diǎn)

    1、簡(jiǎn)單易學(xué),具有很強(qiáng)的操作性
    2、絕大多數(shù)重要的數(shù)據(jù)庫(kù)管理系統(tǒng)均支持SQL
    3、高度非過(guò)程化;用SQL操作數(shù)據(jù)庫(kù)時(shí)大部分的工作由DBMS自動(dòng)完成

    3.SQL的分類(lèi)

    1、DDL(Data Definition Language) 數(shù)據(jù)定義語(yǔ)言,用來(lái)操作數(shù)據(jù)庫(kù)、表、列等; 常用語(yǔ)句:CREATE、 ALTER、DROP
    2、DML(Data Manipulation Language) 數(shù)據(jù)操作語(yǔ)言,用來(lái)操作數(shù)據(jù)庫(kù)中表里的數(shù)據(jù);常用語(yǔ)句:INSERT、 UPDATE、 DELETE
    3、DCL(Data Control Language) 數(shù)據(jù)控制語(yǔ)言,用來(lái)操作訪問(wèn)權(quán)限和安全級(jí)別; 常用語(yǔ)句:GRANT、DENY
    4、DQL(Data Query Language) 數(shù)據(jù)查詢(xún)語(yǔ)言,用來(lái)查詢(xún)數(shù)據(jù) 常用語(yǔ)句:SELECT

    二、數(shù)據(jù)庫(kù)的三大范式

    1、第一范式(1NF)是指數(shù)據(jù)庫(kù)表的每一列都是不可分割的基本數(shù)據(jù)線(xiàn);也就是說(shuō):每列的值具有原子性,不可再分割。
    2、第二范式(2NF)是在第一范式(1NF)的基礎(chǔ)上建立起來(lái)得,滿(mǎn)足第二范式(2NF)必須先滿(mǎn)足第一范式(1NF)。如果表是單主鍵,那么主鍵以外的列必須完全依賴(lài)于主鍵;如果表是復(fù)合主鍵,那么主鍵以外的列必須完全依賴(lài)于主鍵,不能僅依賴(lài)主鍵的一部分。
    3、第三范式(3NF)是在第二范式的基礎(chǔ)上建立起來(lái)的,即滿(mǎn)足第三范式必須要先滿(mǎn)足第二范式。第三范式(3NF)要求:表中的非主鍵列必須和主鍵直接相關(guān)而不能間接相關(guān);也就是說(shuō):非主鍵列之間不能相關(guān)依賴(lài)。

    三、數(shù)據(jù)庫(kù)的數(shù)據(jù)類(lèi)型

    使用MySQL數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)時(shí),不同的數(shù)據(jù)類(lèi)型決定了 MySQL存儲(chǔ)數(shù)據(jù)方式的不同。為此,MySQL數(shù)據(jù)庫(kù)提供了多種數(shù)據(jù)類(lèi)型,其中包括整數(shù)類(lèi)型、浮點(diǎn)數(shù)類(lèi)型、定點(diǎn) 數(shù)類(lèi)型、日期和時(shí)間類(lèi)型、字符串類(lèi)型、二進(jìn)制…等等數(shù)據(jù)類(lèi)型。

    1.整數(shù)類(lèi)型

    根據(jù)數(shù)值取值范圍的不同MySQL 中的整數(shù)類(lèi)型可分為5種,分別是TINYINT、SMALUNT、MEDIUMINT、INT和 BIGINT。下圖列舉了 MySQL不同整數(shù)類(lèi)型所對(duì)應(yīng)的字節(jié)大小和取值范圍而最常用的為INT類(lèi)型的,

    數(shù)據(jù)類(lèi)型 字節(jié)數(shù) 無(wú)符號(hào)數(shù)的取值范圍 有符號(hào)數(shù)的取值范圍
    TINYINT 1 0~255 -128~127
    SMALLINT 2 0~65535 -32768~32768
    MEDIUMINT 3 0~16777215 -8388608~8388608
    INT 4 0~4294967295 -2147483648~ 2147483648
    BIGINT 8 0~18446744073709551615 -9223372036854775808~9223372036854775808

    2.浮點(diǎn)數(shù)類(lèi)型和定點(diǎn)數(shù)類(lèi)型

    在MySQL數(shù)據(jù)庫(kù)中使用浮點(diǎn)數(shù)和定點(diǎn)數(shù)來(lái)存儲(chǔ)小數(shù)。浮點(diǎn)數(shù)的類(lèi)型有兩種:?jiǎn)尉雀↑c(diǎn)數(shù)類(lèi)型(FLOAT)和雙精度浮點(diǎn)數(shù)類(lèi)型(DOUBLE)。而定點(diǎn)數(shù)類(lèi)型只有一種即DECIMAL類(lèi)型。下圖列舉了 MySQL中浮點(diǎn)數(shù)和定點(diǎn)數(shù)類(lèi)型所對(duì)應(yīng)的字節(jié)大小及其取值范圍:

    數(shù)據(jù)類(lèi)型 字節(jié)數(shù) 有符號(hào)的取值范圍 無(wú)符號(hào)的取值范圍
    FLOAT 4 -3.402823466E+38~-1.175494351E-38 0和1.175494351E-38~3.402823466E+38
    DOUBLE 8 -1.7976931348623157E+308~2.2250738585072014E-308 0和2.2250738585072014E-308~1.7976931348623157E+308
    DECIMAL(M,D) M+2 -1.7976931348623157E+308~2.2250738585072014E-308 0和2.2250738585072014E-308~1.7976931348623157E+308

    從上圖中可以看出:DECIMAL類(lèi)型的取值范圍與DOUBLE類(lèi)型相同。但是,請(qǐng)注意:DECIMAL類(lèi)型的有效取值范圍是由M和D決定的。其中,M表示的是數(shù)據(jù)的長(zhǎng) 度,D表示的是小數(shù)點(diǎn)后的長(zhǎng)度。比如,將數(shù)據(jù)類(lèi)型為DECIMAL(6,2)的數(shù)據(jù)6.5243 插人數(shù)據(jù)庫(kù)后顯示的結(jié)果為6.52

    3.字符串類(lèi)型

    在MySQL中常用CHAR 和 VARCHAR 表示字符串。兩者不同的是:VARCHAR存儲(chǔ)可變長(zhǎng)度的字符串。
    當(dāng)數(shù)據(jù)為CHAR(M)類(lèi)型時(shí),不管插入值的長(zhǎng)度是實(shí)際是多少它所占用的存儲(chǔ)空間都是M個(gè)字節(jié);而VARCHAR(M)所對(duì)應(yīng)的數(shù)據(jù)所占用的字節(jié)數(shù)為實(shí)際長(zhǎng)度加1

    插入值 CHAR(3) 存儲(chǔ)需求 VARCHAR(3) 存儲(chǔ)需求
    ‘’ ‘’ 3個(gè)字節(jié) ‘’ 1個(gè)字節(jié)
    ‘a(chǎn)’ ‘a(chǎn)’ 3個(gè)字節(jié) ‘a(chǎn)’ 2個(gè)字節(jié)
    ‘a(chǎn)b’ ‘a(chǎn)b’ 3個(gè)字節(jié) ‘a(chǎn)b’ 3個(gè)字節(jié)
    ‘a(chǎn)bc’ ‘a(chǎn)b’ 3個(gè)字節(jié) ‘a(chǎn)bc’ 4個(gè)字節(jié)
    ‘a(chǎn)bcd’ ‘a(chǎn)b’ 3個(gè)字節(jié) ‘a(chǎn)bc’ 4字節(jié)

    4.字符串類(lèi)型

    文本類(lèi)型用于表示大文本數(shù)據(jù),例如,文章內(nèi)容、評(píng)論、詳情等,它的類(lèi)型分為如下4種:

    數(shù)據(jù)類(lèi)型 儲(chǔ)存范圍
    TINYTEXT 0~255字節(jié)
    TEXT 0~65535字節(jié)
    MEDIUMTEXT 0~16777215字節(jié)
    LONGTEXT 0~4294967295字節(jié)

    5.日期與時(shí)間類(lèi)型

    MySQL提供的表示日期和時(shí)間的數(shù)據(jù)類(lèi)型分別是 :YEAR、DATE、TIME、DATETIME 和 TIMESTAMP。下圖列舉了日期和時(shí)間數(shù)據(jù)類(lèi)型所對(duì)應(yīng)的字節(jié)數(shù)、取值范圍、日期格式以及零值:

    數(shù)據(jù)類(lèi)型 字節(jié)數(shù) 取值范圍 日期格式 零值
    YEAR 1 1901~2155 YYYY 0000
    DATE 4 1000-01-01~9999-12-31 YYYY-MM-DD 0000-00-00
    TIME 3 -838:59:59~ 838:59:59 HH:MM:SS 00:00:00
    DATETIME 8 1000-01-01 00:00:00~9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 0000-00-00 00:00:00
    TIMESTAMP 4 1970-01-01 00:00:01~2038-01-19 03:14:07 YYYY-MM-DD HH:MM:SS 0000-00-00 00:00:00

    5.1 YEAR類(lèi)型

    YEAR類(lèi)型用于表示年份,在MySQL中,可以使用以下三種格式指定YEAR類(lèi)型 的值。
    1、使用4位字符串或數(shù)字表示,范圍為’1901’—'2155’或1901—2155。例如,輸人 ‘2019’或2019插人到數(shù)據(jù)庫(kù)中的值均為2019。
    2、使用兩位字符串表示,范圍為’00’—‘99’。其中,‘00’—'69’范圍的值會(huì)被轉(zhuǎn)換為 2000—2069范圍的YEAR值,‘70’—'99’范圍的值會(huì)被轉(zhuǎn)換為1970—1999范圍的YEAR 值。例如,輸人’19’插人到數(shù)據(jù)庫(kù)中的值為2019。
    3、使用兩位數(shù)字表示,范圍為1—99。其中,1—69范圍的值會(huì)被轉(zhuǎn)換為2001— 2069范圍的YEAR值,70—99范圍的值會(huì)被轉(zhuǎn)換為1970—1999范圍的YEAR值。例 如,輸人19插入到數(shù)據(jù)庫(kù)中的值為2019。
    請(qǐng)注意:當(dāng)使用YEAR類(lèi)型時(shí),一定要區(qū)分’0’和0。因?yàn)樽址袷降摹?’表示的YEAR值是2000而數(shù)字格式的0表示的YEAR值是0000。

    5.2 TIME類(lèi)型

    TIME類(lèi)型用于表示時(shí)間值,它的顯示形式一般為HH:MM:SS,其中,HH表示小時(shí), MM表示分,SS表示秒。在MySQL中,可以使用以下3種格式指定TIME類(lèi)型的值。
    1、以’D HH:MM:SS’字符串格式表示。其中,D表示日可取0—34之間的值, 插人數(shù)據(jù)時(shí),小時(shí)的值等于(DX24+HH)。例如,輸入’2 11:30:50’插人數(shù)據(jù)庫(kù)中的日期為59:30:50。
    2、以’HHMMSS’字符串格式或者HHMMSS數(shù)字格式表示。 例如,輸人’115454’或115454,插入數(shù)據(jù)庫(kù)中的日期為11:54:54
    3、使用CURRENT_TIME或NOW()輸人當(dāng)前系統(tǒng)時(shí)間。

    5.3 DATETIME類(lèi)型

    DATETIME類(lèi)型用于表示日期和時(shí)間,它的顯示形式為’YYYY-MM-DD HH: MM:SS’,其中,YYYY表示年,MM表示月,DD表示日,HH表示小時(shí),MM表示分,SS 表示秒。在MySQL中,可以使用以下4種格式指定DATETIME類(lèi)型的值。
    ?以’YYYY-MM-DD HH:MM:SS’或者’YYYYMMDDHHMMSS’字符串格式表示的日期和時(shí)間,取值范圍為’1000-01-01 00:00:00’—‘9999-12-3 23:59:59’。例如,輸人’2019-01-22 09:01:23’或 ‘20140122_0_90123’插人數(shù)據(jù)庫(kù)中的 DATETIME 值都為 2019-01-22 09:01:23。
    1、以’YY-MM-DD HH:MM:SS’或者’YYMMDDHHMMSS’字符串格式表示的日期和時(shí)間,其中YY表示年,取值范圍為’00’—‘99’。與DATE類(lèi)型中的YY相同,‘00’— '69’范圍的值會(huì)被轉(zhuǎn)換為2000—2069范圍的值,‘70’—'99’范圍的值會(huì)被轉(zhuǎn)換為1970—1999范圍的值。
    2、以YYYYMMDDHHMMSS或者YYMMDDHHMMSS數(shù)字格式表示的日期 和時(shí)間。例如,插入20190122090123或者190122090123,插人數(shù)據(jù)庫(kù)中的DATETIME值都 為 2019-01-22 09:01:23。
    3、使用NOW來(lái)輸人當(dāng)前系統(tǒng)的日期和時(shí)間。

    5.4 TIMESTAMP類(lèi)型

    TIMESTAMP類(lèi)型用于表示日期和時(shí)間,它的顯示形式與DATETIME相同但取值范圍比DATETIME小。在此,介紹幾種TIMESTAMP類(lèi)型與DATATIME類(lèi)型不同的形式:
    1、使用CURRENT_TIMESTAMP輸人系統(tǒng)當(dāng)前日期和時(shí)間。
    2、輸人NULL時(shí)系統(tǒng)會(huì)輸人系統(tǒng)當(dāng)前日期和時(shí)間。
    3、無(wú)任何輸人時(shí)系統(tǒng)會(huì)輸入系統(tǒng)當(dāng)前日期和時(shí)間。

    6.二進(jìn)制類(lèi)型

    在MySQL中常用BLOB存儲(chǔ)二進(jìn)制類(lèi)型的數(shù)據(jù),例如:圖片、PDF文檔等。BLOB類(lèi)型分為如下四種:

    數(shù)據(jù)類(lèi)型 儲(chǔ)存范圍
    TINYBLOB 0~255字節(jié)
    BLOB 0~65535字節(jié)
    MEDIUMBLOB 0~16777215字節(jié)
    LONGBLOB 0~4294967295字節(jié)

    四、數(shù)據(jù)庫(kù)、數(shù)據(jù)表的基本操作

    1.數(shù)據(jù)庫(kù)的基本操作

    MySQL安裝完成后,要想將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)的表中,首先要?jiǎng)?chuàng)建一個(gè)數(shù)據(jù)庫(kù)。創(chuàng) 建數(shù)據(jù)庫(kù)就是在數(shù)據(jù)庫(kù)系統(tǒng)中劃分一塊空間存儲(chǔ)數(shù)據(jù),語(yǔ)法如下:

    create database 數(shù)據(jù)庫(kù)名稱(chēng);

    創(chuàng)建一個(gè)叫db1的數(shù)據(jù)庫(kù)MySQL命令:

    -- 創(chuàng)建一個(gè)叫db1的數(shù)據(jù)庫(kù)show create database db1;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)
    創(chuàng)建數(shù)據(jù)庫(kù)后查看該數(shù)據(jù)庫(kù)基本信息MySQL命令:

    show create database db1;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)
    刪除數(shù)據(jù)庫(kù)MySQL命令:

    drop database db1;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)
    查詢(xún)出MySQL中所有的數(shù)據(jù)庫(kù)MySQL命令:

    show databases;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)
    將數(shù)據(jù)庫(kù)的字符集修改為gbk MySQL命令:

    alter database db1 character set gbk;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)
    切換數(shù)據(jù)庫(kù) MySQL命令:

    use db1;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)
    查看當(dāng)前使用的數(shù)據(jù)庫(kù) MySQL命令:

    select database();

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    2.數(shù)據(jù)表的基本操作

    數(shù)據(jù)庫(kù)創(chuàng)建成功后可在該數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)表(簡(jiǎn)稱(chēng)為表)存儲(chǔ)數(shù)據(jù)。請(qǐng)注意:在操作數(shù)據(jù)表之前應(yīng)使用“USE 數(shù)據(jù)庫(kù)名;”指定操作是在哪個(gè)數(shù)據(jù)庫(kù)中進(jìn)行先關(guān)操作,否則會(huì)拋出“No database selected”錯(cuò)誤。
    語(yǔ)法如下:

     create table 表名(          字段1 字段類(lèi)型,          字段2 字段類(lèi)型,          …          字段n 字段類(lèi)型);

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

    示例:創(chuàng)建學(xué)生表 MySQL命令:

     create table student(  id int,  name varchar(20),  gender varchar(10),  birthday date  );

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    2.2 查看數(shù)據(jù)表

    示例:查看當(dāng)前數(shù)據(jù)庫(kù)中所有表 MySQL命令:

    show tables;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)
    示例:查表的基本信息 MySQL命令:

    show create table student;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)
    示例:查看表的字段信息 MySQL命令:

    desc student;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

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

    有時(shí),希望對(duì)表中的某些信息進(jìn)行修改,例如:修改表名、修改字段名、修改字段 數(shù)據(jù)類(lèi)型…等等。在MySQL中使用alter table修改數(shù)據(jù)表.
    示例:修改表名 MySQL命令:

    alter table student rename to stu;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)
    示例:修改字段名 MySQL命令:

    alter table stu change name sname varchar(10);

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)
    示例:修改字段數(shù)據(jù)類(lèi)型 MySQL命令:

    alter table stu modify sname int;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)
    示例:增加字段 MySQL命令:

    alter table stu add address varchar(50);

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)
    示例:刪除字段 MySQL命令:

    alter table stu drop address;

    運(yùn)效果展示:

    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

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

    語(yǔ)法:

    drop table 表名;

    示例:刪除數(shù)據(jù)表 MySQL命令:

    drop table stu;

    運(yùn)行效果展示:

    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    五、數(shù)據(jù)表的約束

    為防止錯(cuò)誤的數(shù)據(jù)被插入到數(shù)據(jù)表,MySQL中定義了一些維護(hù)數(shù)據(jù)庫(kù)完整性的規(guī)則;這些規(guī)則常稱(chēng)為表的約束。常見(jiàn)約束如下:

    約束條件 說(shuō)明
    PRIMARY KEY 主鍵約束用于唯一標(biāo)識(shí)對(duì)應(yīng)的記錄
    FOREIGN KEY 外鍵約束
    NOT NULL 非空約束
    UNIQUE 唯一性約束
    DEFAULT 默認(rèn)值約束,用于設(shè)置字段的默認(rèn)值

    以上五種約束條件針對(duì)表中字段進(jìn)行限制從而保證數(shù)據(jù)表中數(shù)據(jù)的正確性和唯一性。換句話(huà)說(shuō),表的約束實(shí)際上就是表中數(shù)據(jù)的限制條件。

    1.主鍵約束

    主鍵約束即primary key用于唯一的標(biāo)識(shí)表中的每一行。被標(biāo)識(shí)為主鍵的數(shù)據(jù)在表中是唯一的且其值不能為空。這點(diǎn)類(lèi)似于我們每個(gè)人都有一個(gè)身份證號(hào),并且這個(gè)身份證號(hào)是唯一的。
    主鍵約束基本語(yǔ)法:

    字段名 數(shù)據(jù)類(lèi)型 primary key;

    設(shè)置主鍵約束(primary key)的第一種方式
    示例:MySQL命令:

    create table student(id int primary key,name varchar(20));

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)
    設(shè)置主鍵約束(primary key)的第二·種方式
    示例:MySQL命令:

    create table student01(id intname varchar(20),primary key(id));

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    2.非空約束

    非空約束即 NOT NULL指的是字段的值不能為空,基本的語(yǔ)法格式如下所示:

    字段名 數(shù)據(jù)類(lèi)型 NOT NULL;

    示例:MySQL命令:

    create table student02(id intname varchar(20) not null);

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    3.默認(rèn)值約束

    默認(rèn)值約束即DEFAULT用于給數(shù)據(jù)表中的字段指定默認(rèn)值,即當(dāng)在表中插入一條新記錄時(shí)若未給該字段賦值,那么,數(shù)據(jù)庫(kù)系統(tǒng)會(huì)自動(dòng)為這個(gè)字段插人默認(rèn)值;其基本的語(yǔ)法格式如下所示:

    字段名 數(shù)據(jù)類(lèi)型 DEFAULT 默認(rèn)值;

    示例:MySQL命令:

    create table student03(id int,name varchar(20),gender varchar(10) default 'male');

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    5.唯一性約束

    唯一性約束即UNIQUE用于保證數(shù)據(jù)表中字段的唯一性,即表中字段的值不能重復(fù)出現(xiàn),其基本的語(yǔ)法格式如下所示:

    字段名 數(shù)據(jù)類(lèi)型 UNIQUE;

    示例:MySQL命令:

    create table student04(id int,name varchar(20) unique);

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    6.外鍵約束

    外鍵約束即FOREIGN KEY常用于多張表之間的約束。基本語(yǔ)法如下:

    -- 在創(chuàng)建數(shù)據(jù)表時(shí)語(yǔ)法如下:CONSTRAINT 外鍵名 FOREIGN KEY (從表外鍵字段) REFERENCES 主表 (主鍵字段)-- 將創(chuàng)建數(shù)據(jù)表創(chuàng)號(hào)后語(yǔ)法如下:ALTER TABLE 從表名 ADD CONSTRAINT 外鍵名 FOREIGN KEY (從表外鍵字段) REFERENCES 主表 (主鍵字段);

    示例:創(chuàng)建一個(gè)學(xué)生表 MySQL命令:

    create table student05(id int primary key,name varchar(20));

    示例:創(chuàng)建一個(gè)班級(jí)表 MySQL命令:

    create table class(classid int primary key,studentid int);

    示例:學(xué)生表作為主表,班級(jí)表作為副表設(shè)置外鍵, MySQL命令:

    alter table class add constraint fk_class_studentid foreign key(studentid) references student05(id);

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    6.1 數(shù)據(jù)一致性概念

    大家知道:建立外鍵是為了保證數(shù)據(jù)的完整和統(tǒng)一性。但是,如果主表中的數(shù)據(jù)被刪除或修改從表中對(duì)應(yīng)的數(shù)據(jù)該怎么辦呢?很明顯,從表中對(duì)應(yīng)的數(shù)據(jù)也應(yīng)該被刪除,否則數(shù)據(jù)庫(kù)中會(huì)存在很多無(wú)意義的垃圾數(shù)據(jù)。

    6.2 刪除外鍵

    語(yǔ)法如下:

    alter table 從表名 drop foreign key 外鍵名;

    示例:刪除外鍵 MySQL命令:

    alter table class drop foreign key fk_class_studentid;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)
    外鍵的那個(gè)字段不在了證明刪除成功了

    6.3 關(guān)于外鍵約束需要注意的細(xì)節(jié)

    1、從表里的外鍵通常為主表的主鍵
    2、從表里外鍵的數(shù)據(jù)類(lèi)型必須與主表中主鍵的數(shù)據(jù)類(lèi)型一致
    3、主表發(fā)生變化時(shí)應(yīng)注意主表與從表的數(shù)據(jù)一致性問(wèn)題

    六、數(shù)據(jù)表插入數(shù)據(jù)

    在MySQL通過(guò)INSERT語(yǔ)句向數(shù)據(jù)表中插入數(shù)據(jù)。在此,我們先準(zhǔn)備一張學(xué)生表,代碼如下:

     create table student(  id int,  name varchar(30),  age int,  gender varchar(30)  );

    1. 為表中所有字段插入數(shù)據(jù)

    每個(gè)字段與其值是嚴(yán)格一一對(duì)應(yīng)的。也就是說(shuō):每個(gè)值、值的順序、值的類(lèi)型必須與對(duì)應(yīng)的字段相匹配。但是,各字段也無(wú)須與其在表中定義的順序一致,它們只要與 VALUES中值的順序一致即可。
    語(yǔ)法如下:

    INSERT INTO 表名(字段名1,字段名2,...) VALUES (值 1,值 2,...);

    示例:向?qū)W生表中插入一條學(xué)生信息 MySQL命令:

    insert into student (id,name,age,gender) values (1,'bob',16,'male');

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    2. 為表中指定字段插入數(shù)據(jù)

    語(yǔ)法如下:

    INSERT INTO 表名(字段名1,字段名2,...) VALUES (值 1,值 2,...);

    插入數(shù)據(jù)的方法基本和為表中所有字段插入數(shù)據(jù),一樣,只是需要插入的字段由你自己指定

    3. 同時(shí)插入多條記錄

    語(yǔ)法如下:

    INSERT INTO 表名 [(字段名1,字段名2,...)]VALUES (值 1,值 2,…),(值 1,值 2,…),...;

    在該方式中:(字段名1,字段名2,…)是可選的,它用于指定插人的字段名;(值 1,值 2,…),(值 1,值 2,…)表示要插人的記錄,該記錄可有多條并且每條記錄之間用逗號(hào)隔開(kāi)。
    示例:向?qū)W生表中插入多條學(xué)生信息 MySQL命令:

    insert into student (id,name,age,gender) values (2,'lucy',17,'female'),(3,'jack',19,'male'),(4,'tom',18,'male');

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

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

    在MySQL通過(guò)UPDATE語(yǔ)句更新數(shù)據(jù)表中的數(shù)據(jù)。在此,我們將就用六中的student學(xué)生表

    1. UPDATE基本語(yǔ)法

    UPDATE 表名 SET 字段名1=值1[,字段名2 =值2,…] [WHERE 條件表達(dá)式];

    在該語(yǔ)法中:字段名1、字段名2…用于指定要更新的字段名稱(chēng);值1、值 2…用于表示字段的新數(shù)據(jù);WHERE 條件表達(dá)式 是可選的,它用于指定更新數(shù)據(jù)需要滿(mǎn)足的條件

    2. UPDATE更新部分?jǐn)?shù)據(jù)

    示例:將name為tom的記錄的age設(shè)置為20并將其gender設(shè)置為female MySQL命令:

    update student set age=20,gender='female' where name='tom';

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    3. UPDATE更新全部數(shù)據(jù)

    示例:將所有記錄的age設(shè)置為18 MySQL命令:

    update student set age=18;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

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

    在MySQL通過(guò)DELETE語(yǔ)句刪除數(shù)據(jù)表中的數(shù)據(jù)。在此,我們先準(zhǔn)備一張數(shù)據(jù)表,代碼如下:

    -- 創(chuàng)建學(xué)生表  create table student(  id int,  name varchar(30),  age int,  gender varchar(30)  );  -- 插入數(shù)據(jù)  insert into student (id,name,age,gender) values (2,'lucy',17,'female'),(3,'jack',19,'male'),(4,'tom',18,'male'),(5,'sal',19,'female'),(6,'sun',20,'male'),(7,'sad',13,'female'),(8,'sam',14,'male');

    1. DELETE基本語(yǔ)法

    在該語(yǔ)法中:表名用于指定要執(zhí)行刪除操作的表;[WHERE 條件表達(dá)式]為可選參數(shù)用于指定刪除的條件。

    DELETE FROM 表名 [WHERE 條件表達(dá)式];

    2. DELETE刪除部分?jǐn)?shù)據(jù)

    示例:刪除age等于14的所有記錄 MySQL命令:

    delete from student where age=14;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    3. DELETE刪除全部數(shù)據(jù)

    示例:刪除student表中的所有記錄 MySQL命令:

    delete from student;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    4. TRUNCATE和DETELE的區(qū)別

    TRUNCATE和DETELE都能實(shí)現(xiàn)刪除表中的所有數(shù)據(jù)的功能,但兩者也是有區(qū)別的:
    1、DELETE語(yǔ)句后可跟WHERE子句,可通過(guò)指定WHERE子句中的條件表達(dá)式只刪除滿(mǎn)足條件的部分記錄;但是,TRUNCATE語(yǔ)句只能用于刪除表中的所有記錄。
    2、使用TRUNCATE語(yǔ)句刪除表中的數(shù)據(jù)后,再次向表中添加記錄時(shí)自動(dòng)增加字段的默認(rèn)初始值重新由1開(kāi)始;使用DELETE語(yǔ)句刪除表中所有記錄后,再次向表中添加記錄時(shí)自動(dòng)增加字段的值為刪除時(shí)該字段的最大值加1
    3、DELETE語(yǔ)句是DML語(yǔ)句,TRUNCATE語(yǔ)句通常被認(rèn)為是DDL語(yǔ)句

    九、MySQL數(shù)據(jù)表簡(jiǎn)單查詢(xún)

    1.簡(jiǎn)單查詢(xún)概述

    簡(jiǎn)單查詢(xún)即不含where的select語(yǔ)句。在此,我們講解簡(jiǎn)單查詢(xún)中最常用的兩種查詢(xún):查詢(xún)所有字段和查詢(xún)指定字段。
    在此,先準(zhǔn)備測(cè)試數(shù)據(jù),代碼如下:

    -- 創(chuàng)建數(shù)據(jù)庫(kù)DROP DATABASE IF EXISTS mydb;CREATE DATABASE mydb;USE mydb;-- 創(chuàng)建student表CREATE TABLE student (     sid CHAR(6),     sname VARCHAR(50),     age INT,     gender VARCHAR(50) DEFAULT 'male');-- 向student表插入數(shù)據(jù)INSERT INTO student (sid,sname,age,gender) VALUES ('S_1001', 'lili', 14, 'male');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1002', 'wang', 15, 'female');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1003', 'tywd', 16, 'male');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1004', 'hfgs', 17, 'female');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1005', 'qwer', 18, 'male');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1006', 'zxsd', 19, 'female');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1007', 'hjop', 16, 'male');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1008', 'tyop', 15, 'female');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1009', 'nhmk', 13, 'male');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1010', 'xdfv', 17, 'female');

    2.查詢(xún)所有字段(方法不唯一只是舉例)

    查詢(xún)所有字段 MySQL命令:

    select * from student;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    3.查詢(xún)指定字段(sid、sname)

    查詢(xún)指定字段(sid、sname) MySQL命令:

    select sid,sname from student;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    4.常數(shù)的查詢(xún)

    在SELECT中除了書(shū)寫(xiě)列名,還可以書(shū)寫(xiě)常數(shù)??梢杂糜跇?biāo)記
    常數(shù)的查詢(xún)?nèi)掌跇?biāo)記 MySQL命令:

    select sid,sname,'2021-03-02' from student;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    5.從查詢(xún)結(jié)果中過(guò)濾重復(fù)數(shù)據(jù)

    在使用DISTINCT 時(shí)需要注意:
    在SELECT查詢(xún)語(yǔ)句中DISTINCT關(guān)鍵字只能用在第一個(gè)所查列名之前。
    MySQL命令:

    select distinct gender from student;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    6.算術(shù)運(yùn)算符(舉例加運(yùn)算符)

    在SELECT查詢(xún)語(yǔ)句中還可以使用加減乘除運(yùn)算符。
    查詢(xún)學(xué)生10年后的年齡 MySQL命令:

     select sname,age+10 from student;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    十、函數(shù)

    在此,先準(zhǔn)備測(cè)試數(shù)據(jù),代碼如下:

    -- 創(chuàng)建數(shù)據(jù)庫(kù)DROP DATABASE IF EXISTS mydb;CREATE DATABASE mydb;USE mydb;-- 創(chuàng)建student表CREATE TABLE student (     sid CHAR(6),     sname VARCHAR(50),     age INT,     gender VARCHAR(50) DEFAULT 'male');-- 向student表插入數(shù)據(jù)INSERT INTO student (sid,sname,age,gender) VALUES ('S_1001', 'lili', 14, 'male');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1002', 'wang', 15, 'female');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1003', 'tywd', 16, 'male');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1004', 'hfgs', 17, 'female');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1005', 'qwer', 18, 'male');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1006', 'zxsd', 19, 'female');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1007', 'hjop', 16, 'male');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1008', 'tyop', 15, 'female');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1009', 'nhmk', 13, 'male');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1010', 'xdfv', 17, 'female');

    1.聚合函數(shù)

    在開(kāi)發(fā)中,我們常常有類(lèi)似的需求:統(tǒng)計(jì)某個(gè)字段的最大值、最小值、 平均值等等。為此,MySQL中提供了聚合函數(shù)來(lái)實(shí)現(xiàn)這些功能。所謂聚合,就是將多行匯總成一行;其實(shí),所有的聚合函數(shù)均如此——輸入多行,輸出一行。聚合函數(shù)具有自動(dòng)濾空的功能,若某一個(gè)值為NULL,那么會(huì)自動(dòng)將其過(guò)濾使其不參與運(yùn)算。
    聚合函數(shù)使用規(guī)則:
    只有SELECT子句和HAVING子句、ORDER BY子句中能夠使用聚合函數(shù)。例如,在WHERE子句中使用聚合函數(shù)是錯(cuò)誤的。
    接下來(lái),我們學(xué)習(xí)常用聚合函數(shù)。

    1.1、count()

    統(tǒng)計(jì)表中數(shù)據(jù)的行數(shù)或者統(tǒng)計(jì)指定列其值不為NULL的數(shù)據(jù)個(gè)數(shù)
    查詢(xún)有多少該表中有多少人
    MySQL命令:

    select count(*) from student;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    1.2、max()

    計(jì)算指定列的最大值,如果指定列是字符串類(lèi)型則使用字符串排序運(yùn)算

    查詢(xún)?cè)搶W(xué)生表中年紀(jì)最大的學(xué)生
    MySQL命令:

    select max(age) from student;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    1.3、min()

    計(jì)算指定列的最小值,如果指定列是字符串類(lèi)型則使用字符串排序運(yùn)算

    查詢(xún)?cè)搶W(xué)生表中年紀(jì)最小的學(xué)生 MySQL命令:

    select sname,min(age) from student;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    1.4、sum()

    計(jì)算指定列的數(shù)值和,如果指定列類(lèi)型不是數(shù)值類(lèi)型則計(jì)算結(jié)果為0
    查詢(xún)?cè)搶W(xué)生表中年紀(jì)的總和 MySQL命令:

    select sum(age) from student;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    1.5、avg()

    計(jì)算指定列的平均值,如果指定列類(lèi)型不是數(shù)值類(lèi)型則計(jì)算結(jié)果為

    查詢(xún)?cè)搶W(xué)生表中年紀(jì)的平均數(shù) MySQL命令:

    select avg(age) from student;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    2.其他常用函數(shù)

    這里我就不一一舉例了,基本混個(gè)眼熟,以后用到再細(xì)說(shuō)

    2.1、時(shí)間函數(shù)

    SELECT NOW();SELECT DAY (NOW());SELECT DATE (NOW());SELECT TIME (NOW());SELECT YEAR (NOW());SELECT MONTH (NOW());SELECT CURRENT_DATE();SELECT CURRENT_TIME();SELECT CURRENT_TIMESTAMP();SELECT ADDTIME('14:23:12','01:02:01');SELECT DATE_ADD(NOW(),INTERVAL 1 DAY);SELECT DATE_ADD(NOW(),INTERVAL 1 MONTH);SELECT DATE_SUB(NOW(),INTERVAL 1 DAY);SELECT DATE_SUB(NOW(),INTERVAL 1 MONTH);SELECT DATEDIFF('2019-07-22','2019-05-05');

    2.2、字符串函數(shù)

    --連接函數(shù)SELECT CONCAT ()--SELECT INSTR ();--統(tǒng)計(jì)長(zhǎng)度SELECT LENGTH();

    2.3、數(shù)學(xué)函數(shù)

    -- 絕對(duì)值SELECT ABS(-136);-- 向下取整SELECT FLOOR(3.14);-- 向上取整SELECT CEILING(3.14);

    十一、條件查詢(xún)

    數(shù)據(jù)庫(kù)中存有大量數(shù)據(jù),我們可根據(jù)需求獲取指定的數(shù)據(jù)。此時(shí),我們可在查詢(xún)語(yǔ)句中通過(guò)WHERE子句指定查詢(xún)條件對(duì)查詢(xún)結(jié)果進(jìn)行過(guò)濾。
    在開(kāi)始學(xué)習(xí)條件查詢(xún)之前,我們先準(zhǔn)備測(cè)試數(shù)據(jù),代碼如下:

    -- 創(chuàng)建數(shù)據(jù)庫(kù)DROP DATABASE IF EXISTS mydb;CREATE DATABASE mydb;USE mydb;-- 創(chuàng)建student表CREATE TABLE student (     sid CHAR(6),     sname VARCHAR(50),     age INT,     gender VARCHAR(50) DEFAULT 'male');-- 向student表插入數(shù)據(jù)INSERT INTO student (sid,sname,age,gender) VALUES ('S_1001', 'lili', 14, 'male');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1002', 'wang', 15, 'female');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1003', 'tywd', 16, 'male');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1004', 'hfgs', 17, 'female');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1005', 'qwer', 18, 'male');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1006', 'zxsd', 19, 'female');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1007', 'hjop', 16, 'male');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1008', 'tyop', 15, 'female');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1009', 'nhmk', 13, 'male');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1010', 'xdfv', 17, 'female');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1012', 'lili', 14, 'male');INSERT INTO student (sid,sname,age,gender) VALUES ('S_1013', 'wang', 15, 'female');

    1.使用關(guān)系運(yùn)算符查詢(xún)

    在WHERE中可使用關(guān)系運(yùn)算符進(jìn)行條件查詢(xún),常用的關(guān)系運(yùn)算符如下所示:

    關(guān)系運(yùn)算符 說(shuō)明
    = 等于
    <> 不等于
    != 不等于
    < 小于
    <= 小于等于
    > 大于
    >= 大于等于

    查詢(xún)年齡等于或大于17的學(xué)生的信息 MySQL命令:

    select * from student where age>=17;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    2.使用IN關(guān)鍵字查詢(xún)

    IN關(guān)鍵字用于判斷某個(gè)字段的值是否在指定集合中。如果字段的值恰好在指定的集合中,則將字段所在的記錄將査詢(xún)出來(lái)。

    查詢(xún)sid為S_1002和S_1003的學(xué)生信息 MySQL命令:

    select * from student where sid in ('S_1002','S_1003');

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)
    查詢(xún)sid為S_1001以外的學(xué)生的信息 MySQL命令:

    select * from student where sid not in ('S_1001');

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    3.使用BETWEEN AND關(guān)鍵字查詢(xún)

    BETWEEN AND用于判斷某個(gè)字段的值是否在指定的范圍之內(nèi)。如果字段的值在指定范圍內(nèi),則將所在的記錄將查詢(xún)出來(lái)
    查詢(xún)15到18歲的學(xué)生信息 MySQL命令:

    select * from student where age between 15 and 18;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)
    查詢(xún)不是15到18歲的學(xué)生信息 MySQL命令:

    select * from student where age not between 15 and 18;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    4.使用空值查詢(xún)

    在MySQL中,使用 IS NULL關(guān)鍵字判斷字段的值是否為空值。請(qǐng)注意:空值NULL不同于0,也不同于空字符串
    由于student表沒(méi)有空值就不演示查詢(xún)空值的了
    查詢(xún)sname不為空值的學(xué)生信息 MySQL命令:

    select * from student where sname is not null;

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    5.使用AND關(guān)鍵字查詢(xún)

    在MySQL中可使用AND關(guān)鍵字可以連接兩個(gè)或者多個(gè)查詢(xún)條件。
    查詢(xún)年紀(jì)大于15且性別為male的學(xué)生信息 MySQL命令:

    select * from student where age>15 and gender='male';

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    6.使用OR關(guān)鍵字查詢(xún)

    在使用SELECT語(yǔ)句查詢(xún)數(shù)據(jù)時(shí)可使用OR關(guān)鍵字連接多個(gè)査詢(xún)條件。在使用OR關(guān)鍵字時(shí),只要記錄滿(mǎn)足其中任意一個(gè)條件就會(huì)被查詢(xún)出來(lái)
    查詢(xún)年紀(jì)大于15或者性別為male的學(xué)生信息 MySQL命令:

    select * from student where age>15 or gender='male';

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    7.使用LIKE關(guān)鍵字查詢(xún)

    MySQL中可使用LIKE關(guān)鍵字可以判斷兩個(gè)字符串是否相匹配

    7.1 普通字符串

    查詢(xún)sname中與wang匹配的學(xué)生信息 MySQL命令:

    select * from student where sname like 'wang';

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    7.2 含有%通配的字符串

    %用于匹配任意長(zhǎng)度的字符串。例如,字符串“a%”匹配以字符a開(kāi)始任意長(zhǎng)度的字符串
    查詢(xún)學(xué)生姓名以li開(kāi)始的記錄 MySQL命令:

    select * from student where sname like 'li%';

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)
    查詢(xún)學(xué)生姓名以g結(jié)尾的記錄 MySQL命令:

    select * from student where sname like '%g';

    運(yùn)行效果展示:
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)
    查詢(xún)學(xué)生姓名包含s的記錄 MySQL命令:

    select * from student where sname like '%s%';

    運(yùn)行效果展示
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    7.3 含有_通配的字符串

    下劃線(xiàn)通配符只匹配單個(gè)字符,如果要匹配多個(gè)字符,需要連續(xù)使用多個(gè)下劃線(xiàn)通配符。例如,字符串“ab_”匹配以字符串“ab”開(kāi)始長(zhǎng)度為3的字符串,如abc、abp等等;字符串“a__d”匹配在字符“a”和“d”之間包含兩個(gè)字符的字符串,如"abcd"、"atud"等等。
    查詢(xún)學(xué)生姓名以zx開(kāi)頭且長(zhǎng)度為4的記錄 MySQL命令:

    select * from student where sname like 'zx__';

    運(yùn)行效果展示
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    查詢(xún)學(xué)生姓名以g結(jié)尾且長(zhǎng)度為4的記錄 MySQL命令:

    select * from student where sname like '___g';

    運(yùn)行效果展示
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    8.使用LIMIT限制查詢(xún)結(jié)果的數(shù)量

    當(dāng)執(zhí)行查詢(xún)數(shù)據(jù)時(shí)可能會(huì)返回很多條記錄,而用戶(hù)需要的數(shù)據(jù)可能只是其中的一條或者幾條
    查詢(xún)學(xué)生表中年紀(jì)最小的3位同學(xué) MySQL命令:

    select * from student order by age asc limit 3;

    運(yùn)行效果展示
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    9.使用GROUP BY進(jìn)行分組查詢(xún)

    GROUP BY 子句可像切蛋糕一樣將表中的數(shù)據(jù)進(jìn)行分組,再進(jìn)行查詢(xún)等操作。換言之,可通俗地理解為:通過(guò)GROUP BY將原來(lái)的表拆分成了幾張小表。
    接下來(lái),我們通過(guò)一個(gè)例子開(kāi)始學(xué)習(xí)GROUP BY,代碼如下

    -- 創(chuàng)建數(shù)據(jù)庫(kù)DROP DATABASE IF EXISTS mydb;CREATE DATABASE mydb;USE mydb;-- 創(chuàng)建員工表CREATE TABLE employee (     id int,     name varchar(50),     salary int,     departmentnumber int);-- 向員工表中插入數(shù)據(jù)INSERT INTO employee values(1,'tome',2000,1001); INSERT INTO employee values(2,'lucy',9000,1002); INSERT INTO employee values(3,'joke',5000,1003); INSERT INTO employee values(4,'wang',3000,1004); INSERT INTO employee values(5,'chen',3000,1001); INSERT INTO employee values(6,'yukt',7000,1002); INSERT INTO employee values(7,'rett',6000,1003); INSERT INTO employee values(8,'mujk',4000,1004); INSERT INTO employee values(9,'poik',3000,1001);

    9.1 GROUP BY和聚合函數(shù)一起使用

    統(tǒng)計(jì)各部門(mén)員工個(gè)數(shù) MySQL命令:

    select count(*), departmentnumber from employee group by departmentnumber;

    運(yùn)行效果展示
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)
    統(tǒng)計(jì)部門(mén)編號(hào)大于1001的各部門(mén)員工個(gè)數(shù) MySQL命令:

    select count(*), departmentnumber from employee where departmentnumber>1001 group by departmentnumber;

    運(yùn)行效果展示
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    9.2 GROUP BY和聚合函數(shù)以及HAVING一起使用

    統(tǒng)計(jì)工資總和大于8000的部門(mén) MySQL命令:

    select sum(salary),departmentnumber from employee group by departmentnumber having sum(salary)>8000;

    運(yùn)行效果展示
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    10.使用ORDER BY對(duì)查詢(xún)結(jié)果排序

    從表中査詢(xún)出來(lái)的數(shù)據(jù)可能是無(wú)序的或者其排列順序不是我們期望的。為此,我們可以使用ORDER BY對(duì)查詢(xún)結(jié)果進(jìn)行排序
    其語(yǔ)法格式如下所示:

    SELECT 字段名1,字段名2,…FROM 表名ORDER BY 字段名1 [ASC 丨 DESC],字段名2 [ASC | DESC];

    在該語(yǔ)法中:字段名1、字段名2是查詢(xún)結(jié)果排序的依據(jù);參數(shù) ASC表示按照升序排序,DESC表示按照降序排序;默認(rèn)情況下,按照ASC方式排序。通常情況下,ORDER BY子句位于整個(gè)SELECT語(yǔ)句的末尾。
    查詢(xún)所有學(xué)生并按照年紀(jì)大小升序排列 MySQL命令:

    select * from student order by age asc;

    運(yùn)行效果展示
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)
    查詢(xún)所有學(xué)生并按照年紀(jì)大小降序排列 MySQL命令:

    select * from student order by age desc;

    運(yùn)行效果展示
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    十二、別名設(shè)置

    在査詢(xún)數(shù)據(jù)時(shí)可為表和字段取別名,該別名代替表和字段的原名參與查詢(xún)操作。
    操作的表事先已準(zhǔn)備

    1.為表取別名

    在查詢(xún)操作時(shí),假若表名很長(zhǎng)使用起來(lái)就不太方便,此時(shí)可為表取一個(gè)別名,用該別名來(lái)代替表的名稱(chēng)。語(yǔ)法格式如下所示:

    SELECT * FROM 表名 [AS] 表的別名 WHERE .... ;

    將student改為stu查詢(xún)整表 MySQL命令:

    select * from student as stu;

    運(yùn)行效果展示
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    2.為字段取別名

    在查詢(xún)操作時(shí),假若字段名很長(zhǎng)使用起來(lái)就不太方便,此時(shí)可該字段取一個(gè)別名,用該別名來(lái)代替字段的名稱(chēng)。語(yǔ)法格式如下所示:

    SELECT 字段名1 [AS] 別名1 , 字段名2 [AS] 別名2 , ... FROM 表名 WHERE ... ;

    將student中的name取別名為“姓名” 查詢(xún)整表 MySQL命令:

    select name as '姓名',id from student;

    運(yùn)行效果展示
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    十三、表的關(guān)聯(lián)關(guān)系

    在實(shí)際開(kāi)發(fā)中數(shù)據(jù)表之間存在著各種關(guān)聯(lián)關(guān)系。在此,介紹MySQL中數(shù)據(jù)表的三種關(guān)聯(lián)關(guān)系。
    多對(duì)一
    多對(duì)一(亦稱(chēng)為一對(duì)多)是數(shù)據(jù)表中最常見(jiàn)的一種關(guān)系。例如:?jiǎn)T工與部門(mén)之間的關(guān)系,一個(gè)部門(mén)可以有多個(gè)員工;而一個(gè)員工不能屬于多個(gè)部門(mén)只屬于某個(gè)部門(mén)。在多對(duì)一的表關(guān)系 中,應(yīng)將外鍵建在多的一方否則會(huì)造成數(shù)據(jù)的冗余。
    多對(duì)多
    多對(duì)多是數(shù)據(jù)表中常見(jiàn)的一種關(guān)系。例如:學(xué)生與老師之間的關(guān)系,一個(gè)學(xué)生可以有多個(gè)老師而且一個(gè)老師有多個(gè)學(xué)生。通常情況下,為了實(shí)現(xiàn)這種關(guān)系需要定義一張中間表(亦稱(chēng)為連接表)該表會(huì)存在兩個(gè)外鍵分別參照老師表和學(xué)生表。
    一對(duì)一
    在開(kāi)發(fā)過(guò)程中,一對(duì)一的關(guān)聯(lián)關(guān)系在數(shù)據(jù)庫(kù)中并不常見(jiàn);因?yàn)橐赃@種方式存儲(chǔ)的信息通常會(huì)放在同一張表中。
    接下來(lái),我們來(lái)學(xué)習(xí)在一對(duì)多的關(guān)聯(lián)關(guān)系中如果添加和刪除數(shù)據(jù)。先準(zhǔn)備一些測(cè)試數(shù)據(jù),代碼如下:

    DROP TABLE IF EXISTS student;DROP TABLE IF EXISTS class;-- 創(chuàng)建班級(jí)表CREATE TABLE class(     cid int(4) NOT NULL PRIMARY KEY,     cname varchar(30) );-- 創(chuàng)建學(xué)生表CREATE TABLE student(     sid int(8) NOT NULL PRIMARY KEY,     sname varchar(30),     classid int(8) NOT NULL);-- 為學(xué)生表添加外鍵約束ALTER TABLE student ADD CONSTRAINT fk_student_classid FOREIGN KEY(classid) REFERENCES class(cid);-- 向班級(jí)表插入數(shù)據(jù)INSERT INTO class(cid,cname)VALUES(1,'Java');INSERT INTO class(cid,cname)VALUES(2,'Python');-- 向?qū)W生表插入數(shù)據(jù)INSERT INTO student(sid,sname,classid)VALUES(1,'tome',1);INSERT INTO student(sid,sname,classid)VALUES(2,'lucy',1);INSERT INTO student(sid,sname,classid)VALUES(3,'lili',2);INSERT INTO student(sid,sname,classid)VALUES(4,'domi',2);

    1.關(guān)聯(lián)查詢(xún)

    查詢(xún)Java班的所有學(xué)生 MySQL命令:

    select * from student where classid=(select cid from class where cname='Java');

    運(yùn)行效果展示
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    2.關(guān)于關(guān)聯(lián)關(guān)系的刪除數(shù)據(jù)

    請(qǐng)從班級(jí)表中刪除Java班級(jí)。在此,請(qǐng)注意:班級(jí)表和學(xué)生表之間存在關(guān)聯(lián)關(guān)系;要?jiǎng)h除Java班級(jí),應(yīng)該先刪除學(xué)生表中與該班相關(guān)聯(lián)的學(xué)生。否則,假若先刪除Java班那么學(xué)生表中的cid就失去了關(guān)聯(lián)
    刪除Java班 MySQL命令:

    delete from student where classid=(select cid from class where cname='Java');delete from class where cname='Java';

    運(yùn)行效果展示
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    十四、多表連接查詢(xún)

    1.交叉連接查詢(xún)

    交叉連接返回的結(jié)果是被連接的兩個(gè)表中所有數(shù)據(jù)行的笛卡兒積;比如:集合A={a,b},集合B={0,1,2},則集合A和B的笛卡爾積為{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}。所以,交叉連接也被稱(chēng)為笛卡爾連接,其語(yǔ)法格式如下:

    SELECT * FROM 表1 CROSS JOIN 表2;

    在該語(yǔ)法中:CROSS JOIN用于連接兩個(gè)要查詢(xún)的表,通過(guò)該語(yǔ)句可以查詢(xún)兩個(gè)表中所有的數(shù)據(jù)組合。
    由于這個(gè)交叉連接查詢(xún)?cè)趯?shí)際運(yùn)用中沒(méi)有任何意義,所以只做為了解即可

    2.內(nèi)連接查詢(xún)

    內(nèi)連接(Inner Join)又稱(chēng)簡(jiǎn)單連接或自然連接,是一種非常常見(jiàn)的連接查詢(xún)。內(nèi)連接使用比較運(yùn)算符對(duì)兩個(gè)表中的數(shù)據(jù)進(jìn)行比較并列出與連接條件匹配的數(shù)據(jù)行,組合成新的 記錄。也就是說(shuō)在內(nèi)連接查詢(xún)中只有滿(mǎn)足條件的記錄才能出現(xiàn)在查詢(xún)結(jié)果中。其語(yǔ)法格式如下:

    SELECT 查詢(xún)字段1,查詢(xún)字段2, ... FROM 表1 [INNER] JOIN 表2 ON 表1.關(guān)系字段=表2.關(guān)系字段

    在該語(yǔ)法中:INNER JOIN用于連接兩個(gè)表,ON來(lái)指定連接條件;其中INNER可以省略。

    準(zhǔn)備數(shù)據(jù),代碼如下:

    -- 若存在數(shù)據(jù)庫(kù)mydb則刪除DROP DATABASE IF EXISTS mydb;-- 創(chuàng)建數(shù)據(jù)庫(kù)mydbCREATE DATABASE mydb;-- 選擇數(shù)據(jù)庫(kù)mydbUSE mydb;-- 創(chuàng)建部門(mén)表CREATE TABLE department(   did int (4) NOT NULL PRIMARY KEY,    dname varchar(20));-- 創(chuàng)建員工表CREATE TABLE employee (   eid int (4) NOT NULL PRIMARY KEY,    ename varchar (20),    eage int (2),    departmentid int (4) NOT NULL);-- 向部門(mén)表插入數(shù)據(jù)INSERT INTO department VALUES(1001,'財(cái)務(wù)部');INSERT INTO department VALUES(1002,'技術(shù)部');INSERT INTO department VALUES(1003,'行政部');INSERT INTO department VALUES(1004,'生活部');-- 向員工表插入數(shù)據(jù)INSERT INTO employee VALUES(1,'張三',19,1003);INSERT INTO employee VALUES(2,'李四',18,1002);INSERT INTO employee VALUES(3,'王五',20,1001);INSERT INTO employee VALUES(4,'趙六',20,1004);

    查詢(xún)員工姓名及其所屬部門(mén)名稱(chēng) MySQL命令:

    select employee.ename,department.dname from department inner join employee on department.did=employee.departmentid;

    運(yùn)行效果展示
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    3.外連接查詢(xún)

    在使用內(nèi)連接查詢(xún)時(shí)我們發(fā)現(xiàn):返回的結(jié)果只包含符合查詢(xún)條件和連接條件的數(shù)據(jù)。但是,有時(shí)還需要在返回查詢(xún)結(jié)果中不僅包含符合條件的數(shù)據(jù),而且還包括左表、右表或兩個(gè)表中的所有數(shù)據(jù),此時(shí)我們就需要使用外連接查詢(xún)。外連接又分為左(外)連接和右(外)連接。其語(yǔ)法格式如下:

    SELECT 查詢(xún)字段1,查詢(xún)字段2, ... FROM 表1 LEFT | RIGHT [OUTER] JOIN 表2 ON 表1.關(guān)系字段=表2.關(guān)系字段 WHERE 條件

    由此可見(jiàn),外連接的語(yǔ)法格式和內(nèi)連接非常相似,只不過(guò)使用的是LEFT [OUTER] JOIN、RIGHT [OUTER] JOIN關(guān)鍵字。其中,關(guān)鍵字左邊的表被稱(chēng)為左表,關(guān)鍵字右邊的表被稱(chēng)為右表;OUTER可以省略。
    在使用左(外)連接和右(外)連接查詢(xún)時(shí),查詢(xún)結(jié)果是不一致的,具體如下:
    1、LEFT [OUTER] JOIN 左(外)連接:返回包括左表中的所有記錄和右表中符合連接條件的記錄。
    2、RIGHT [OUTER] JOIN 右(外)連接:返回包括右表中的所有記錄和左表中符合連接條件的記錄。

    先準(zhǔn)備數(shù)據(jù),代碼如下:

    -- 若存在數(shù)據(jù)庫(kù)mydb則刪除DROP DATABASE IF EXISTS mydb;-- 創(chuàng)建數(shù)據(jù)庫(kù)mydbCREATE DATABASE mydb;-- 選擇數(shù)據(jù)庫(kù)mydbUSE mydb;-- 創(chuàng)建班級(jí)表CREATE TABLE class(   cid int (4) NOT NULL PRIMARY KEY,    cname varchar(20));-- 創(chuàng)建學(xué)生表CREATE TABLE student (   sid int (4) NOT NULL PRIMARY KEY,    sname varchar (20),    sage int (2),    classid int (4) NOT NULL);-- 向班級(jí)表插入數(shù)據(jù)INSERT INTO class VALUES(1001,'Java');INSERT INTO class VALUES(1002,'C++');INSERT INTO class VALUES(1003,'Python');INSERT INTO class VALUES(1004,'PHP');-- 向?qū)W生表插入數(shù)據(jù)INSERT INTO student VALUES(1,'張三',20,1001);INSERT INTO student VALUES(2,'李四',21,1002);INSERT INTO student VALUES(3,'王五',24,1002);INSERT INTO student VALUES(4,'趙六',23,1003);INSERT INTO student VALUES(5,'Jack',22,1009);

    準(zhǔn)備這組數(shù)據(jù)有一定的特點(diǎn),為的是讓大家直觀的看出左連接與右連接的不同之處
    1、班級(jí)編號(hào)為1004的PHP班級(jí)沒(méi)有學(xué)生
    2、學(xué)號(hào)為5的學(xué)生王躍躍班級(jí)編號(hào)為1009,該班級(jí)編號(hào)并不在班級(jí)表中

    3.1 左(外)連接查詢(xún)

    左(外)連接的結(jié)果包括LEFT JOIN子句中指定的左表的所有記錄,以及所有滿(mǎn)足連接條件的記錄。如果左表的某條記錄在右表中不存在則在右表中顯示為空。
    查詢(xún)每個(gè)班的班級(jí)ID、班級(jí)名稱(chēng)及該班的所有學(xué)生的名字 MySQL命令:

    select class.cid,class.cname,student.sname from class left outer join student on class.cid=student.classid;

    運(yùn)行效果展示
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)
    展示結(jié)果分析:
    1、分別找出Java班、C++班、Python班的學(xué)生
    2、右表的王躍躍不滿(mǎn)足查詢(xún)條件故其沒(méi)有出現(xiàn)在查詢(xún)結(jié)果中
    3、雖然左表的PHP班沒(méi)有學(xué)生,但是任然顯示了PHP的信息;但是,它對(duì)應(yīng)的學(xué)生名字為NULL

    3.2 右(外)連接查詢(xún)

    右(外)連接的結(jié)果包括RIGHT JOIN子句中指定的右表的所有記錄,以及所有滿(mǎn)足連接條件的記錄。如果右表的某條記錄在左表中沒(méi)有匹配,則左表將返回空值。
    查詢(xún)每個(gè)班的班級(jí)ID、班級(jí)名稱(chēng)及該班的所有學(xué)生的名字 MySQL命令:

    select class.cid,class.cname,student.sname from class right outer join student on class.cid=student.classid;

    運(yùn)行效果展示
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)
    展示結(jié)果分析:
    1、分別找出Java班、C++班、Python班的學(xué)生
    2、?左表的PHP班不滿(mǎn)足查詢(xún)條件故其沒(méi)有出現(xiàn)在查詢(xún)結(jié)果中
    3、?雖然右表的jack沒(méi)有對(duì)應(yīng)班級(jí),但是任然顯示王躍躍的信息;但是,它對(duì)應(yīng)的班級(jí)以及班級(jí)編號(hào)均為NULL

    十五、子查詢(xún)

    子查詢(xún)是指一個(gè)查詢(xún)語(yǔ)句嵌套在另一個(gè)查詢(xún)語(yǔ)句內(nèi)部的查詢(xún);該查詢(xún)語(yǔ)句可以嵌套在一個(gè) SELECT、SELECT…INTO、INSERT…INTO等語(yǔ)句中。在執(zhí)行查詢(xún)時(shí),首先會(huì)執(zhí)行子查詢(xún)中的語(yǔ)句,再將返回的結(jié)果作為外層查詢(xún)的過(guò)濾條件。在子?xùn)嗽?xún)中通常可以使用比較運(yùn)算符和IN、EXISTS、ANY、ALL等關(guān)鍵字。

    準(zhǔn)備數(shù)據(jù),代碼如下:

    DROP TABLE IF EXISTS student;DROP TABLE IF EXISTS class;-- 創(chuàng)建班級(jí)表CREATE TABLE class(   cid int (4) NOT NULL PRIMARY KEY,    cname varchar(20));-- 創(chuàng)建學(xué)生表CREATE TABLE student (   sid int (4) NOT NULL PRIMARY KEY,    sname varchar (20),    sage int (2),    classid int (4) NOT NULL);-- 向班級(jí)表插入數(shù)據(jù)INSERT INTO class VALUES(1001,'Java');INSERT INTO class VALUES(1002,'C++');INSERT INTO class VALUES(1003,'Python');INSERT INTO class VALUES(1004,'PHP');INSERT INTO class VALUES(1005,'Android');-- 向?qū)W生表插入數(shù)據(jù)INSERT INTO student VALUES(1,'張三',20,1001);INSERT INTO student VALUES(2,'李四',21,1002);INSERT INTO student VALUES(3,'王五',24,1003);INSERT INTO student VALUES(4,'趙六',23,1004);INSERT INTO student VALUES(5,'小明',21,1001);INSERT INTO student VALUES(6,'小紅',26,1001);INSERT INTO student VALUES(7,'小亮',27,1002);

    1.帶比較運(yùn)算符的子查詢(xún)

    比較運(yùn)算符前面我們提到過(guò)得,就是>、<、=、>=、<=、!=等
    查詢(xún)張三同學(xué)所在班級(jí)的信息 MySQL命令:

    select * from class where cid=(select classid from student where sname='張三');

    運(yùn)行效果展示
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)
    查詢(xún)比張三同學(xué)所在班級(jí)編號(hào)還大的班級(jí)的信息 MySQL命令:

    select * from class where cid>(select classid from student where sname='張三');

    運(yùn)行效果展示
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    2.帶EXISTS關(guān)鍵字的子查詢(xún)

    EXISTS關(guān)鍵字后面的參數(shù)可以是任意一個(gè)子查詢(xún), 它不產(chǎn)生任何數(shù)據(jù)只返回TRUE或FALSE。當(dāng)返回值為T(mén)RUE時(shí)外層查詢(xún)才會(huì) 執(zhí)行
    假如王五同學(xué)在學(xué)生表中則從班級(jí)表查詢(xún)所有班級(jí)信息 MySQL命令:

    select * from class where exists (select * from student where sname='王五');

    運(yùn)行效果展示
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    3.帶ANY關(guān)鍵字的子查詢(xún)

    ANY關(guān)鍵字表示滿(mǎn)足其中任意一個(gè)條件就返回一個(gè)結(jié)果作為外層查詢(xún)條件。

    查詢(xún)比任一學(xué)生所屬班級(jí)號(hào)還大的班級(jí)編號(hào) MySQL命令:

    select * from class where cid > any (select classid from student);

    運(yùn)行效果展示
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    4.帶ALL關(guān)鍵字的子查詢(xún)

    ALL關(guān)鍵字與ANY有點(diǎn)類(lèi)似,只不過(guò)帶ALL關(guān)鍵字的子?xùn)嗽?xún)返回的結(jié)果需同時(shí)滿(mǎn)足所有內(nèi)層?xùn)嗽?xún)條件。

    查詢(xún)比所有學(xué)生所屬班級(jí)號(hào)還大的班級(jí)編號(hào) MySQL命令:

    select * from class where cid > all (select classid from student);

    運(yùn)行效果展示
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    總結(jié)

    重要(從關(guān)鍵字分析):
    查詢(xún)語(yǔ)句的書(shū)寫(xiě)順序和執(zhí)行順序
    select ===> from ===> where ===> group by ===> having ===> order by ===> limit
    查詢(xún)語(yǔ)句的執(zhí)行順序
    from ===> where ===> group by ===> having ===> select ===> order by ===> limi

    基于復(fù)習(xí),樂(lè)于分享 所以有了這篇文章?。?!
    37k字的MySQL基礎(chǔ)整理有這一篇就夠(整理分享)

    【推薦:mysql視頻教程】

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)