MYSQL基礎篇
一,多個表的串連
1,內串連--表間的主鍵與外鍵進行相連,只取出鍵值一致的資料。
select user.name,order_basic.oid from order_basic inner join user on order_basic.uid = user.uid;
添加表的別名:select u.name,o.oid form order_basic as o inner join user as u on o.uid = u.uid;
//當網域名稱太多時,以及外表的名稱本身比較長時可以可以使用別名。
2,外串連--使用外串連可以取出只在一方表中存在的資料。分為左外串連和右外串連。
select u.name,o.oid from user as u left outer join order_basic as o on u.uid = o.uid;
//沒有任何訂單資訊的使用者也會被檢索出來。--左外串連
select u.name, o.oid from user as u right outer join order_basic as o on u.uid p o.uid;
//沒用使用者的訂單資訊也會被取出來--右外串連
串連向哪邊,哪邊的資訊更全!!內串連時抽取兩表間鍵值一致的記錄,而外串連時以其中一個表的全部記錄為基準進行檢索!!
3,多個表之間的串連
select ob.oid,ob.odate,p.pname,p.price,od.quantity,u.name from
(
(order_basic as ob inner join order_detail as od on ob.oid = od.oid)
inner join product as p on od.pid=p.pid
)inner join user as u on ob.uid = u.uid;
二,在其他查詢的基礎上進行資料檢索
1,基本子查詢
select * from product where price > (select avg(price) from product);
2,多個返回值的子查詢
select name,address from user where uid not in (select uid from order_basic where odate='2010-07-24');
//返回在這一天沒有下單的使用者資料
3,子查詢與exists運算子
select name,address from user where exists (select * from order_basic where user.uid = order_basic.uid)
//相互關聯的子查詢戶對基礎資料表的每一條記錄進行子查詢的動作,如果基礎資料表的資料量太大時會給資料庫伺服器帶來很大的負荷,使用時要特別小心
三,表的維護和改造
1,alter table 命令
alter table ...modify 修改列的定義
alter table ...add 添加列
alter table ...change 修改列的名稱和定義
alter table ...drop 刪除列
alter table visitor modify name varchar(20)---修改列的類型,但通常情況下如果已經存在列資料是不宜修改類型的
alter table visitor add age int;添加了一個新的age列
alter table visitor add age int after name 在任意位置添加列
alter table visitor add age int first 在表開頭處加新列
alter table visitor modify age int after name 改變列的位置
alter table visitor change birth birthday DATE 修改列名稱和類型
alter table visitor drop age 刪除列
2,複製表和刪除表
create table customH select * from custom;這樣的複製將表結構和資料同時複製過來了
create table customG like custom 只複製表的列構造
insert into customG select * from custom; 將資料複製到建立的表中【可以添加where和limit限制來擷取資料】
drop table customG / drop table if exists customG