資料庫的多表查詢 mysql

2021-10-08 02:49:52 字數 3085 閱讀 3027

dml

sql語句的乙個分類,dml主要完成資料庫表中資料的維護,即:新增、刪除、修改

實體完整性

表中不能出現兩行完全一樣的資料

解決方案:給表中新增主鍵(id),讓該列的值唯一

域完整性

表中的值必須正確,在mysql8.0之後,可以使用check關鍵字實現

引用完整性

自定義完整性

需要根據業務的定義相應列的資料規則

函式分類:

多行函式:傳入的引數是多行,返回值也是多行

單行函式:傳入的引數是多行,返回值是單行的,即聚合函式

字串函式

concat(str1,str2,..

.,strn)

-- 拼接字串串

insert()

-- 插入字串

substring(str,

index

,n)-- 擷取指定字串

left

/right

(str,n)

-- 獲取字串最左/右邊的n個字元

ltrim/rtrim(str)

-- 去除最左/右邊的空格

日期函式
curdate(

)--返回當前日期

curtime(

)--返回當前時間

now(

)--返回當前日期時間

dayofyear(

date

)-- 返回date為這一年的第幾天

week(

date

)/weekofyear(

date

)-- 返回date為這一年的第幾周(包含與不包含)

date_format(

date

,format)

-- 返回字串format格式化後的日期

date_add/sub(

date

,interval expr unit)

--日期的相加/減

datediff(date1,date2)

--日期差

流程函式
--  如果條件為真,則返回t,否則返回f

if(condition,t,f)

-- 如果value1不為null,則返回value1,否則返回value2

ifnull(value1,value2)

-- 如果value1等於value2,null,否則返回value2

nullif

(value1,value2)

--如果value等於value1則返回result1 ....

case

value

when value1 then result1

when vaule2 then result2

.....

.else result

end-- 如果條件condition為真,則返回result1 ....

case

when condition then result1

when condition then result2

else result

end

子查詢

巢狀查詢:多個select語句巢狀,內層的子查詢作為外層的查詢條件

select

*from student where id in

(select sid from score)

連線查詢

內連線交叉連線 cross

也就是笛卡爾積

select

*from student cross

join score

自然連線 natural

也就是將相同的列拼接在一起

select

*from student natural

join score

指定字段連線 using

也就是將同名列的值相等進行對映

select

*from student join score using

(id)

指定條件連線 on

select

*from student join score on student.id = score.sid

外連線

左外連線

左表中的資料全部處理,右表滿足條件正常顯示

select

*from student left

join score on student.id = score.sid

右外連線

右表資料全部顯示,左表滿足的正確顯示,剩餘的用null填充

select

*from score right

join student on student.id = score.sid

union連線查詢

將多張表中的資料進行合併,且重複的資料只顯示一條

select name,age from student

union

allselect name,age from student1

其他查詢
/*

如果》any,則大於any後面最小的結果

如果-- any查詢

select sid,age from score where age >

any(

select age from score where age<=50)

-- all查詢

select sid,age from score where age <

all(

select age from score where age <=

50)

資料庫 MySQL多表查詢

某教學資料結構大概如下 表1 student 學生表 sid,name,age,gender表2 course 課程表 cid,name,teacher表3 score 成績表 sid,cid,score 成績 編寫sql語句查詢所有學習課程名為python的學生資訊,實現語句如下 select s...

MySQL資料庫多表查詢

多表查詢 多個有關係的表關聯查詢。user info表 create table user info id int 2 primary key,user name varchar 12 unique password varchar 15 not null real name varchar 8 n...

MySQL資料庫 多表連線查詢

多表連線查詢 注意 使用連線技術建議將表經行重新命名!explain 檢索連線是否達標 內連線 語法1 from 表1 inner join 表2 on 主鍵字段 外來鍵字段 where 條件表示式 語法2 from 表1,表2 where 主鍵字段 外來鍵字段 and 條件表示式 三個表連線 fr...