《使用DQL命令查詢資料 上》

2021-10-02 00:12:52 字數 3207 閱讀 3291

create

table yuangong(

id int

notnull

primary

keyauto_increment

,name varchar(20

),*** varchar(20

),sid int

,foreign

key(sid)

references gongsi(id)

);

首先建立乙個從表,是它與主表相關聯

create

table gongsi(

id int

notnull

primary

keyauto_increment

,class varchar(20

));

再建立主表

select

*from yuangong;

這種查詢yuangong表的方式速度較慢

select id,name from yuangong;
這種查詢指定欄位的方式速度較快

select yuangong.id,yuangong.name,gongsi.

*from yuangong,gongsi

where yuangong.sid=gongsi.id;

這種查詢方法在選擇欄位時為了防止欄位名重複,使用了用表名區分欄位的方法

select y.id as

"code"

,y.name,g.

*from yuangong as y,gongsi as g

where y.sid=g.id;

這是連表查詢,as可以給表或者欄位名取別名,也可以不使用as而是使用空格,效果相同

select id,name,age+

20as

"年齡"

from yuangong;

在查詢時可以使用表示式,age欄位會直接輸出加了20之後的數值,可以加上別名以保證**的安全和保密性

select name,*** from yuangong;

select

distinct name,*** from yuangong;

在查詢時預設為all,就是不管有沒有重複的資料都會輸出,但是如果使用distinct,那麼就不會出現指定字段完全相同的重複資料,distinct的作用就是去除重複值

select yuangong.

*from yuangong

where name like

"王%"

;select yuangong.

*from yuangong

where name like

"王__"

;

使用like關鍵字做模糊查

%表示0個或多個字元

表示一位字元,如果想查詢後面或前面多位,可以多次使用%與

select

*from yuangong

where id in(1

,5,8

);

in的用法:in類似與乙個集合,將查詢欄位的條件整合起來放入乙個集合中,依次查詢

select y.

*,g.

*from yuangong y,gongsi g;

這種查詢的方式叫非等值連線,結果為笛卡爾積

select y.

*,g.

*from yuangong y,gongsi g

where y.sid=g.

`id`

;

這種是最常見也是用的最多的等值連線,只有滿足查詢條件的記錄才會被查詢出來,不滿足條件的記錄都不會被查詢出來,

表與表之間用逗號連線

select yuangong.

*,gongsi.

*from yuangong inner

join gongsi

on yuangong.sid=gongsi.id;

內連線查詢,表與表之間使用inner join連線,inner可以省略

如果內連線不帶條件,則結果是笛卡爾積

on 後面寫連表查詢的條件

查詢出來的結果和等值連線一樣

on與後面的查詢語句如where的順序需注意

select y.

*,g.

*from yuangong y left

outer

join gongsi g

on y.

`sid`

=g.`id`

;

select yuangong.

*,gongsi.

*from yuangong right

outer

join gongsi

on yuangong.

`sid`

=gongsi.

`id`

;

上面為左外連線與右外連線,這其中的outer是可以忽略的,這兩種外連線的作用是左外連線可以將左表的所有資料都輸出出來,與右表無匹配的資料則用null填充,右外連線則相反

create

table us(

id int

notnull

auto_increment

primary

key,

pid int

, name varchar(20

));select us1.

*,us2.

*from us us1 inner

join us us2

on us1.

`pid`

=us2.

`id`

;

上面的程式為自連線,也就是自己與自己進行連線,總的來說就是通過取別名的方式實現同乙個表中不同資料的分類排序,筆者這裡使用的是內連線的連線方式,也可以使用等值連線,結果相同

今天的課程整體來說不算很多,但是難度是比較大的,特別是等值連線和內連線的運用需要反覆練習,自連線也需要仔細理解。

使用DQL查詢資料

回顧dml insert into student stuname,stupwd,gender,gradeid,address values 張三 123 男 1,北京西城 王五 123 女 2,北京西城 田七 123 男 3,北京宣武 dql data query language 資料查詢語言 ...

DQL查詢資料

查詢全部的學生 select from student 查詢指定字段 select studentno studentname from student 給結果起乙個名字 as select studentno as 學號,studentname as 學生姓名 from student as s ...

DQL查詢資料

select from student 查詢全部的學生 select studentno from student 查詢指定字段 select studenton as 學號 from student as a 別名as 給結果起乙個別名,也可以給表起別名 select concat 姓名 stud...