mysql4 mysql4 高階操作

2021-10-18 02:26:54 字數 1532 閱讀 8764

一、聯結(使用 where(早) 和 join(晚) 都可以完成聯結)

1.1 從 teacher 表和 profession 表中,查詢出老師的名字和所屬專業的名稱。

select t.`l_name`,t.`f_name`,p.`name` from `teacher` as t,`profession` as p where t.`profession_id`=p.`id`;

1.2 內聯結

1.2.1 inner join (內聯結:返回滿足條件得所有行)

內連線,也叫等值連線,inner join 產生同時符合a和b的一組資料。

select t.`l_name`,t.`f_name`,p.`name` from `teacher` as t inner join `profession` as p on t.`profession_id`=p.`id`;

1.2.2 nature join (自然聯結:也是返回滿足條件得所有行)

1.3 外聯結

1.3.1 left join (左聯結:等價於 left outer join)

返回左表中所有的行,如果左表中的行沒有匹配右表中的行,就會返回 null。

1.3.2 right join (右聯結)

與左聯結相反。

1.3.3 full join (全聯結:返回左表右表中所有的行,如果在另乙個表中無匹配,則該錶的行顯示 null)

1.3.4 cross join (交叉聯結:兩個表中所有可能的組合)

cross join:交叉連線,得到的結果是兩個表的乘積,即笛卡爾積

笛卡爾(descartes)乘積又叫直積。

假設集合a=,集合b=,

則兩個集合的笛卡爾積為。

可以擴充套件到多個集合的情況。

類似的例子有,如果a表示某學校學生的集合,b表示該學校所有課程的集合,則a與b的笛卡爾積表示所有可能的選課情況。

1.3.5 union join (聯合聯結:返回只有乙個表有值,另乙個表為空的資料組合。)

實際用的很少,很多 dbms 不支援該查詢。

1.4 自聯結(兩個表都是自己,使用較少)

二、子查詢

查詢條件巢狀的查詢。

三、集合操作(連線兩個查詢語句)

3.1 union 返回兩個查詢的所有行,但是會刪除相同行

如:查詢老師和學生都來自哪些城市。

3.2 intersect 返回兩個查詢所有的共同行

如:查詢哪些城市同時是老師和學生的故鄉。

3.3 except 返回第乙個查詢中存在,但是第二個查詢中不存在的所有行,會刪除相同行。

如:列出所有不是學生家鄉,但是教師的家鄉的城市。

四、索引

在資料庫表中,對欄位建立索引可以大大提高查詢速度。

--選擇資料

select * from test where name="王五";

--建立索引

create index name_index on test(name);

--刪除索引

drop index name_index on test;

MySQL高階 索引優化案例4

1 員工表的建表語句 create table emps id int primary key auto increment,name varchar 20 not null default comment 姓名 age int not null default 0 comment 年齡 pos v...

mysql 4 基礎 mysql 開發基礎系列4

字串型別 1.1 char 和varchar 型別 char 列的長度固定為建立表時宣告的長度,varchar 列中的值為可變長字串。在檢索的時候,char 列刪除了尾部的空格,而varchar 則保留這些空格。在sqlserver裡都是長度2 create table vc v varchar 4...

4 MySql高階之觸發器

1.介紹觸發器是與表有關的資料庫物件,指在insert update delete 之前或之後,觸發並執行觸發器中定義的sql語句集合。觸發器的這種特性可以協助應用在資料庫端確保資料的完整性 日誌記錄 資料校驗等操作 使用別名 old 和 new 來引用觸發器中發生變化的記錄內容,這與其他的資料庫是...