中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

谷歌有做網(wǎng)站建設(shè)莆田百度推廣開戶

谷歌有做網(wǎng)站建設(shè),莆田百度推廣開戶,水平b2b代表網(wǎng)站,東莞建設(shè)網(wǎng)站官網(wǎng)住房和城鄉(xiāng)MySQL基本SQL語句(下) 一、擴展常見的數(shù)據(jù)類型 1、回顧數(shù)據(jù)表的創(chuàng)建語法 基本語法: mysql> create table 數(shù)據(jù)表名稱(字段名稱1 字段類型 字段約束,字段名稱2 字段類型 字段約束,...primary key(主鍵字段 > 不能為空、必須唯一) ) …

MySQL基本SQL語句(下)

一、擴展常見的數(shù)據(jù)類型

1、回顧數(shù)據(jù)表的創(chuàng)建語法

基本語法:

mysql> create table 數(shù)據(jù)表名稱(字段名稱1 字段類型 字段約束,字段名稱2 字段類型 字段約束,...primary key(主鍵字段 => 不能為空、必須唯一)
) engine=innodb default charset=utf8;

經(jīng)驗之談:一般情況下,我們在設(shè)計數(shù)據(jù)表時,必須擁有一個id主鍵字段,非空、自動編號、主鍵約束。

在創(chuàng)建數(shù)據(jù)表時,必須明確指定字段的名稱以及字段的類型,那到底MySQL中的SQL語句支持哪些字段類型呢?

答:參考下圖

2、數(shù)值類型

☆ 整數(shù)類型(整數(shù)、精準(zhǔn))

應(yīng)用場景:人的年齡、考試成績等等相關(guān)的信息都可以使用整數(shù)類型進(jìn)行存儲,那整數(shù)類型有這么多形式,我應(yīng)該選擇哪一個呢?

答:整數(shù)類型的選擇主要取決于數(shù)值的范圍。

比如存儲中國人的人口信息,可以用INT類型也可以用BIGINT類型,但是在數(shù)據(jù)庫設(shè)計原則中,不是越大越好,而是正好滿足條件即可。

案例:設(shè)計一個數(shù)據(jù)表如tb_student學(xué)生表(id、username、age、mobile)

mysql> use 數(shù)據(jù)庫名稱;
mysql> create table tb_student(id mediumint unsigned not null auto_increment,username varchar(20),age tinyint unsigned,mobile char(11),primary key(id)
) engine=innodb default charset=utf8;

☆ 小數(shù)類型(浮點類型、定點類型)

① 浮點類型(近似值)
  • FLOAT和DOUBLE

FLOATDOUBLE類型代表近似數(shù)字?jǐn)?shù)據(jù)值。MySQL對于單精度值使用四個字節(jié),對于雙精度值使用八個字節(jié)。 FLOAT單精度浮點數(shù)精確到約7位小數(shù),DOUBLE雙精度浮點數(shù)精確到大約15位小數(shù) 。FLOAT類型會隨著數(shù)值的增大精度會減小。

舉例說明

FLOAT(M,D),其中,M表示存儲的有效位數(shù),D代表小數(shù)點后面的位數(shù);即整數(shù)位數(shù)+小數(shù)部分不能超過M值。 colum1 FLOAT(7,4) 上面例子中,如果你插入為999.00009到cloum1列,那么mysql在存儲時會四舍五入變?yōu)?99.0001插入。

DOUBLE(7,4) :DOUBLE類型的使用與FLOAT類型完全一致,唯一的區(qū)別就是占用字節(jié)不同且浮點數(shù)的精度有所不同。

② 定點類型(精確值)
  • DECIMAL和NUMERIC

DECIMALNUMERIC?類型的存儲==精確的數(shù)值數(shù)據(jù)==。使用這些類型時,重要的是要保留==精確的精度==,例如使用貨幣數(shù)據(jù)。在MySQL中, NUMERIC被作為DECIMAL來應(yīng)用,所以下面的舉例DECIMAL同樣適用于?NUMERIC 。

  • 舉例說明

salary DECIMAL(5,2)
在上面的例子中,薪水字段的類型為decimal,表示精確的數(shù)字。其中,5代表精度,2代表刻度。
精度表示數(shù)值存儲的有效位數(shù),刻度表示小數(shù)點后面可存儲的位數(shù)。
DECIMAL(5,2)能夠存儲五位數(shù)和兩位小數(shù)的任何值,因此可以存儲在salary 列中的值的范圍-999.99是 999.99
?
特殊注意:
DECIMAL(M)和DECIMAL(M,0)是相等的,存儲長度取決于M的值,默認(rèn)情況下M值為10.刻度為0表示沒有小數(shù)。

案例:定義一個職員表tb_staff,定義字段(id、username、salary、addtime)

mysql> use db_itheima;
mysql> create table tb_staff(id smallint unsigned not null auto_increment,username varchar(20),salary decimal(11,2),addtime date,primary key(id)
) engine=innodb default charset=utf8;

3、字符串類型

☆ CHAR類型

CHAR類型的字符串為定長.長度范圍是0到255之間的任何值.占用定長的存儲空間,不足的部分用==空格==填充;讀取時刪掉后面的空格。

password char(32)

mobile char(11)

  • 存儲空間

CHAR(==M==)類型的存儲空間和字符集有關(guān)系,一個中文在utf8字符集中占用3個bytes、gbk占用2個bytes、數(shù)字和字符統(tǒng)一用一個字符表示。

  • 存儲機制

在不夠M長度時,MySQL在存儲數(shù)據(jù)時,需要填充特殊的空格.

  • 舉例說明

字段名稱 CHAR(M),M表示字符數(shù)

應(yīng)用場景:加密后的密碼 => char(32),手機號碼mobile(11),身份證號碼等等

案例:創(chuàng)建一個tb_admin數(shù)據(jù)表,定義字段(id、username、password)

mysql> use db_itheima;
mysql> create table tb_admin(id tinyint unsigned not null auto_increment,username varchar(10),password char(32),primary key(id)
) engine=innodb default charset=utf8;

☆ VARCHAR類型

VARCHAR是==變長存儲==,僅使用必要的存儲空間.

name varchar(10)

  • 存儲空間

VARCHAR(M)類型的存儲空間和字符集有關(guān)系,一個中文在utf8字符集中占用3個bytes、gbk統(tǒng)一占用2個bytes、數(shù)字和字符一個字符表示。

  • 存儲機制

VARCHAR(M)字段存儲實際是從第二個字節(jié)開始存儲,然后用1到2個字節(jié)表示實際長度,剩下的才是可以存儲數(shù)據(jù)的范圍,因此最大可用存儲范圍是65535-3=65532字節(jié);

第一個字節(jié)標(biāo)識是否為空.(長度小于255字節(jié),使用一個字節(jié)來表示長度;大于255字節(jié)使用兩個字節(jié)來表示長度)。

應(yīng)用場景:主要適合存儲長度不固定的字符串信息,如用戶名稱、產(chǎn)品標(biāo)題、新聞標(biāo)題、新聞描述(不超過255個字符)

案例:創(chuàng)建一個tb_news數(shù)據(jù)表,定義字段(id、title、description、addtime)

mysql> use db_itheima;
mysql> create table tb_news(id int not null auto_increment,title varchar(80),description varchar(255),addtime date,primary key(id)
) engine=innodb default charset=utf8;

☆ TEXT類型

TEXT代表文本類型的數(shù)據(jù),當(dāng)我們使用VARCHAR類型存儲數(shù)據(jù)時(早期最大只能存儲255個字符,MySQL5版本中,其gbk可以存儲3萬多個字符,utf8格式可以存儲2萬多個字符),如超過了VARCHAR的最大存儲范圍,則可以考慮使用TEXT文本類型。

經(jīng)驗之談:255個字符以內(nèi)(包括),定長就使用CHAR類型,變長就使用VARCHAR類型,如果超過255個字符,則使用TEXT文本類型。

應(yīng)用場景:文本內(nèi)容、產(chǎn)品的詳細(xì)介紹等等

案例:創(chuàng)建一個tb_goods產(chǎn)品表,定義字段(id、name、price、content)

mysql> use db_itheima;
mysql> create table tb_goods(id int not null auto_increment,name varchar(80),price decimal(11,2),content text,primary key(id)
) engine=innodb default charset=utf8;

☆ 其他類型

BLOB:保存二進(jìn)制的大型數(shù)據(jù)(字節(jié)串),沒有字符集,eg:圖片、音頻視頻等。

實際運維工作中,很少將文件直接保存在數(shù)據(jù)庫端,一般文件的存儲都是基于路徑進(jìn)行操作的。

ENUM枚舉類型:多選一,從給定的多個選項中選擇一個,如gender enum('男','女','保密')

SET集合類型:多選多,從給定的多個選項中選個多個,如hobby set('吃飯','睡覺','打豆豆')

4、日期時間類型

經(jīng)驗之談:時間類型的選擇比較簡單,主要看你需要的時間格式,是年月日、小時分鐘秒等等。

###㈠ DATE類型(年-月-日)

The?DATE?type is used for values with a date part but no time part. MySQL retrieves and displays?DATE?values in'YYYY-MM-DD'?format. The supported range is?'1000-01-01'?to?'9999-12-31'.

###㈡ DATETIME(年月日小時分鐘秒)

The?DATETIME?type is used for values that contain both date and time parts. MySQL retrieves and displaysDATETIME?values in?'YYYY-MM-DD HH:MM:SS'?format. The supported range is?'1000-01-01 00:00:00'?to?'9999-12-31 23:59:59'.

DATETIME范圍相對于TIMESTAMP范圍更廣,'1000-01-01 00:00:00' to '9999-12-31 23:59:59'

###㈢ TIMESTAMP(年月日小時分鐘秒)

The?TIMESTAMP?data type is used for values that contain both date and time parts.?TIMESTAMP?has a range of?'1970-01-01 00:00:01'?UTC to?'2038-01-19 03:14:07'?UTC.

TIMESTAMP選項如果不插入時間,則MySQL會自動調(diào)用系統(tǒng)時間寫入數(shù)據(jù)

注意:

Invalid?DATE,?DATETIME, or?TIMESTAMP?values are converted to the?“zero”?value of the appropriate type ('0000-00-00'?or?'0000-00-00 00:00:00').

無效的日期,日期時間等會被替換成‘0000-00-00’或‘0000-00-00 00:00:00’

###㈣ TIME(小時:分鐘:秒)

MySQL retrieves and displays?TIME?values in?'HH:MM:SS'?format (or?'HHH:MM:SS'?format for large hours values).TIME?values may range from?'-838:59:59'?to?'838:59:59'.

說明:小時部分可以是這么大,因為可以使用TIME類型不僅代表一個時間(必須小于24小時),而且可以表示運行時間或兩個事件之間的時間間隔(可能大于24小時,甚至負(fù)數(shù))。

==注意:==

TIME這一列如果存儲縮寫,需要注意mysql的解釋方式。無效的時間值會被轉(zhuǎn)換成'00:00:00'?。

'11:12'?means?'11:12:00', not?'00:11:12'.

'12'?and?12?are interpreted as?'00:00:12'.

###㈤ YEAR

YEAR(4)?and?YEAR(2)?differ in display format, but have the same range of values.

For 4-digit format, MySQL displays?YEAR?values in?YYYY?format, with a range of?1901?to?2155, or?0000.

For 2-digit format, MySQL displays only the last two (least significant) digits; for example,?70?(1970 or 2070) or?69?(2069).

無效的值將會被轉(zhuǎn)換成'0000'.

案例:編寫tb_article文章表,定義字段(id、title、description、addtime)

mysql> use db_itheima;
mysql> create table tb_article1(id int not null auto_increment,title varchar(80),description varchar(255),addtime datetime,primary key(id)
) engine=innodb default charset=utf8;
?
mysql> create table tb_article2(id int not null auto_increment,title varchar(80),description varchar(255),addtime timestamp,primary key(id)
) engine=innodb default charset=utf8;
?
mysql> insert into tb_article1 values (null,'mysql從入門到放棄','mysql很好很強大...',null);
?
mysql> insert into tb_article1 values (null,'mysql從入門到放棄','mysql很好很強大...',null);

二、SQL查詢語句(重點)

1、回顧SQL查詢語句

基本語法:

mysql> select */字段列表 from 數(shù)據(jù)表名稱 where 查詢條件;

2、SQL查詢五子句

基本語法:

mysql> select */字段列表 from 數(shù)據(jù)表名稱 where 子句 group by 子句 having 子句 order by 子句 limit 子句;

① where子句

② group by子句

③ having子句

④ order by子句

⑤ limit子句

特別注意:五子句的順序是固定的,不能顛倒。

3、WHERE子句

符號說明
%匹配0個或任意多個字符
_(下劃線)匹配單個字符
like模糊匹配
=等于,精確匹配
>大于
<小于
>=大于等于
<=小于等于
!=和<>不等于
! 和 not邏輯非
|| 和 or邏輯或
&& 和 and邏輯與
between...and....兩者之間
in (....)在...
not in (....)不在

案例:like模糊查詢語句,查詢姓"關(guān)"的同學(xué)信息(name字段對應(yīng)值應(yīng)該以"關(guān)"開頭)

準(zhǔn)備測試數(shù)據(jù)

mysql> use db_itheima;
mysql> create table tb_student(id mediumint not null auto_increment,name varchar(20),age tinyint unsigned default 0,gender enum('男','女'),address varchar(255),primary key(id)
) engine=innodb default charset=utf8;
插入測試數(shù)據(jù)
mysql> insert into tb_student values (null,'劉備',33,'男','湖北省武漢市');
mysql> insert into tb_student values (null,'貂蟬',18,'女','湖南省長沙市');
mysql> insert into tb_student values (null,'關(guān)羽',32,'男','湖北省荊州市');
mysql> insert into tb_student values (null,'大喬',20,'女','河南省漯河市');
mysql> insert into tb_student values (null,'趙云',25,'男','河北省石家莊市');
mysql> insert into tb_student values (null,'小喬',18,'女','湖北省荊州市');

使用like模糊查詢,獲取姓"關(guān)"的同學(xué)信息

mysql> select * from tb_student where name like '關(guān)%';

like模糊查詢,有點類似于管道命令的中的數(shù)據(jù)檢索。有兩個關(guān)鍵字:%百分號與_下劃線,%百分號代表任意個任意字符,_下劃線代表任意的某個字符(只能匹配1個)

案例:like模糊查詢語句,查詢名字中帶"蟬"字的同學(xué)信息

mysql> select * from tb_student where name like '%蟬%';

案例:like模糊查詢語句,查詢云字結(jié)尾且名字為兩個字的同學(xué)信息

mysql> select * from tb_student where name like '_云';

案例:獲取學(xué)生表中,id編號為3的同學(xué)信息

mysql> select * from tb_student where id=3;

案例:獲取年齡大于25周歲的同學(xué)信息

mysql> select * from tb_student where age>25;

案例:獲取學(xué)生表中,性別不為男的同學(xué)信息(獲取女同學(xué)的信息)

mysql> select * from tb_student where gender<>'男';

案例:獲取班級中年齡大于30歲的男同學(xué)信息

mysql> select * from tb_student where age>30 && gender='男';

案例:獲取id值為1、3、5的同學(xué)信息

mysql> select * from tb_student where id=1 or id=3 or id=5;

案例:獲取年齡在18周歲~25周歲之間的同學(xué)信息

mysql> select * from tb_student where age>=18 and age<=25;
或
mysql> select * from tb_student where age between 18 and 25;

案例:獲取id值為2、4、6的同學(xué)信息

mysql> select * from tb_student where id in (2,4,6);

4、DISTINCT數(shù)據(jù)去重

案例:獲取tb_student學(xué)生表學(xué)員年齡的分布情況。

mysql> select distinct age from tb_student;

5、GROUP BY子句(重點和難點)

group by子句的作用:對數(shù)據(jù)進(jìn)行分組操作,為什么要進(jìn)行分組呢?分組的目標(biāo)就是進(jìn)行分組統(tǒng)計。

日常生活中的分組太多了,如按男女進(jìn)行分組,按成績進(jìn)行分組,按院校、系部分組,按部門進(jìn)行分組。

根據(jù)給定==數(shù)據(jù)列==的查詢結(jié)果進(jìn)行分組統(tǒng)計,最終得到一個==分組匯總表==

注:一般情況下group by需與==統(tǒng)計函數(shù)==一起使用才有意義

☆ 統(tǒng)計函數(shù)

常見統(tǒng)計函數(shù)說明
max求最大值
min求最小值
sum求和
avg求平均值
count求總行數(shù)

案例:求tb_student表中一共有多少個記錄

mysql> select count(*) from tb_student;

案例:求年齡的最大值與最小值

mysql> select max(age) from tb_student;
與
mysql> select min(age) from tb_student;

案例:針對id字段求和

mysql> select sum(id) from tb_student;

案例:求學(xué)員表中年齡的平均值

mysql> select avg(age) from tb_student;

☆ GROUP BY分組

案例:求tb_student表中,男同學(xué)的總數(shù)量與女同學(xué)的總數(shù)量

mysql> select gender,count(*) from tb_student group by gender;

在MySQL5.7以后版本中,分組字段必須出現(xiàn)在select后面的查詢字段中

案例:求tb_student表中,男同學(xué)年齡的最大值與女同學(xué)年齡的最大值

mysql> select gender,max(age) from tb_student group by gender;

☆ GROUP BY分組原理

記住:以后只要涉及到求每個學(xué)科、每個部分、每個年級、每個系部薪資最高、成績最好、薪資的平均值等等,就是基于GROUP BY + 統(tǒng)計函數(shù)。

6、HAVING子句

  • having與where類似,根據(jù)條件對==數(shù)據(jù)==進(jìn)行過濾篩選

  • where==針對表中的列==發(fā)揮作用,查詢數(shù)據(jù)

  • having==針對查詢結(jié)果集==發(fā)揮作用,篩選數(shù)據(jù)

案例:having在做簡單查詢時可以替代where子句

mysql> select * from tb_student having age>20;

案例:按學(xué)科進(jìn)行分組,求每個學(xué)科擁有多少人

mysql> create table tb_student(id mediumint not null auto_increment,name varchar(20),age tinyint unsigned default 0,gender enum('男','女'),subject enum('ui','java','yunwei','python'),primary key(id)
) engine=innodb default charset=utf8;mysql> insert into tb_student values (null,'悟空',255,'男','ui');
mysql> insert into tb_student values (null,'八戒',250,'男','python');
mysql> insert into tb_student values (null,'唐僧',30,'男','yunwei');
mysql> insert into tb_student values (null,'沙僧',150,'男','java');
mysql> insert into tb_student values (null,'小白龍',100,'男','yunwei');
mysql> insert into tb_student values (null,'白骨精',28,'女','ui');
mysql> insert into tb_student values (null,'兔子精',22,'女','yunwei');
mysql> insert into tb_student values (null,'獅子精',33,'男','yunwei');
或
mysql> insert into tb_student values (null,'悟空',255,'男','ui'),(null,'八戒',250,'男','python'),(null,'唐僧',30,'男','yunwei'),(null,'沙僧',150,'男','java'),(null,'小白龍',100,'男','yunwei'),(null,'白骨精',28,'女','ui'),(null,'兔子精',22,'女','yunwei'),(null,'獅子精',33,'男','yunwei');
mysql> select subject,count(*) from tb_student group by subject;

案例:求每個學(xué)科中,學(xué)科人數(shù)大于3人的學(xué)科信息

mysql> select subject,count(*) from tb_student group by subject having count(*)>3;

7、ORDER BY子句

主要作用的就是對數(shù)據(jù)進(jìn)行排序(升序、降序)

升序:從小到大,1,2,3,4,5

mysql> select * from 數(shù)據(jù)表名稱 ... order by 字段名稱 asc;

降序:從大到小,5,4,3,2,1

mysql> select * from 數(shù)據(jù)表名稱 ... order by 字段名稱 desc;

案例:按年齡進(jìn)行排序(由大到小)

mysql> select * from tb_student order by age desc;

8、LIMIT子句

基本語法:

mysql> select * from 數(shù)據(jù)表名稱 ... limit number; 查詢滿足條件的number條數(shù)據(jù)
或
mysql> select * from 數(shù)據(jù)表名稱 ... limit offset,number; 從偏移量為offset開始查詢,查詢number條記錄
offset的值從0開始

offset偏移量:

案例:獲取學(xué)生表中,年齡最大的學(xué)員信息

mysql> select * from tb_student order by age desc limit 1;

案例:從偏移量為1的元素開始查詢,查詢2條記錄

mysql> select * from tb_student limit 1,2;

LIMIT子句在開發(fā)項目中,主要應(yīng)用于數(shù)據(jù)分頁。

案例:實現(xiàn)數(shù)據(jù)分頁(參考上圖)

第一頁:

mysql> select * from tb_student limit 0,2;

第二頁:

mysql> select * from tb_student limit 2,2;

三、SQL多表查詢(了解)

1、什么是多表查詢

我們剛才學(xué)習(xí)的SQL五子句都主要是針對單表情況,我們在實際工作中,也可能會接觸到一些復(fù)雜的多表查詢。

2、UNION聯(lián)合查詢

UNION聯(lián)合查詢的作用:把多個表中的數(shù)據(jù)聯(lián)合在一起進(jìn)行顯示。應(yīng)用場景:分庫分表

第一步:創(chuàng)建兩個結(jié)構(gòu)相同的學(xué)生表tb_student1與tb_student2

mysql> create table tb_student1(id mediumint not null auto_increment,name varchar(20),age tinyint unsigned default 0,gender enum('男','女'),subject enum('ui','java','yunwei','python'),primary key(id)
) engine=innodb default charset=utf8;
mysql> insert into tb_student1 values (1,'悟空',255,'男','ui');mysql> create table tb_student2(id mediumint not null auto_increment,name varchar(20),age tinyint unsigned default 0,gender enum('男','女'),subject enum('ui','java','yunwei','python'),primary key(id)
) engine=innodb default charset=utf8;
mysql> insert into tb_student2 values (2,'唐僧',30,'男','yunwei');

第二步:使用UNION進(jìn)行聯(lián)合查詢

mysql> select * from tb_student1 union select * from tb_student2;

3、交叉查詢(了解)

基本語法:

mysql> select */字段列表 from 數(shù)據(jù)表1,數(shù)據(jù)表2;
或
mysql> select */字段列表 from 數(shù)據(jù)表1 cross join 數(shù)據(jù)表2;

運行結(jié)果:

字段總數(shù) = 數(shù)據(jù)表1的字段 + 數(shù)據(jù)表2的字段

總記錄數(shù) = 數(shù)據(jù)表1的記錄數(shù) * 數(shù)據(jù)表2的記錄數(shù) => (笛卡爾積)

準(zhǔn)備兩張數(shù)據(jù)表:產(chǎn)品分類表 與 產(chǎn)品的信息表

tb_category

mysql> create table tb_category(id smallint not null auto_increment,name varchar(20),pid smallint default 0,primary key(id)
) engine=innodb default charset=utf8;insert into tb_category values (null,'手機',0);		=>  id=1
insert into tb_cateogry values (null,'電腦',0);		=>  id=2
insert into tb_category values (null,'游戲手機',1);	   =>  游戲手機屬于手機分類

pid代表所屬的父級類別,如果自己就是頂級分類,則為0

tb_goods

mysql> create table tb_goods(id int not null auto_increment,title varchar(80),price decimal(11,2),cid smallint default 0,primary key(id)
) engine=innodb default charset=utf8;insert into tb_goods values (null,'IPhone 11',5699.00,1);
insert into tb_goods values (null,'MI 10',4699.00,1);
insert into tb_goods values (null,'ThinkPad X1',9999.00,2);insert into tb_goods values (null,'Nike air',999.00,10);

cid代表產(chǎn)品的所屬分類編號,與tb_category表要一一對應(yīng)

案例:把分類表與產(chǎn)品表進(jìn)行交叉,求結(jié)果

mysql> select * from tb_category cross join tb_goods;

交叉連接本身是沒有意義的,其只是強制把兩個表甚至多個表進(jìn)行連接在一起。但是交叉查詢中也有正確的結(jié)果,所以我們所謂的多表連接只需要在交叉連接的基礎(chǔ)上增加一個連接條件,則就是我們想要的結(jié)果了。所以交叉查詢是多表查詢的基礎(chǔ)。

4、內(nèi)連接查詢(重點)

基本語法:

mysql> select 數(shù)據(jù)表1.字段列表,數(shù)據(jù)表2.字段列表 from 數(shù)據(jù)表1 inner join 數(shù)據(jù)表2 on 連接條件;

案例:獲取產(chǎn)品表中每個產(chǎn)品的分類信息

mysql> select tb_goods.*,tb_category.name from tb_goods inner join tb_category on tb_goods.cid=tb_category.id;

內(nèi)連接查詢:把兩個表甚至多個表進(jìn)行連接,然后拿表1中的每一條記錄與表2中的每一條記錄進(jìn)行匹配,如果有與之對應(yīng)的結(jié)果,則顯示。反之,則忽略這條記錄。

5、外連接查詢(重點)

內(nèi)連接查詢要求:表1和表2中的每一條記錄必須要一一對應(yīng),如果無法匹配,則這條記錄會被自動被忽略掉,那如果我需要保留表1中的所有記錄或表2中的所有記錄怎么辦呢?

答:使用外連接查詢

基本語法:

左外連接查詢:把左表中的每一條數(shù)據(jù)都保留,右表匹配到結(jié)果就顯示,匹配不到就NULL

select 數(shù)據(jù)表1.字段列表,數(shù)據(jù)表2.字段列表 from 數(shù)據(jù)表1 left join 數(shù)據(jù)表2 on 連接條件;

右外連接查詢:把右表中的每一條數(shù)據(jù)都保留,左表匹配到結(jié)果就顯示,匹配不到就NULL

select 數(shù)據(jù)表1.字段列表,數(shù)據(jù)表2.字段列表 from 數(shù)據(jù)表1 right join 數(shù)據(jù)表2 on 連接條件;

案例:獲取產(chǎn)品表中每個產(chǎn)品的分類信息(無論匹配到與否)

mysql> select tb_goods.*,tb_category.name from tb_goods left join tb_category on tb_goods.cid=tb_category.id;

6、別名機制:簡化內(nèi)外連接

案例:獲取產(chǎn)品表中每個產(chǎn)品的分類信息(無論匹配到與否)

原始語句:

mysql> select tb_goods.*,tb_category.name from tb_goods left join tb_category on tb_goods.cid=tb_category.id;

給數(shù)據(jù)表起個簡單的名字,如tb_category叫c,tb_goods叫g(shù)

① mysql> select * from tb_goods left join tb_category;
起別名
② mysql> select * from tb_goods g left join tb_category c;
寫on條件
③ mysql> select * from tb_goods g left join tb_category c on g.cid=c.id;
篩選字段
④ mysql> select g.*,c.name from tb_goods g left join tb_category c on g.cid=c.id;
http://www.risenshineclean.com/news/47692.html

相關(guān)文章:

  • 網(wǎng)站建設(shè)建議推廣價格一般多少
  • 湖南網(wǎng)站建設(shè)報價網(wǎng)站網(wǎng)絡(luò)推廣推廣
  • 做網(wǎng)站就業(yè)要會什么問題公司網(wǎng)址怎么注冊
  • 重慶平臺網(wǎng)站建設(shè)設(shè)計獲客軟件
  • 定制做網(wǎng)站費用百度上海推廣優(yōu)化公司
  • 一般網(wǎng)站的寬度桂平seo快速優(yōu)化軟件
  • 山東食品行業(yè)網(wǎng)站模板百度推廣創(chuàng)意范例
  • 法制教育網(wǎng)站廣州網(wǎng)站建設(shè)公司
  • 一個網(wǎng)站開發(fā)背景是什么semantic scholar
  • 微信網(wǎng)站與響應(yīng)式網(wǎng)站圖片優(yōu)化是什么意思
  • 上海網(wǎng)站代優(yōu)化教你免費申請個人網(wǎng)站
  • 網(wǎng)站開發(fā)研究內(nèi)容怎么寫小程序開發(fā)平臺有哪些
  • 上海電子通科技網(wǎng)站建設(shè)西安關(guān)鍵詞排名提升
  • 網(wǎng)站搭建徐州百度網(wǎng)絡(luò)360廣告推廣平臺
  • 做網(wǎng)站軟件 手機seo搜索引擎優(yōu)化營銷案例
  • 品牌微營銷網(wǎng)站建設(shè)b站黃頁推廣
  • 網(wǎng)站建設(shè)策劃書附錄網(wǎng)站優(yōu)化的意義
  • 網(wǎng)站關(guān)鍵詞排名如何提升我的百度購物訂單
  • 濟南外貿(mào)網(wǎng)站建設(shè)公司電商網(wǎng)站建設(shè)公司哪家好
  • 國際貿(mào)易公司注冊需要什么條件溫州seo結(jié)算
  • wordpress寫入權(quán)限seo文案范例
  • 織夢網(wǎng)站織夢做英文版的連云港seo公司
  • 網(wǎng)站搭建報價百度人工
  • 關(guān)鍵詞推廣數(shù)據(jù)分析谷歌seo網(wǎng)站推廣怎么做
  • 襄陽網(wǎng)站建設(shè)楚翼網(wǎng)絡(luò)大數(shù)據(jù)精準(zhǔn)獲客軟件
  • 成都營銷型網(wǎng)站建設(shè)及推廣那家好成都網(wǎng)站優(yōu)化公司
  • 怎么介紹自己做的企業(yè)網(wǎng)站頁面萬能搜索引擎入口
  • 織夢發(fā)布文章wordpressseo優(yōu)化軟件哪個好
  • 翻墻國外網(wǎng)站做兼職網(wǎng)站優(yōu)化公司開始上班了
  • 廣州聯(lián)享網(wǎng)站建設(shè)公司怎么樣新聞熱點