Mysql中的子查詢等操作


1.delete和truncate 區別?
1.1 delete慢 ,Truncate快

1.20delete記錄日志,所以慢 truncate不記錄日志

1.31 刪除所有記錄后,主鍵值delete 不是從1編號,Truncate會從1開始編號

1.43 truncate不能刪除有外鍵的主表

1.5 delete 可以 加where ,刪除部分記錄

2.兩種引擎
InnoDB:支持事務
MyISAM:

3.添加 insert into grade(字段名稱) values(對應)
修改 update 表名 set 列名=‘新值’ where 主鍵=xxxx
刪除 delete from 表名 where 主鍵=yyy

4. 5種約束
檢查約束
主鍵約束
外鍵約束
非空約束
默認值約束
唯一約束

1.兩種一次性向表中進N條記錄的方案
方案一:
要求:目標表不存在
create table 新表(select * from student)

方案二:
要求:目標表必須存在
insert into 新表的名稱 select * from 原始表
2.簡單查詢 關於*會引起全表掃描問題

3.查找姓名是“微冷的雨”的信息
SELECT * FROM student
WHERE studentName='微冷的雨'

4.注意事項
--01.SQL關鍵字不區分大小寫

--02.字符串和日期類型都需要[[[[[[單引號]]]]

--03.起表名的時候,千萬不要起得太好,例如不要使用User作為表名。
-- 如果表名和關鍵字重復了,我們可以通過``取消轉義。
select * from `User`

--04.千萬注意新建查詢窗口中的中文空格。
select * from Message
5.別名
別名方案 AS
6.常量列
SELECT *,'漢族'AS 民族 FROM student
7.關於null講解
必須懂

8.聚合函數
count:統計一張表中總共有多少條數據
select SUM(StudentResult) as 總分 from Result
select AVG(studentresult) as 平均分 from Result
select MAX(studentresult) as 最高分 from Result
select min(studentresult) as 最高分 from Result
9。常用函數
9.1字符串函數
9.2日期時間函數
9.3數學函數
10.Order
11.排序 limit

 

代碼

##檢索所有郵箱為NULL的學生
SELECT * FROM student WHERE email
##如果說有一條記錄真實值 'xxx' 你如何鎖定
###統計成績表中有幾條記錄?
SELECT SUM(studentresult) FROM result
##字符串函數
SELECT UPPER('ABCd明天是周五 ,注意提交演講稿')
###截取
SELECT SUBSTRING('T14正在講解MySQL,結束后有一個考試',8,5)
###字符串拼接
SELECT CONCAT('str1','str2','str3')
###替換函數
SELECT INSERT('這是MySQL數據庫',3,5,'Oracle')
###在mYSQL獲取默認的時間
SELECT NOW()
####只獲取系統的日期,不獲取時間
SELECT CURDATE()
#####只獲取系統時間
SELECT CURTIME()
###獲取當前日期是該年中的第幾周?
SELECT WEEK(NOW())
###查看強哥已經活了多少天
SELECT DATEDIFF(NOW(),'1992-06-01')
###SQL標准 SQL 99
SELECT ADDDATE(NOW(),-3)

####數學函數 ceil() 天花板 向上取整 floor() 向下取整 rand()隨機數

SELECT CEIL(2.0001)


####Order by 排序的依據字段
SELECT * FROM student ORDER BY sex,borndate DESC

###分頁 limit 參數一(該頁數據從第幾條開始,下標從0開始),參數2(頁大小/每頁顯示記錄數)
SELECT * FROM student LIMIT 2,2
###練習
###1.查詢2016年2月17日考試前5名的學員的學號和分數
SELECT studentno,studentresult
FROM result
WHERE examdate>='2017-07-13' AND examdate<'2017-07-14'
ORDER BY studentresult DESC LIMIT 5
SELECT * FROM result
###2.將所有女學生按年齡從大到小排序,從第2條記錄開始顯示6名女學生的姓名、年齡、出生日期、手機號信息
SELECT studentname,CEIL(DATEDIFF(NOW(),borndate)/365) AS 年齡,borndate,phone
FROM student
WHERE sex='男'
ORDER BY 年齡 DESC
LIMIT 1,6

###3.查詢參加2016年2月17日考試的所有學員的最高分、最低分、平均分
SELECT MAX(studentresult) AS 最高分,MIN(studentresult) AS 最低分,AVG(studentresult) AS 平均分
FROM result
WHERE examdate>='2017-7-13' AND examdate<'2017-7-14'

SELECT * FROM result

###子查詢 必須知道什么是子查詢 select * from (子查詢)
###年齡比彪哥小的學生信息
SELECT * FROM student WHERE bornDate<(SELECT borndate FROM student WHERE studentname='彪哥')

##查詢參加 最近一次 Logic Java 考試成績的學生的最高分和最低分
SELECT MAX(studentresult) AS 最高分,MIN(studentresult) AS 最低分
FROM result
WHERE examdate=(SELECT MAX(examdate) FROM result WHERE subjectid=(SELECT subjectid FROM SUBJECT WHERE subjectname='語文'))
AND subjectid=(SELECT subjectid FROM SUBJECT WHERE subjectname='語文')

###查詢 JavaLogic 考試成績為 60分的學生姓名
SELECT studentname FROM student
WHERE studentno IN
(
SELECT studentno FROM result
WHERE studentresult=77
AND subjectid=
(
SELECT subjectid FROM SUBJECT
WHERE subjectname='語文'
)
)
SELECT * FROM result
####查詢 最近一次 未參加 語文 考試的 學生名單(studentname)
SELECT studentname FROM student
WHERE studentno NOT IN
(
SELECT studentno FROM result
WHERE subjectid=
(
SELECT subjectid FROM SUBJECT
WHERE subjectname='語文'
) AND examdate=
(
SELECT MAX(examdate) FROM result
WHERE subjectid=
(
SELECT subjectid FROM SUBJECT
WHERE subjectname='語文'
)
)
)
AND gradeid=
(
SELECT gradeid FROM SUBJECT
WHERE subjectname='語文'
)


##檢查“Logic Java”課程最近一次考試成績
##如果有 80分以上的成績,顯示分數排在前5名的學員學號和分數
SELECT studentno,studentresult FROM result
WHERE EXISTS
(
SELECT * FROM result
WHERE subjectid=
(
SELECT subjectid FROM SUBJECT
WHERE subjectname='語文'
)
AND examdate=
(
SELECT MAX(examdate) FROM result
WHERE subjectid=
(
SELECT subjectid FROM SUBJECT
WHERE subjectname='語文'
)
)
AND studentresult>80

)
AND subjectid=
(
SELECT subjectid FROM SUBJECT
WHERE subjectname='語文'
)
AND examdate=
(
SELECT MAX(examdate) FROM result
WHERE subjectid=
(
SELECT subjectid FROM SUBJECT
WHERE subjectname='語文'
)
)
AND studentresult>60
ORDER BY studentresult DESC
LIMIT 5

 

SELECT * FROM student
WHERE EXISTS
(
SELECT * FROM result WHERE studentresult>100
)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM