1. 程式人生 > 實用技巧 >SQL基本知識

SQL基本知識

SQL基本知識:
    1.表與表之間的關係處理:
        一對多:在多的一方建立一個列作為外來鍵,指向一方主鍵;
        多對多:新建一張中間表,至少包含兩個列,都作為外來鍵,分別指向各自的主鍵;
        一對一:先當做一對多,在外來鍵欄位新增唯一約束;
        
        外來鍵新增的語法:
            alter table 表 add foreign key(列[外來鍵]) references 表(列[主鍵])
            例如:alter table score add foreign key(sid1) references student(sid)
            
    
2.sql的連線查詢: 1.內連線查詢: select * from a inner join b on 連線條件 [where 其它條件] 例如:SELECT * from t_category c INNER JOIN t_product p ON c.cid = p.cno; 2.外連線查詢: select * from a left outer join b on 條件 例如:SELECT * FROM t_category c LEFT OUTER JOIN t_product p ON c.cid = p.cno 內連線查詢與外連線查詢的區別:
- 內連線: 查詢的是兩個表的公共部分,滿足連線條件的部分 - 左外連線: 以左邊表為主表, 查詢出左邊表的所有的資料. 再通過連線條件匹配出右邊表的資料, 如果滿足連線條件, 展示右邊表的資料; 如果不滿足, 右邊的資料通過null代替; 3.子查詢: 1.子查詢的結果是一個值的情況: 子查詢結果是單行單列,肯定在WHERE後面作為條件,父查詢使用:比較運算子,如:> 、<、<>、= 等 SELECT * FROM 表 WHERE 列 =(子查詢); 例如: select
* from product where cno = (SELECT cid FROM category where cname ='手機數碼'); 2.子查詢的結果是單列多行的情況: 子查詢結果是單例多行,結果集類似於一個數組,父查詢使用IN運算子; SELECT * FROM 表 WHERE 列 in (子查詢); 例如:SELECT * FROM t_product WHERE cno in (SELECT cid FROM t_category WHERE cname in('手機數碼','食物')); 3.子查詢的結果是多行多列的情況: 子查詢結果是多行多列,肯定在FROM後面作為表; 子查詢作為表需要取別名,否則這張表沒有名稱則無法訪問表中的欄位; 例如: SELECT MAX(c1.price) from (SELECT * FROM product where cno = 1) as c1;