聯合查詢
語法:
查詢語句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刪除可以回滾。