小徐帶你瞭解聯合查詢(union)和數據操作語言(insert,update,delete)的用法詳解

聯合查詢

語法:

	查詢語句1
	
	union
	
	查詢語句2
	
	union
	
	.........
	
	union聯合,合併:將多條查詢語句的結果合併成一個結果

應用查詢

要查詢的結果來自多個表,且多個表沒有直接的聯繫,但查詢的信息一致時。

特點:重點

	一:要求多條查詢語句的查詢列數是一致的。
	
	二:要求多條查詢語句的查詢的每一列的類型和順序最好一致
	
	三:union關鍵字默認去重,如果使用union all可以包含重複項

案例:查詢部門編號>90或郵箱包含a的員工信息

SELECT
	* 
FROM
	employees 
WHERE
	email LIKE '%a' 
	OR department_id > 90;

#使用union方式
SELECT
	* 
FROM
	employees 
WHERE
	email LIKE '%a%' UNION
SELECT
	* 
FROM
	employees 
WHERE
	department_id > 90;

案例:查詢中國用戶中男性的信息以及外國用戶中男性的用戶信息

select id,cname,csex from t_ca where csex='男'
union
select t_id,tName,tGender from t_ua where tGender = 'male';

DML語言(數據操作語言)

數據操作語言

	插入:insert
	
	刪除:delete
	
	修改:update

一:插入語言

語法:

插入語句方式一:

insert		into		表名(列名,.......)values(值1,值2,值3,......);

1:插入的值的類型要與列的類型一致或兼容

INSERT INTO beauty ( id, NAME, sex, borndate, phone, photo, boyfriend_id )
VALUES
	( 13, '徐亞遠', '男', '1997-04-14', '15225200721', 'null', 2 );

2:不可以爲null的列必須插入值,可以爲null的列如何插入值

方式一:

INSERT INTO beauty ( id, NAME, sex, borndate, phone, photo, boyfriend_id )
VALUES
	( 13, '徐亞遠', '男', '1997-04-14', '15225200721', 'null', 2 );

方式二:

INSERT INTO beauty ( id, NAME, sex, borndate, phone,  boyfriend_id )
VALUES
	( 13, '徐亞遠', '男', '1997-04-14', '15225200721',  2 );

列數和值的個數必須一致

INSERT INTO beauty ( id, NAME, sex, borndate, phone, photo, boyfriend_id )
VALUES
	( 13, '徐亞遠', '男', '1997-04-14', '15225200721', 'null', 2 );

可以省略列名,默認所有列,而且列的順序和表中列的順序一致

INSERT INTO beauty 
VALUES
	( 13, '徐亞遠', '男', '1997-04-14', '15225200721', 'null', 2 );

插入語句方式二:

語法:
insert into 表名 set 列名=值,列名=值,…;

insert into beauty set id=14,name='小王',phone='333';

兩種方式的比較

一:方式一支持插入多行,方式二不支持

二:方式一支持子查詢,方式二不支持
在這裏插入圖片描述

二:修改語句

一:修改單表的記錄

語法:

	update		表名
	
	set	列=新值,列=新值,........
	
	where	篩選條件

案例:修改beauty表中姓趙的女神的電話爲15225200991

UPDATE beauty 
SET phone = 15225200991
WHERE
	NAME LIKE '%趙%';

案例:修改boys表中id號爲2的名稱爲張飛,魅力值爲10

UPDATE boys 
SET boyName = '張飛',
userCP = 10 
WHERE
	id = 2;

二:修改多表的記錄

語法: sql92語法

	update		表1	別名,表2	別名
	
	set	列=值,......
	
	where		連接條件
	
	and	篩選條件

sql99語法

update		表1	別名

inner	|	left	|	right		表2	別名

on	連接條件

set	列=值

where	篩選條件

修改多表的案例

案例一:修改張無忌的女朋友的手機號爲114

UPDATE boys bo
INNER JOIN beauty b ON bo.id = b.boyfriend_id 
SET b.phone = 114 
WHERE
	bo.boyName = '張無忌';

案例二:修改沒有男朋友的女神的男朋友編號都爲2號

UPDATE boys bo
RIGHT JOIN beauty b ON bo.id = b.boyfriend_id 
SET b.boyfriend_id = 2 
WHERE
	b.id IS NULL;

三:刪除語句

方式一:delete

語法:

1:單表的刪除

delete		from		表名		where		篩選條件

2:多表的刪除

sql92語法:

		delete		表1的別名,表2的別名
		
		from		表1	別名,表2	別名
		
		where	連接條件
		
		and	篩選條件;

sql99語法

delete 表1的別名,表2的別名

from 表1 別名

inner | left | right join 表2 別名 on 連接條件

where 篩選條件

方式二:truncate

語法:truncate table 表名;

方式一:delete單表的刪除

案例:刪除手機號以9結尾的女神信息

DELETE from beauty WHERE phone LIKE '%9';

多表的刪除

刪除張無忌的女朋友的信息

DELETE b
from beauty b
INNER JOIN boys bo on b.boyfriend_id=bo.id
WHERE bo.boyName='張無忌';

案例:刪除黃曉明的信息以及他女朋友的信息

DELETE b,
bo 
FROM
	beauty b
	INNER JOIN boys bo ON b.boyfriend_id = bo.id 
WHERE
	bo.boyName = '黃曉明';

方式二:truncate語句

案例:將魅力值>100的男神信息刪除

truncate	table	boys;

**

delete PK truncate

**

	一:delete可以加where條件,truncate不能加
	
	二:truncate刪除,效率更高一點
	
	三:假如要刪除的表中有自增長列,
			如果用delete刪除後,再插入數據,自增長列的值從斷點開始,而truncate刪除後,
			再插入數據,自增長列的值從1開始,
			
	四:truncate刪除沒有返回值,delete刪除有返回值
	
	五:truncate刪除不能回滾,delete刪除可以回滾。		
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章