使用DQL查詢資料

2021-09-23 20:39:44 字數 4314 閱讀 1128

– 【回顧dml】

insert into student

(stuname,stupwd,gender,gradeid,address)

values(『張三』,『123』,『男』,1,『北京西城』),

(『王五』,『123』,『女』,2,『北京西城』),

(『田七』,『123』,『男』,3,『北京宣武』);

– dql(data query language) 資料查詢語言

– 它是sql中最核心的部分!可難可易!

– 【1.掌握mysql的標準查詢語句結構】

/*select [all|distinct]

from 要查詢的表名 [as 別名]

[left | right | inner join 連線表名 [as 別名]]

where 查詢條件;

*/– 1.1 select後 from前的這一塊內容 它是用來篩選查詢欄位的

– 簡單理解就是你想檢視哪些資訊 例如:我想檢視student表中的學生名、學生年齡、學生性別資訊

1.檢視學生表中的所有資訊

不推薦寫* 推薦寫全欄位名年列表

效率低select * from student;

2.檢視學生表中的學生姓名和性別

select stuname,gender from student;

– 1.2 別名(比較常用) 注意:此處使用中文只不過是方便你理解而已 後面不會採用寫中文別名

as關鍵字可以省略 ''也可以省略

select stu.stuname as 『姓名』,stu.gradeid + 1 年級 from student stu;

如果sql過長可以進行"美化"

目前個人推薦寫法

select

stuname as 『姓名』,

gradeid + 1 年級

from

student;

以前寫法

select

stuname as 『姓名』,gradeid + 1 年級

from student;

– 1.3 去重 (預設的)all所有的、全部 distinct直接的、明顯的 (去重)

select all stuname,gradeid from student;

distinct 用來在指定的查詢字段值範圍內 去除重複資料

select distinct stuname,gradeid from student;

select distinct stuname,gender,gradeid from student;

– 1.4 where查詢條件

在修改 和 刪除時用過 目的是為了防止修改/刪除全表。

用於檢索資料表中符合條件的記錄的

簡單理解:上方的操作是用來篩選列的 where是用來篩選行的

在where條件語句中 可以由乙個或者多個邏輯表示式組成 結果一般為真或假

《關係/比較運算子和邏輯運算子》

select * from student;

查詢年級是大於1的學生資訊

select * from student where gradeid > 1;

複雜條件的處理:邏輯運算子 與and 或or 非not

查詢姓名為張三 且 性別為女的學生資訊

select * from student where stuname = 『張三』 and gender = 『女』;

查詢性別是女的 或者 年級為3的

select * from student where gender = 『女』 or gradeid = 3;

查詢性別不是女的

select * from student where not gender = 『女』;

select * from student where gender <> 『女』;

select * from student where gender != 『女』;

特殊的比較運算子

is null is not null

查詢位址為空的學生姓名 查詢空千萬記住不能使用=

select stuname from student where address is null;

select stuname from student where address is not null;

between … and 在…之間/範圍內 它等價於》= and <=

查詢年級在2-3之間的學生姓名

select stuname from student where gradeid >= 2 and gradeid <= 3;

更加簡潔

select stuname from student where gradeid between 2 and 3;

in查詢 在…內/裡面

查詢年級為1或年級為3的學生資訊

select * from student where gradeid = 1 or gradeid = 3;

更加簡潔

select * from student where gradeid in (1,3);

select * from student where gradeid not in (1,3);

– 【2.掌握模糊查詢】like 像…一樣 喜歡

%表示任意單個/多個字元 _表示任意單個字元

查詢姓為張的學生資訊

select * from student where stuname like 『張%』;

查詢姓張的兩個字的學生資訊

select * from student where stuname like 『張_』;

查詢名稱中帶有三的學生資訊

select * from student where stuname like 『%三%』;

查詢三是姓名第二個字元的學生資訊

select * from student where stuname like 『_三%』;

– 【3.理解連線查詢原理及掌握連線查詢的使用】(多表連查)

– 連線查詢:內連線查詢、外連線查詢、[自連線查詢]

內連線:顯式內連線、隱式內連線

查詢學生的姓名和所在年級

select stuname,gradeid from student;

採用顯式內連線[推薦給多表起別名 區分清楚 防止出現模糊不清錯誤]

內連線可以理解為交集

select

stu.stuname,g.gradename

from

student stu

inner join grade g

on stu.gradeid = g.gradeid; # 關聯條件

採用隱式內連線查詢 笛卡爾積

select

stu.stuname,g.gradename

from

student stu,grade g

select

stu.stuname,g.gradename

from

student stu,grade g

where

stu.gradeid = g.gradeid;

查詢所有的學生姓名、課程名稱、考試成績

select

stu.stuname,sub.subjectname,r.result

from

student stu,subjectsub,result r

where

stu.stuid = r.stuid

andsub.subjectid = r.subjectid;

外連線:左外連線、右外連線

查詢學生的姓名和所在年級

採用左外連線 以左表為主 left join前面的就是左表

select

stu.stuname,g.gradename

from

student stu left outer join grade g

on stu.gradeid = g.gradeid;

採用右外連線

select

stu.stuname,g.gradename

from

student stu right join grade g

on stu.gradeid = g.gradeid;

– 自連線(內連線)

查詢遊戲名稱和所屬分類

select

c1.categoryname,c2.categoryname

from

category c1,category c2

where

c1.pid = c2.id

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...

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

create table yuangong id int notnull primary keyauto increment name varchar 20 varchar 20 sid int foreign key sid references gongsi id 首先建立乙個從表,是它與主表相...