日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql20170410练习代码+笔记

發布時間:2025/3/17 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql20170410练习代码+笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天的幾道高級sql查詢真的挺難的,感覺好像視頻里講過,當時也沒有練,已經淡化了很多,sql還是要多練習啊!確實邏輯性挺強的。

?

?

SELECT studentResult,studentNO FROM result WHERE result.`subjectNo`=(SELECT subjectNo FROM `subject`)SELECT studentResult FROM result WHERE result.subjectNo = (SELECT subjectNo FROM SUBJECT WHERE subjectName='java') WHERE NOT EXISTS(SELECT studentResult FROM result<60) AND (SELECT (AVG(studentResult)+5) FROM result)SELECT studentResult FROM result WHERE result.subjectNo = (SELECT subjectNo FROM SUBJECT WHERE subjectName='java')>=60SELECT subjectNo FROM `subject` WHERE subjectName = 's1'SELECT subjectNo FROM `subject` WHERE subjectName = 's2'WHERE EXISTS(SELECT subjectNo FROM `subject` WHERE subjectName = 's1' ) AND SELECT studentNo 學號,subjectNo 科目編號,studentResult 學員成績,examDate 考試時間 FROM result WHERE subjectNO =(SELECT subjectNo FROM `subject` WHERE subjectName = 's2' )SELECT studentNo 學號, studentResult 分數 FROM result WHERE EXISTS () AND subjectNo=SELECT studentName 學生姓名, gradeIdCREATE TABLE IF NOT EXISTS grade(GradeID INT(11) NOT NULL,GradeName VARCHAR(50) DEFAULT NULL,PRIMARY KEY ('GradeID') ) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='年級表'CREATE TABLECREATE TABLE `grade` (`GradeID` INT(11) NOT NULL,`GradeName` VARCHAR(50) DEFAULT NULL,PRIMARY KEY (`GradeID`) ) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='年級表'INSERT INTO grade VALUES ('1','一年級'),('2','二年級'),('3','三年級'),('4','四年級')SELECT studentName 學生姓名 FROM student SELECT GradeName 年級名稱 FROM grade WHERE GradeId IN (SELECT gradeId FROM student) SELECT subjectName 課程名稱 FROM `subject` WHERE gradeID IN (SELECT gradeId FROM student) SELECT examDate 考試日期 FROM result SELECT studentResult 考試成績 FROM result WHERE examDate= (SELECT MAX(examDate) FROM result)SELECT gradeId 年級編號,sex 性別,COUNT(sex) 個數 FROM student GROUP BY 年級編號,sexCREATE DATABASE IF NOT EXISTS t11 USE t11 CREATE TABLE IF NOT EXISTS sys_user ( uid INT(20) PRIMARY KEY AUTO_INCREMENT COMMENT '客戶編號', uName VARCHAR(50) NOT NULL COMMENT '客戶姓名', uPassWord VARCHAR(50) COMMENT '客戶密碼' )COMMENT='客戶信息表'CREATE TABLE IF NOT EXISTS hos_district( did INT(20) PRIMARY KEY AUTO_INCREMENT COMMENT '區縣編號', dName VARCHAR(50) NOT NULL COMMENT '區縣名稱' )COMMENT='區縣信息表'CREATE TABLE IF NOT EXISTS hos_street( sid INT(20) PRIMARY KEY AUTO_INCREMENT COMMENT '街道編號', sName VARCHAR(50) NOT NULL COMMENT '街道名稱', sDid INT(20) NOT NULL COMMENT '區縣編號',FOREIGN KEY(sDid) REFERENCES hos_district(did) )COMMENT='街道信息表'CREATE TABLE IF NOT EXISTS hos_type( hTid INT(20) PRIMARY KEY AUTO_INCREMENT COMMENT '房屋類型編號', htName VARCHAR(50) NOT NULL COMMENT '房屋類型名稱' )COMMENT='房屋類型表'CREATE TABLE IF NOT EXISTS hos_house( hMid INT(20) PRIMARY KEY AUTO_INCREMENT COMMENT '出租房屋編號', uid INT(20) NOT NULL COMMENT '客戶編號', sid INT(20) NOT NULL COMMENT '街道編號', hTid INT(20) NOT NULL COMMENT '房屋類型編號', price DECIMAL(5,2) DEFAULT 0 NOT NULL COMMENT '每月租金', topic VARCHAR(50) NOT NULL COMMENT '標題', contents VARCHAR(50) NOT NULL COMMENT '描述', FOREIGN KEY(uid) REFERENCES sys_user(uid), FOREIGN KEY(sid) REFERENCES hos_street(sid), FOREIGN KEY(hTid) REFERENCES hos_type(hTid))COMMENT='出租房屋信息表'INSERT INTO hos_district VALUES ('2','萬泉莊'),('3','中關村'),('4','東單'),('5','西單'),('6','蘇州街'),('7','西四')UPDATE hos_district SET dName='東城區' WHERE did =1 UPDATE hos_district SET dName='海淀區' WHERE did =2 UPDATE hos_district SET dName='西城區' WHERE did=3 UPDATE hos_district SET dName='朝陽區' WHERE did=4DELETE FROM hos_district WHERE did=5 DELETE FROM hos_district WHERE did=6 DELETE FROM hos_district WHERE did=7INSERT INTO hos_street VALUES('1','東四','1'),('2','萬泉莊','2'),('3','中關村','2'),('4','東單','1'),('5','西單','3'),('6','蘇州街','2'),('7','西四','3')INSERT INTO hos_type VALUES('1','一室一廳'),('2','一室一衛'),('3','兩室一廳'),('4','兩室一衛')INSERT INTO sys_user VALUES('1','張建','1234'),('2','張冬雪','1234'),('3','張三','1234'),('4','王鑫','1234'),('5','李劍','1234'),('6','蔣以然','1234'),('7','李四','1234')INSERT INTO hos_house VALUES('1','1','3','2','2600.00','中關村','中關村一條街'),('2','2','2','2','1500.00','萬泉莊附近','萬泉莊附近一條街'),('3','2','2','2','2700.00','東單','東單很多美食')ALTER TABLE hos_house SET price-- 1 查詢張三發布的所有出租房屋信息,并顯示房屋分布的街道和區縣 -- 提示:結果數據來源于出租房屋信息表、客戶信息表、區縣信息表、街道信息表 -- 提示:使用連接查詢和子查詢兩種方式關聯奪標數據實現SELECT dName 區縣, sName 街道, htName 戶型, price 價格, topic 標題, contents 描述-- 2 根據戶型和房屋所在區縣和街道,為至少有兩個街道有出租房屋的區縣 -- 制作出房屋清單 -- 提示:顯示用Having子句篩選出街道數量大于1的區縣-- 3 按季度統計出本年各區縣街道各種戶型房屋出租數量 -- 輸出2016年從1月1日起至今的全部出租房屋數量、 -- 各區縣出租房屋數量及各街道、戶型出租房屋數量 練習代碼 mysql練習代碼

?

?

第1次課 -- 01.啟動mysql服務 使用管理員身份啟動cmd net start mysql -- 02.關閉服務 net stop mysql -- 03.連接mysql數據庫 如果是本機 可以省略 -h ip地址 -p和密碼不能有空格 mysql -h ip地址 -u用戶名 -p密碼 -- 04.退出數據庫 exit-- 05.查詢當前所有的數據庫 show databases; 系統默認的四個數據庫 information_schema:存放的是一些數據庫對象信息,包含:用戶表信息,字段信息,字符集信息等! performance_schema:存放的是數據庫的性能參數信息! mysql:存放的系統用戶權限信息! test:數據庫管理系統默認創建的測試數據庫!任何用戶都可以使用!-- 06.sql(結構化查詢語言)01.DDL(數據定義語言) create drop alter02.DQL(數據查詢語言) select03.DML(數據操作) insert delete update04.DCL(數據控制語言) commit rollback grant revoke-- 07.邏輯運算符and or not-- 08.創建數據庫 CREATE DATABASE t12; SHOW DATABASES; -- 09.切換數據庫 USE t12; -- 10.刪除數據庫 DROP DATABASE t12;-- 11.創建表 反引號` 是用來區分mysql中的關鍵字 -- ZEROFILL:不足位數使用0代替!超過位數,實際顯示! CREATE TABLE `test_01`( tid INT(4) ZEROFILL );-- 新增數據 INSERT INTO test_01(tid) VALUES(20); INSERT INTO test_01 VALUES(2000); INSERT INTO test_01 VALUES(20000);-- 12.默認int是有符號的 可以取負數 CREATE TABLE `test_02`( tid INT(4) );-- 同時插入多條記錄 負數可以插入 INSERT INTO test_02 VALUES(20),(1234),(-123456)-- UNSIGNED 無符號的 只能是整數 包含0 CREATE TABLE `test_03`( tid INT(4) UNSIGNED );-- 同時插入多條記錄 負數不可以插入 INSERT INTO test_03 VALUES(20),(1234),(-123456)-- 刪除測試的三個表 DROP TABLE test_01; -- 13. 字符串類型 -- 01.char 固定長度的字符串 CREATE TABLE test_01( NAME CHAR(20) ); INSERT INTO test_01 VALUES('哈哈') -- 最后一個 啊 會被自動截斷! 因為字符串超出了規定長度 INSERT INTO test_01 VALUES('哈哈啊')-- 02.varchar 可變長度的字符串 CREATE TABLE test_02( NAME VARCHAR(2) ); -- 最后一個 啊 會被自動截斷! 因為字符串超出了規定長度 INSERT INTO test_02 VALUES('哈哈啊')-- 看不出區別 -- char(20)默認就已經開辟了20個空間 -- varchar(20)開辟了實際使用的空間-- 14.日期格式 -- DATE : YYYY-MM-DD -- DATETIME: YYYY-MM-DD HH:MM:SS -- TIMESTAMP: YYYY-MM-DD HH:MM:SS 1970年1月1日開始的 !首選! -- TIME : HH:MM:SS -- YEAR : YYYY-- 15.創建表 -- creat table [if not exists] 表名( -- 字段1 數據類型 [字段屬性][約束][索引][注釋], -- 字段2 數據類型 [字段屬性][約束][索引][注釋] -- )[表類型][表字符集][注釋];-- 16.字段的約束和屬性 -- 01.非空約束 not null 字段不允許為空 -- 02.默認約束 default 字段的默認值 -- 03.唯一約束 unique key(字段名稱) uk -- 設置字段是唯一的不允許重復,可以為空,但是只能有一個空值 -- 04.主鍵約束 primary key(字段名稱) pk -- 設置表中的主鍵,唯一標識該行! -- 05.外鍵約束 foreign key(字段名稱) fk -- 建立在從表中,用于關聯兩個表之間的關系 -- 需要指定引用了主表中的哪個字段 -- 06.自動增長 auto_increment -- 設置字段自動增長,默認從1開始!通常設置在主鍵上! -- 07.注釋 COMMENT 給字段增加解釋 CREATE TABLE IF NOT EXISTS student(sid INT(4) ZEROFILL PRIMARY KEY AUTO_INCREMENT COMMENT '學生編號',sname VARCHAR(20) NOT NULL COMMENT '學生姓名',sage INT(3) NOT NULL DEFAULT 20 COMMENT '學生年齡' );-- 新增數據 INSERT INTO student(sname,sage) VALUES('小黑',DEFAULT); INSERT INTO student(sid,sname,sage) VALUES(2,'小黑2',DEFAULT); -- 如果指定了主鍵的值,就是指定的! 下次的自增沖動指定的值開始! INSERT INTO student(sid,sname,sage) VALUES(789,'小黑3',DEFAULT);-- 查詢剛剛插入數據的主鍵 INSERT INTO student(sname,sage) VALUES('小黑4',DEFAULT); SELECT @@identity;第2次課 -- 切換到指定的數據庫 USE t12 -- 創建Student表 CREATE TABLE IF NOT EXISTS student( studentNo INT(4) PRIMARY KEY COMMENT '學號', loginPwd VARCHAR(20) NOT NULL COMMENT '密碼', studentName VARCHAR(50) NOT NULL COMMENT '姓名', sex CHAR(2) NOT NULL DEFAULT '' COMMENT '性別', gradeID INT(4) UNSIGNED COMMENT '年級編號', phone VARCHAR(50) COMMENT '手機號碼', address VARCHAR(255) DEFAULT '地址不詳' COMMENT '地址', bornDate DATETIME COMMENT '出生日期', email VARCHAR(50) COMMENT '郵箱', identityCard VARCHAR(18) UNIQUE KEY COMMENT '身份證號' )COMMENT='學生表';兩種方式備份和導入數據 01.使用dbms 02.cmd命令行工具 前提 必須配置了mysql環境變量備份: mysqldump -u用戶名 -p 數據庫名稱 >路徑備份指定的表:mysqldump -u用戶名 -p 數據庫名稱 表名1 表名2 >路徑恢復: mysql -u用戶名 -p 數據庫名稱< 路徑 --必須存在數據庫-- 創建年級表 CREATE TABLE IF NOT EXISTS grade( gradeId INT(4) PRIMARY KEY COMMENT '年級編號', gradeName VARCHAR(20) NOT NULL COMMENT '年級名稱' )ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='年級表'; -- 查詢本數據庫中下所有的表 SHOW TABLES;-- 查看表的結構 DESC student;-- 刪除表 DROP TABLE IF EXISTS 表名-- 修改表名 alter table 舊表名 rename [to] 新表名 ALTER TABLE student RENAME [TO] stu; -- 添加字段 -- alter table 表名 add 字段名稱 屬性 ALTER TABLE student ADD age INT(3) NOT NULL COMMENT '年齡'; -- 修改字段 alter table 表名 change 舊字段 新字段 屬性 ALTER TABLE student CHANGE age ages INT(4) NOT NULL; -- 刪除字段 alter table 表名 drop 字段名稱 ALTER TABLE student DROP ages;-- mysql系統幫助文檔 help 查詢內容(命令); -- 添加主鍵 ALTER TABLE 表名 ADD CONSTRAINT pk_studentNo主鍵名稱 PRIMARY KEY 表名(主鍵字段)-- 創建外鍵約束 必須在從表中創建 ALTER TABLE 從表名稱 ADD CONSTRAINT fk_student_grade外鍵約束名稱 FOREIGN KEY(從表的外鍵字段) REFERENCES 主表名稱(主鍵)-- 給student表中增加外鍵并且設置 刪除是為 cascade -- 新增grade表中3條信息 INSERT INTO grade VALUES(1,'1年級'),(2,'2年級'),(3,'3年級'); -- 查詢表中所有的記錄 SELECT * FROM grade; -- 刪除年級編號為1的記錄 的時候,對應的所有學生 也被刪除了 DELETE FROM grade WHERE gradeid=1; 并且設置 刪除是為 set null!-- 查詢所有的存儲引擎 SHOW ENGINES -- 查看當前默認的存儲引擎 SHOW VARIABLES LIKE 'storage_engine%'; -- 修改存儲引擎 -- 修改my.ini配置文件 default- storage-engine=InnoDB -- 重啟服務--修改指定表中的存儲引擎 alter table 表名 engine=引擎-- MyISAM類型的標文件 01.*.frm 表結構的定義文件 02.*.MYD 數據文件 03.*.MYI 索引文件 -- InnoDB類型的標文件 01.*.frm 表結構的定義文件 02.*.ibd 數據文件 -- datadir地址下會有一個ibdata1:存儲了所有InnoDB類型表中的數據!-- 查詢student表中所有的數據 SELECT * FROM student;-- update 表名 set 字段1=值1,字段2=值2 [where 條件]-- 修改所有學生的密碼 為 admin UPDATE student SET loginPwd='admin' -- 修改學生編號為2的密碼 為 admins UPDATE student SET loginPwd='admins' WHERE studentNo=2-- 刪除數據 delete from 表名 [where 條件] DELETE FROM student;-- 刪除學生編號為2的數據 DELETE FROM student WHERE studentNo=2;-- truncate table 表名!-- delete 和truncate的區別 01.delete可以加條件 02.truncate只能刪除表中所有的數據 03.delete刪除之后可以恢復數據 04.truncate不能恢復數據!慎用! 05.truncate指定速度比delete快! 06.truncate語句刪除后將重置自增列!其他結構不變!-- 創建學生課程表 subject CREATE TABLE IF NOT EXISTS `subject`(subjectNo INT(4) PRIMARY KEY AUTO_INCREMENT COMMENT '課程編號',subjectName VARCHAR(50) NOT NULL COMMENT '課程名稱',classHour INT(4) COMMENT '學時',gradeId INT(4) COMMENT '年級編號' )COMMENT='課程表';-- 查詢student表中所有的數據 SELECT studentName,address FROM student;-- 按照課時的大小 進行降序排列 -- asc:默認值!升序 desc:降序 SELECT * FROM `subject` ORDER BY classHour DESC -- 查詢年級編號為1的課程,并且按照課時升序排列 SELECT * FROM `subject` WHERE gradeId=1 ORDER BY classHour ASC -- 查詢年級編號為1的課程,并且按照課時升序排列的同時 -- 按照課程編號在降序排列 SELECT * FROM `subject` WHERE gradeId=1 ORDER BY classHour ASC,subjectNo DESC-- 使用別名 as -- select 字段[as] 別名 from 表名 -- 查詢課程名稱 和 課時 SELECT subjectName AS '課程名稱',classHour AS '課時' FROM `subject`-- 合并列01. +的數據類型 必須一致02. +的如果是字符類型,拼接字符串03. +的是數值類型,就是求和! SELECT * FROM student -- 學生姓名和地址 進行合并 SELECT (studentNo+','+gradeId ) AS '整合體' FROM student-- 查詢電話號碼為空的行 is null SELECT * FROM student WHERE phone IS NULL -- 查詢電話號碼不為空的行 is not null SELECT * FROM student WHERE phone IS NOT NULL第3次課 -- 聚合函數 -- 查詢表中一共有多少條記錄 SELECT COUNT(*) FROM student -- 查看表中指定字段不為空的記錄 SELECT COUNT(phone) FROM student -- 查詢年齡最大的數據 SELECT MAX(age) FROM student -- 查詢年齡最小的數據 SELECT MIN(age) FROM student -- 求所有年齡的平均值 SELECT AVG(age) FROM student -- 求所有年齡之和 SELECT SUM(age) FROM student-- 字符串函數 -- 字符串的連接 SELECT CONCAT('My','S','ql'); -- 字符串替換 下標從1開始 SELECT INSERT('大家辛苦了!',1,3,'哈哈'); -- 字符串的截取 下標從1開始 SELECT SUBSTRING('大家辛苦了!',1,3); -- 字符串變大 小 寫 SELECT LOWER('AAA'); SELECT UPPER('aaa');-- 常用的時間和日期函數 -- 01.獲取當前的日期 SELECT CURDATE(); -- 02.獲取當前的時間 SELECT CURTIME(); -- 03.獲取當前的日期和時間 SELECT NOW(); -- 04.返回日期是一年中的第幾周 SELECT WEEK(NOW()); -- 05.只獲取年 SELECT YEAR(NOW()); -- 06.只獲取小時 SELECT HOUR(NOW()); -- 07.獲取兩個日期差 SELECT DATEDIFF(NOW(),'2017-03-07'); -- 08.返回現在的時間加上某個時間之后的日期 SELECT ADDDATE(NOW(),24);-- 數學函數 SELECT CEIL(3.1); -- 天花板函數 SELECT FLOOR(3.9); SELECT RAND(); -- 0-1之間的隨機數-- 把所有的成績降低10%后加5分,再查詢及格成績 -- 并且按照成績 降序排列 SELECT studentNo AS '學號',(studentResult*0.9+5) AS '成績' FROM result WHERE (studentResult*0.9+5)>=60 ORDER BY '成績' DESC-- 查詢所有年級編號為1 的學生信息,并且按照 學號升序排列 -- 01. 顯示前4條記錄 SELECT * FROM student WHERE gradeid=1 ORDER BY studentno LIMIT 4 -- 02. 每頁顯示4條 顯示第2頁的內容 SELECT * FROM student WHERE gradeid=1 ORDER BY studentno LIMIT 4,4 -- 需要注意的是:第一條記錄的是 0! -- limit a,b -- a:從那一條記錄開始 -- b:每頁顯示多少條數據-- 將學生表中學號為20000的學生郵箱改成stu@20000.163.com -- 密碼改成000 UPDATE student SET email='stu@20000.163.com',loginpwd='000' WHERE studentNo=20000-- 將科目表中課時數大于200的并且年級編號是1的課時減少10! UPDATE `subject` SET classHour=classHour-10 WHERE classHour>=200 AND gradeid=1-- 將所有年級編號是1的學生姓名,性別,出生日期,手機號碼 -- 都保存到一個新的表中 student_new CREATE TABLE IF NOT EXISTS student_new( SELECT studentName,sex,bornDate,phone FROM student WHERE gradeid=1 )-- 01.查詢2016年2月17日考試 前5名的學員的學號和分數 SELECT studentNo 學號,studentResult 分數 FROM result WHERE examDate='2016-02-17' ORDER BY 分數 DESC LIMIT 5-- 02. 將所有女學生按年齡從大到小排序 -- 從第2條記錄開始顯示6名女學生的姓名、年齡、出生日期、手機號信息 SELECT studentName 姓名,(YEAR(NOW())-YEAR(bornDate)) 年齡, bornDate 出生日期,phone 手機號碼 FROM student WHERE sex='' ORDER BY 年齡 DESC LIMIT 1,6-- 03.按出生年份分組統計學生人數 -- 將各組中人數達到2人的年份和人數顯示出來SELECT YEAR(bornDate) 出生年份, COUNT(studentNo) 人數 FROM student GROUP BY 出生年份 HAVING 人數>=2 -- 04.查詢參加2016年2月17日考試的所有學員的最高分、最低分、平均分。 SELECT MAX(studentResult) 最高分,MIN(studentResult) 最低分, AVG(studentResult) 平均分 FROM result WHERE examDate='2016-02-17'5. select 字段1,字段2....1. from 表名2. where 條件1 and 條件23. group by 分組依據4. having 分組條件6. order by 排序字段7. limit 分頁-- 查詢grade和student所有的數據 SELECT * FROM student,grade 13+4 13*4 -- 笛卡爾積 -- 怎么解決這個問題? 找出兩個表中關聯的字段 SELECT * FROM student,grade WHERE student.`gradeId`=grade.`gradeId`-- 查詢出 年齡比 李斯文 小的學生信息 -- 01.先查詢李斯文的年齡 1993-07-23 SELECT bornDate FROM student WHERE studentName='李斯文' -- 02.把查詢出來的結果當成條件繼續查詢 SELECT bornDate FROM student WHERE bornDate>'1993-07-23' -- 疑問? 能不能把兩個sql合并在一起執行 -- 我們就把 '1993-07-23'當成一個java中的變量名 -- 指向了01的sql STRING a="521"; Stirng b=a+"125"; syso(b) syso(a+"125")-- 使用子查詢來實現 -- 子查詢就是一個嵌套在select,insert,update或者delete語句或者 -- 其他查詢語句中的查詢語句! -- 語法: select ... from 表 where 字段 比較運算符(子查詢) SELECT bornDate FROM student WHERE bornDate>(SELECT bornDate FROM student WHERE studentName='李斯文') -- 子查詢和比較運算符聯合使用的使用,必須保證子查詢返回的值是不能多于一個!-- 查詢出 最近一次java課程 考試成績的最高分和最低分 -- 01.時間是最大的 最高分和最低分 result -- 02.java課程 subject -- 分析 分解書寫 -- 01.先獲取課程java的編號 SELECT subjectNo 學號 FROM `subject` WHERE subjectName='java'-- 02.最近java課程 的考試日期 SELECT MAX(examDate) 考試日期,MAX(studentResult) 最高分, MIN(studentResult) 最低分 FROM result WHERE subjectNo=1-- 03.最近的日期 SELECT MAX(examDate) FROM result-- 使用子查詢 SELECT MAX(examDate) 考試日期,MAX(studentResult) 最高分, MIN(studentResult) 最低分 FROM result WHERE subjectNo=(SELECT subjectNo 學號 FROM `subject` WHERE subjectName='java') AND examDate=(SELECT MAX(examDate) FROM result) -- 日期是最近的!-- 查詢java課程考試成績為60的學生姓名 -- 01.先找java的課程編號 SELECT subjectNo 學號 FROM `subject` WHERE subjectName='java'-- 02.找java的成績是60的 SELECT studentResult 成績 FROM result WHERE studentResult=60 AND subjectNo=(SELECT subjectNo 學號 FROM `subject` WHERE subjectName='java')-- 03.找學生編號 student 怎么和 result表關聯的??? SELECT studentNo 編號 FROM result WHERE studentResult=60 AND subjectNo=(SELECT subjectNo 學號 FROM `subject` WHERE subjectName='java')-- 使用IN替換=之后的子查詢 -- IN后面的子查詢語句可以返回多條結果 SELECT studentName 姓名 FROM student WHERE studentNo IN (SELECT studentNo 編號 FROM result WHERE studentResult=95 AND subjectNo=(SELECT subjectNo 學號 FROM `subject` WHERE subjectName='java'))-- 查詢學生姓名是張秋麗的信息 SELECT * FROM student WHERE studentName='張秋麗' -- 查詢學生姓名是張秋麗 或者 肖梅 的信息 SELECT * FROM student WHERE studentName='張秋麗' OR studentName='肖梅'-- 查詢學生姓名是張秋麗 或者 肖梅 再 或者是 王寶寶 的信息 SELECT * FROM student WHERE studentName='張秋麗'OR studentName='肖梅' OR studentName='王寶寶'-- 使用IN替換 多個條件 SELECT * FROM student WHERE studentName IN ('張秋麗','肖梅','王寶寶')-- 使用NOT IN -- 查詢出 沒有參加最近一次java課程考試的學生姓名以及編號 SELECT studentName 姓名,studentNo 編號 FROM student WHERE studentNo NOT IN ( SELECT studentNo FROM result WHERE subjectNo=(SELECT subjectNo FROM `subject` WHERE subjectName='java') AND examDate=(SELECT MAX(examDate) FROM result) )第4次課 -- EXISTS : select ... from 表名 where exists(子查詢) -- 子查詢有返回結果 exists(子查詢)返回true 外層查詢執行 -- 子查詢沒有返回結果 exists(子查詢)返回false 外層查詢不執行-- 檢查Java課程最近一次考試。 -- 如果有成績達到80分以上者,則顯示分數排在前5名學員的學號和分數-- 01.查詢java課程的編號 SELECT subjectNo FROM `subject` WHERE subjectName='java' -- 02.上面的當成一個條件 繼續查詢 result SELECT * FROM result WHERE subjectNo=(SELECT subjectNo FROM `subject` WHERE subjectName='java') -- 拿到了java所有的考試信息 -- 03. 再次拿到最近考試的時間 SELECT MAX(examDate) FROM result -- 04.再把03當成條件 拼接查詢02 SELECT * FROM result WHERE subjectNo=(SELECT subjectNo FROM `subject` WHERE subjectName='java') AND examDate=(SELECT MAX(examDate) FROM result) -- 05.如果成績有大于80的 查詢出前5名 SELECT * FROM result WHERE studentResult>80 AND subjectNo=(SELECT subjectNo FROM `subject` WHERE subjectName='java') AND examDate=(SELECT MAX(examDate) FROM result)-- 06.整體放在exists中 并增加條件 SELECT studentNo 學號,studentResult 分數 FROM result WHERE EXISTS ( SELECT * FROM result WHERE studentResult>80 AND subjectNo=(SELECT subjectNo FROM `subject` WHERE subjectName='java') AND examDate=(SELECT MAX(examDate) FROM result) ) AND subjectNo=(SELECT subjectNo FROM `subject` WHERE subjectName='java') ORDER BY studentResult DESC LIMIT 5;-- 檢查java課程最近一次考試成績 -- 如果全部未通過考試(60分及格),認為本次考試偏難,計算的該次考試平均分加5分 -- not exists-- 01.查詢java課程的編號 SELECT subjectNo FROM `subject` WHERE subjectName='java' -- 02.查詢考試成績 01的結果是1 SELECT studentResult FROM result WHERE subjectNo=1 -- 03. 合并 12 SELECT studentResult FROM result WHERE subjectNo=(SELECT subjectNo FROM `subject` WHERE subjectName='java') -- 04.獲取最近一次考試的時間 SELECT MAX(examDate) FROM result -- 05. 合并 34 SELECT studentResult FROM result WHERE subjectNo=(SELECT subjectNo FROM `subject` WHERE subjectName='java') AND examDate=(SELECT MAX(examDate) FROM result) -- 06. 獲取成績小于60的 SELECT studentResult FROM result WHERE subjectNo=(SELECT subjectNo FROM `subject` WHERE subjectName='java') AND examDate=(SELECT MAX(examDate) FROM result) AND studentResult>60 -- 07.如果都沒及格 06沒有結果集 SELECT AVG(studentResult)+5 平均分 FROM result WHERE NOT EXISTS ( SELECT studentResult FROM result WHERE subjectNo=(SELECT subjectNo FROM `subject` WHERE subjectName='java') AND examDate=(SELECT MAX(examDate) FROM result) AND studentResult>60 ) AND subjectNo=(SELECT subjectNo FROM `subject` WHERE subjectName='java') AND examDate=(SELECT MAX(examDate) FROM result)-- 如果有1年級的學生 -- 就查詢參加2年級學科考試的學員學號、科目編號、考試成績,考試時間-- 01.查詢有沒有1年級的學生 student表 SELECT * FROM student WHERE gradeId= (SELECT gradeId FROM grade WHERE gradeName='1年級')-- 02.查詢2年級下面的學科 SELECT subjectNo FROM `subject` WHERE gradeId=(SELECT gradeId FROM grade WHERE gradeName='2年級')-- 03.整體的結果 SELECT studentNo 學號,subjectNo 科目編號,studentResult 考試成績, examDate 考試時間 FROM result WHERE EXISTS( SELECT * FROM student WHERE gradeId= (SELECT gradeId FROM grade WHERE gradeName='1年級') ) AND subjectNo IN (SELECT subjectNo FROM `subject` WHERE gradeId=(SELECT gradeId FROM grade WHERE gradeName='2年級'))-- 使用子查詢的注意事項 -- 01.任何允許使用表達式的地方都可以使用子查詢 -- 02.只出現在子查詢中但是沒有在父查詢中出現的列,結果集中的列不能包含!-- 為每個學生制作在校期間每門課程的成績單 -- 要求每個學生參加每門課程的最后一次考試成績作為該生本課程的最終成績 -- 成績單的數據項 學生姓名 課程所屬的年級名稱 課程名稱 考試日期 考試成績 SELECT studentName 學生姓名, (SELECT gradeName FROM grade WHERE gradeId=`subject`.`gradeId`) 課程所屬的年級名稱, subjectName 課程名稱 , examDate 考試日期 ,studentResult 考試成績 FROM result r1 INNER JOIN student ON r1.`studentNo`=student.`studentNo` INNER JOIN `subject` ON r1.`subjectNo`=`subject`.`subjectNo` WHERE r1.`examDate` IN (SELECT MAX(examDate) FROM result r2WHERE r1.`subjectNo`=r2.`subjectNo`GROUP BY r2.`subjectNo` )-- 隱式內連接 SELECT studentName 學生姓名,gradeName 年級名稱 FROM student,grade WHERE student.`gradeId`=grade.`gradeId`-- 顯式內連接 SELECT studentName 學生姓名,gradeName 年級名稱,subjectName 課程名稱 FROM student INNER JOIN grade ON student.`gradeId`=grade.`gradeId`-- 統計每門課程平均分各是多少 分組SELECT subjectNo 課程編號,AVG(studentResult) FROM result GROUP BY subjectNo -- 平均分在60分以上的 SELECT subjectNo 課程編號,AVG(studentResult) 平均分 FROM result GROUP BY subjectNo HAVING 平均分>=60-- 并按照平均成績 升序排列 SELECT subjectNo 課程編號,AVG(studentResult) 平均分 FROM result GROUP BY subjectNo HAVING 平均分>=60 ORDER BY 平均分 -- 統計每個年級的 男,女人數 -- 拿到 年級編號 性別 人數SELECT gradeId 年級編號 , sex 性別 , COUNT(studentNo) 人數 FROM student GROUP BY gradeId,sex-- 內連接 inner join-- 外連接01.左外連接 left join02.右外連接 right join-- 拿到student 和 年級表的數據 -- 獲取學生編號 學生姓名 年級名稱SELECT studentNo ,studentName,gradeName FROM student INNER JOIN grade ON student.`gradeId`=grade.`gradeId`SELECT studentNo ,studentName,gradeName FROM student,grade WHERE student.`gradeId`=grade.`gradeId`-- 三表聯查 -- 查詢學生姓名,學生成績 ,課程名稱 SELECT studentName 學生姓名,studentResult 學生成績,subjectName 課程名稱 FROM student s INNER JOIN result r ON s.`studentNo`=r.`studentNo` INNER JOIN `subject` j ON r.`subjectNo`=j.`subjectNo`-- 左外連接 以左表為準,如果右表中沒有對應的數據 ,則右表返回null -- 查詢所有學生的成績 和姓名 SELECT DISTINCT(studentName) 姓名, studentResult 成績 FROM student LEFT JOIN result ON result.`studentNo`=student.`studentNo`-- 右外連接 以右表為準,如果左表中沒有對應的數據 ,則左表返回null SELECT DISTINCT(studentName) 姓名, studentResult 成績 FROM student RIGHT JOIN result ON result.`studentNo`=student.`studentNo`-- 把查詢的語句 存入到 臨時表中 -- 臨時表只有當前的鏈接可見 隨連接的關閉自動刪除 -- 臨時表的更改不會影響到真表 CREATE TEMPORARY TABLE haha(SELECT studentName FROM student) SELECT * FROM hahamysql筆記 mysql筆記

?

轉載于:https://www.cnblogs.com/xtdxs/p/6690549.html

總結

以上是生活随笔為你收集整理的mysql20170410练习代码+笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲精品爱爱 | 国产com| 欧美性另类 | 最新中文字幕在线 | 成年人免费小视频 | 午夜影院美女 | 美女丝袜合集 | 国产无遮挡又黄又爽在线观看 | 日本不卡一区二区在线观看 | 亚洲男人的天堂av | 在线观看福利网站 | 91老师国产黑色丝袜在线 | 午夜天堂视频 | 免费精品 | 黄色三级大片 | 欧美一区亚洲一区 | 超碰在线超碰 | 日韩经典在线 | 四虎av在线播放 | 亚洲av乱码一区二区 | 无码 人妻 在线 视频 | 中国女人一级一次看片 | 中文字字幕 | 国产一级一级片 | 国产精品无码免费专区午夜 | 色爱av综合 | 成人免费毛片足控 | 色射射 | free性欧美hd另类 | 久久婷婷成人综合色 | 男女日皮视频 | 国产亚洲精品久久 | 黄91在线观看 | www.蜜桃av.com | 日韩精品久久久久 | 日韩精品久久一区 | 欧美日韩大陆 | 激情网络| av大片在线看 | 九九热在线视频 | 激情视频网址 | 日韩有码在线视频 | 调教驯服丰满美艳麻麻在线视频 | 免费看裸体网站 | juliaann第一次和老师 | 国产在线97 | 久久久精品一区二区三区 | 亚洲黄色精品视频 | 午夜国产精品视频 | 亚洲一区二区三区色 | 欧美黑人猛交 | 久久久午夜电影 | 亚洲综合自拍 | 肉丝美脚视频一区二区 | 中文乱码人妻一区二区三区视频 | 成人在线小视频 | 日韩专区av| 春物催眠 | 美女被艹视频网站 | www.美色吧.com| 天堂在线视频网站 | 中文字幕一区二区三区日韩精品 | 国产午夜福利片 | 精品少妇人妻av免费久久久 | 不卡一区二区三区四区 | 久久久成人精品视频 | 性猛交娇小69hd| 尤物视频在线观看免费 | 国产白丝袜美女久久久久 | 日韩永久免费 | 欧美夫妻性生活视频 | 中文字幕高清 | 亚洲国产精品尤物yw在线观看 | 黄色av免费网站 | 国产高潮失禁喷水爽到抽搐 | 国产日韩激情 | 国产情侣激情 | 精品黄色片 | 男人和女人搞鸡 | 成人免费在线观看av | 做暧暧视频在线观看 | 在线亚洲观看 | 麻豆视频在线观看 | 黄色自拍网站 | 国产伦精品一区二区 | 91日日夜夜 | 徐锦江一级淫片免费看 | 久久精品一区二区在线观看 | 国精产品一区一区三区免费视频 | 国产精品www.| 香蕉黄视频 | 美女诱惑一区二区 | 日本视频一区二区三区 | 久久久永久久久人妻精品麻豆 | 国产成人av在线 | 亚洲一区二区三区四区电影 | 久久精品国产99精品国产亚洲性色 | 日本欧美色 | 精品三级国产 |