多表查詢
子查詢
主鍵特性非空唯一
被引用
當表的某一列被指定為主鍵後,該列就不能為空,不能有重複值出現建立表時指定主鍵
方法一:
create table emp( empno int primary key, ename varchar(20) );
方法二:指定empno列為主鍵列,就是為empno列新增主鍵約束
create table emp( empno int, ename varchar(20) primary key(empno) );
通常,我們會指定主鍵列為整型,然後設定自增長,以保證在插入資料時主鍵列的唯一和非空。
建立表時指定主鍵自增長
create table emp( empno int primary key auto_increment, ename varchar(20) );
修改表時設定主鍵自增長
alter table emp change empno empno int auto_increment;
修改表時刪除主鍵自增長
alter table emp change empno empno int;
如果某些列不能設定null值,那麼就可以對該列新增非空約束。
create table emp( empno int primary key auto_increment, ename varchar(20) not null );
對 ename 列進行了設定
如果某些列不能設定重複的值,那麼就可以對該列新增唯一約束。
create table emp( empno int primary key auto_increment, ename varchar(20) not null unique, age int );
對 ename 列進行了設定
外來鍵必須是另乙個表的主鍵的值修改表時新增外來鍵約束外來鍵可以重複
外來鍵可以為空
alter table emp add constraint fk_emp_dept foreign key(deptno) references dept(deptno);
修改表時刪除外來鍵約束
alter table emp drop foreign fk_emp_dept;/*約束名稱*/
要求被合併的表中,列的型別和數目相同
union 去除重複行
union all 不去除重複行
select * from 表1 union all select * from 表2;
select * from 表1 union select * from 表2;
左外連線左表記錄無論是否滿足條件都會查詢出來,而右表只有滿足條件才能出來。左表中不滿足條件的記錄,右表部分都為null值。
select * from 表1 別名1 left outer join 表2 別名2 on 別名1.xx=別名2.xx;
左外自然連線右表記錄無論是否滿足條件都會查詢出來,而左表只有滿足條件才能出來。右表中不滿足條件的記錄,左表部分都為null值。
select * from 表1 別名1 natural left outer join 表2 別名2 on 別名1.xx=別名2.xx;
右外連線
select * from 表1 別名1 right outer join 表2 別名2 on 別名1.xx=別名2.xx;
右外自然連線mysql不支援,但是可以使用 union
select * from 表1 別名1 natural right outer join 表2 別名2 on 別名1.xx=別名2.xx;
查詢中有查詢
where 後作為條件存在
from 後作為表存在
單行單列
select * from 表1 別名1 where 列1 [=,<,>,<=,>=,!=] (select 列 from 表2 別名2 where 條件);
多行單列
select * from 表1 別名1 where 列1 [in,all,any] (select 列 from 表2 別名2 where 條件);
單行多列
select * from 表1 別名1 where (列1,列2) in (select 列1,列2 from 表2 別名2 where 條件);
多行多列
select * from 表1 別名1,(select ......) 別名2 where 條件;
MySQL子查詢,多表查詢
為了便於介紹我們建立以下表 create table user info id int 2 primary key,user name varchar 12 unique password varchar 15 not null real name varchar 8 not null age in...
多表查詢和子查詢
簡要記錄一下自己學習的歷程 1 3張簡單的表 1 student表 2 class表 3 soccer表 2 多表查詢 1 連線查詢 1 inner join inner join 把兩個表連線在一起,返回兩個表中相匹配的記錄,是2和3的交集。2 left outer join left outer...
MySQL子查詢與多表查詢
1 什麼是子查詢 查詢中的查詢即為子查詢,一般使用括號將子查詢sql括起來,如下sql語句 select from select from user info users2 什麼時候用子查詢 當在查詢過程中需要知道乙個已知量的不確定資料時使用子查詢。select from address where...