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

歡迎訪問 生活随笔!

生活随笔

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

数据库

建立学生选课表 mysql 语句_学生选课数据库SQL语句45道练习题整理及mysql常用函数(20161019)...

發布時間:2024/8/23 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 建立学生选课表 mysql 语句_学生选课数据库SQL语句45道练习题整理及mysql常用函数(20161019)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學生選課數據庫SQL語句45道練習題:

一、??????????? 設有一數據庫,包括四個表:學生表(Student)、課程表(Course)、成績表(Score)以及教師信息表(Teacher)。四個表的結構分別如表1-1的表(一)~表(四)所示,數據如表1-2的表(一)~表(四)所示。用SQL語句創建四個表并完成相關題目。

表1-1數據庫的表結構

表(一)Student (學生表)

屬性名

數據類型

可否為空

含 義

Sno

varchar (20)

學號(主碼)

Sname

varchar (20)

學生姓名

Ssex

varchar (20)

學生性別

Sbirthday

datetime

學生出生年月

Class

varchar (20)

學生所在班級

表(二)Course(課程表)??? 主外碼(主外鍵)

屬性名

數據類型

可否為空

含 義

Cno

varchar (20)

課程號(主碼)

Cname

varchar (20)

課程名稱

Tno

varchar (20)

教工編號(外碼)

表(三)Score(成績表)

屬性名

數據類型

可否為空

含 義

Sno

varchar (20)

學號(外碼)

Cno

varchar (20)

課程號(外碼)

Degree

Decimal(4,1)

成績

主碼:Sno+ Cno

表(四)Teacher(教師表)

屬性名

數據類型

可否為空

含 義

Tno

varchar (20)

教工編號(主碼)

Tname

varchar (20)

教工姓名

Tsex

varchar (20)

教工性別

Tbirthday

datetime

教工出生年月

Prof

varchar (20)

職稱

Depart

varchar (20)

教工所在部門

表1-2數據庫中的數據

表(一)Student

Sno

Sname

Ssex

Sbirthday

class

108

曾華

1977-09-01

95033

105

匡明

1975-10-02

95031

107

王麗

1976-01-23

95033

101

李軍

1976-02-20

95033

109

王芳

1975-02-10

95031

103

陸君

1974-06-03

95031

表(二)Course

Cno

Cname

Tno

3-105

計算機導論

825

3-245

操作系統

804

6-166

數字電路

856

9-888

高等數學

831

表(三)Score

Sno

Cno

Degree

103

3-245

86

105

3-245

75

109

3-245

68

103

3-105

92

105

3-105

88

109

3-105

76

101

3-105

64

107

3-105

91

108

3-105

78

101

6-166

85

107

6-166

79

108

6-166

81

表(四)Teacher

Tno

Tname

Tsex

Tbirthday

Prof

Depart

804

李誠

1958-12-02

副教授

計算機系

856

張旭

1969-03-12

講師

電子工程系

825

王萍

1972-05-05

助教

計算機系

831

劉冰

1977-08-14

助教

電子工程系

1、 查詢Student表中的所有記錄的Sname、Ssex和Class列。

2、 查詢教師所有的單位即不重復的Depart列。

3、 查詢Student表的所有記錄。

4、 查詢Score表中成績在60到80之間的所有記錄。

5、 查詢Score表中成績為85,86或88的記錄。

6、 查詢Student表中“95031”班或性別為“女”的同學記錄。

7、 以Class降序查詢Student表的所有記錄。

8、 以Cno升序、Degree降序查詢Score表的所有記錄。

9、 查詢“95031”班的學生人數。

10、?查詢Score表中的最高分的學生學號和課程號。(子查詢或者排序)

11、 查詢每門課的平均成績。

12、查詢Score表中至少有5名學生選修的并以3開頭的課程的平均分數。

13、查詢分數大于70,小于90的Sno列。

14、查詢所有學生的Sname、Cno和Degree列。

15、查詢所有學生的Sno、Cname和Degree列。

16、查詢所有學生的Sname、Cname和Degree列。

17、?查詢“95033”班學生的平均分。

18、 假設使用如下命令建立了一個grade表:

create table grade(low? int(3),upp? int(3),rank? char(1))

insert into grade values(90,100,’A’)

insert into grade values(80,89,’B’)

insert into grade values(70,79,’C’)

insert into grade values(60,69,’D’)

insert into grade values(0,59,’E’)

現查詢所有同學的Sno、Cno和rank列。

19、? 查詢選修“3-105”課程的成績高于“109”號同學成績的所有同學的記錄。

20、查詢score中選學多門課程的同學中分數為非最高分成績的記錄。

21、查詢成績高于學號為“109”、課程號為“3-105”的成績的所有記錄。

22、查詢和學號為108的同學同年出生的所有學生的Sno、Sname和Sbirthday列。

23、查詢“張旭“教師任課的學生成績。

24、查詢選修某課程的同學人數多于5人的教師姓名。

25、查詢95033班和95031班全體學生的記錄。

26、? 查詢存在有85分以上成績的課程Cno.

27、查詢出“計算機系“教師所教課程的成績表。

28、查詢“計算機系”與“電子工程系“不同職稱的教師的Tname和Prof。

29、查詢選修編號為“3-105“課程且成績至少高于選修編號為“3-245”的同學的Cno、Sno和Degree,并按Degree從高到低次序排序。

30、查詢選修編號為“3-105”且成績高于選修編號為“3-245”課程的同學的Cno、Sno和Degree.

31、?查詢所有教師和同學的name、sex和birthday.

32、查詢所有“女”教師和“女”同學的name、sex和birthday.

33、?查詢成績比該課程平均成績低的同學的成績表。

34、 查詢所有任課教師的Tname和Depart.

35?、 查詢所有未講課的教師的Tname和Depart.

36、查詢至少有2名男生的班號。

37、查詢Student表中不姓“王”的同學記錄。

38、查詢Student表中每個學生的姓名和年齡。

39、查詢Student表中最大和最小的Sbirthday日期值。

40、以班號和年齡從大到小的順序查詢Student表中的全部記錄。

41、查詢“男”教師及其所上的課程。

42、查詢最高分同學的Sno、Cno和Degree列。

43、查詢和“李軍”同性別的所有同學的Sname.

44、查詢和“李軍”同性別并同班的同學Sname.

45、查詢所有選修“計算機導論”課程的“男”同學的成績表。

答案:

1.select sname,ssex,class from student

2.select distinct depart from teacher

3.select * from student

4.select * from score where degree btween 60 and 80;

5.select * from score where degree in(85,86,88)

6.select * from student where class='95031' or ssex='女'

7.select * from student order by class desc

8.select * from score order by cno,degree desc

9.select count(*) from student where class='95031'

10.select sno,cno from score where degree=(select max(degree) from score)

select * from score order by degree desc limit 0,1

11.select cno,avg(degree) from score group by cno

12.select avg(degree) from score where cno like'3%' and cno in(select cno from score group by cno having count(*)>4)

select avg(degree) from score group by cno having count(*)>4 and cno like '3%'

13.select sno from score where degree>70 and degree<90

14.select student.sname,score.cno,score.degree from student,score where student.sno = score.sno

15.select score.sno,course.cname,score.degree from score,course where score.cno=course.cno

16.select student.sname,course.cname,degree from score,student,course where student.sno=score.sno and score.cno=course.cno

17.select avg(degree) from score where sno in(select sno from student where class='95033')

18.select sno,cno,rank from score,grade where degree between low and upp

19.(1)select * from score where cno = '3-105' and degree>(select max(degree) from score where sno='109')

(2)select * from score where cno = '3-105' and degree>(select max(degree) from score where sno='109' and cno='3-105')

20.(1)select * from score where sno in(select sno from score group by sno having count(*)>1) and degree

(2)select * from score a where sno in(select sno from score group by sno having count(*)>1) and degree

21.select * from score where degree>(select degree from score where sno='109' and cno='3-105')

22.select sno,sname,sbirthday from student where YEAR(sbirthday) = (select YEAR(sbirthday) from student where sno='108')

23.select * from score where cno in(select cno from course where tno =(select tno from teacher where tname='張旭'))

24.select tname from teacher where tno in(select tno from course where cno in(select cno from score group by cno having count(*)>5))

25.select * from student where class in('95033','95031')

26.select distinct cno from score where degree>85

27.select * from score where cno in(select cno from course where tno in(select tno from teacher where depart='計算機系'))

28.select tname,prof from teacher where depart='計算機系' and prof not in(select prof from teacher where depart='電子工程系')

union

select tname,prof from teacher where depart='電子工程系' and prof not in(select prof from teacher where depart='計算機系')

select tname,prof from teacher where prof not in( select prof from teacher where depart='計算機系' and prof in(select prof from teacher where depart='電子工程系'))

29.select * from score where cno='3-105' and degree>any(select degree from score where cno='3-245')

30.select * from score where cno='3-105' and degree>all(select degree from score where cno='3-245')

31.select sname,ssex,sbirthday from student

union

select tname,tsex,tbirthday from teacher

32.select sname,ssex,sbirthday from student where ssex='女'

union

select tname,tsex,tbirthday from teacher where tsex='女'

33.select * from score a where degree

34.select tname,depart from teacher where tno in(select tno from course where cno in(select cno from score))

35.select tname,depart from teacher where tno in(select tno from course where cno not in(select cno from score))

36.select class from student where ssex='男' group by class having count(*)>1

37.select * from student where sname not like '王%'

38.select sname,year(now())-year(sbirthday) from student

39.select max(sbirthday),min(sbirthday) from student

40.select * from student order by class desc,sbirthday

41.select tname,cname from teacher,course where teacher.tno = course.tno and tsex='男'

42.select * from score where degree=(select max(degree) from score)

43.select sname from student where ssex=(select ssex from student where sname='李軍')

44.select sname from student where ssex=(select ssex from student where sname='李軍') and class=(select class from student where sname='李軍')

45.select * from score where sno in(select sno from student where ssex='男') and cno in(select cno from course where cname='計算機導論')

總結:

1.聯合主鍵:主碼:aa+bb? 代碼:primary key(aa,bb)

2.若插入數據后出現????? [Err] 1050 - Table 'student' already exists

把原來的表刪除再運行代碼就行了

3.查詢不重復數據:select distinct a from b;

4.把一個表中Cno相同行分組并按Degree求平均值

select Cno,avg(Degree) from Score group by Cno having count(Cno)

5.至少高于:至少高于一個,用any

高于:高于所有,用all

mysql常用函數:

一、數學函數

數學函數主要用于處理數字,包括整型、浮點數等。

ABS(x)

返回x的絕對值

SELECT ABS(-1) -- 返回1

CEIL(x),CEILING(x)

返回大于或等于x的最小整數

SELECT CEIL(1.5) -- 返回2

FLOOR(x)

返回小于或等于x的最大整數

SELECT FLOOR(1.5) -- 返回1

RAND()

返回0->1的隨機數

SELECT RAND() --0.93099315644334

RAND(x)

返回0->1的隨機數,x值相同時返回的隨機數相同

SELECT RAND(2) --1.5865798029924

PI()

返回圓周率(3.141593)

SELECT PI() --3.141593

TRUNCATE(x,y)

返回數值x保留到小數點后y位的值(與ROUND最大的區別是不會進行四舍五入)

SELECT TRUNCATE(1.23456,3) -- 1.234

ROUND(x,y)

保留x小數點后y位的值,但截斷時要進行四舍五入

SELECT ROUND(1.23456,3) -- 1.235

POW(x,y).POWER(x,y)

返回x的y次方

SELECT POW(2,3) -- 8

SQRT(x)

返回x的平方根

SELECT SQRT(25) -- 5

EXP(x)

返回e的x次方

SELECT EXP(3) -- 20.085536923188

MOD(x,y)

返回x除以y以后的余數

SELECT MOD(5,2) -- 1

二、字符串函數

字符串函數是MySQL中最常用的一類函數,字符串函數主要用于處理表中的字符串。

函數說明

CHAR_LENGTH(s)

返回字符串s的字符數

SELECT CHAR_LENGTH('你好123') -- 5

CONCAT(s1,s2,...)

將字符串s1,s2等多個字符串合并為一個字符串

SELECT CONCAT('12','34') -- 1234

CONCAT_WS(x,s1,s2,...)

同CONCAT(s1,s2,...)函數,但是每個字符串直接要加上x

SELECT CONCAT_WS('@','12','34') -- 12@34

INSERT(s1,x,len,s2)

將字符串s2替換s1的x位置開始長度為len的字符串

SELECT INSERT('12345',1,3,'abc') -- abc45

UPPER(s),UCAASE(S)

將字符串s的所有字母變成大寫字母

SELECT UPPER('abc') -- ABC

LOWER(s),LCASE(s)

將字符串s的所有字母變成小寫字母

SELECT LOWER('ABC') -- abc

LEFT(s,n)

返回字符串s的前n個字符

SELECT LEFT('abcde',2) -- ab

RIGHT(s,n)

返回字符串s的后n個字符

SELECT RIGHT('abcde',2) -- de

LTRIM(s)去掉字符串s開始處的空格

RTRIM(s)去掉字符串s結尾處的空格

TRIM(s)去掉字符串s開始和結尾處的空格

SELECT TRIM('@' FROM '@@abc@@') -- abc

REPEAT(s,n)

將字符串s重復n次

SELECT REPEAT('ab',3) -- ababab

SPACE(n)返回n個空格

REPLACE(s,s1,s2)

將字符串s2替代字符串s中的字符串s1

SELECT REPLACE('abca','a','x') --xbcx

STRCMP(s1,s2)比較字符串s1和s2

SUBSTRING(s,n,len)獲取從字符串s中的第n個位置開始長度為len的字符串

LOCATE(s1,s),POSITION(s1 IN s)

從字符串s中獲取s1的開始位置

SELECT LOCATE('b', 'abc') -- 2

REVERSE(s)

將字符串s的順序反過來

SELECT REVERSE('abc') -- cba

FIELD(s,s1,s2...)

返回第一個與字符串s匹配的字符串位置

SELECT FIELD('c','a','b','c') -- 3

三、日期時間函數

MySQL的日期和時間函數主要用于處理日期時間。

函數說明

CURDATE(),CURRENT_DATE()

返回當前日期

SELECT CURDATE()

->2014-12-17

CURTIME(),CURRENT_TIME

返回當前時間

SELECT CURTIME()

->15:59:02

NOW(),CURRENT_TIMESTAMP(),LOCALTIME(),

SYSDATE(),LOCALTIMESTAMP()

返回當前日期和時間

SELECT NOW()

->2014-12-17 15:59:02

YEAR(d),

MONTH(d)

DAY(d)

返回日期d中的月份值,1->12

SELECT MONTH('2011-11-11 11:11:11')

->11

MONTHNAME(d)

返回日期當中的月份名稱,如Janyary

SELECT MONTHNAME('2011-11-11 11:11:11')

->November

DAYNAME(d)

返回日期d是星期幾,如Monday,Tuesday

SELECT DAYNAME('2011-11-11 11:11:11')

->Friday

DAYOFWEEK(d)

日期d今天是星期幾,1星期日,2星期一

SELECT DAYOFWEEK('2011-11-11 11:11:11')

->6

WEEKDAY(d)

日期d今天是星期幾,

0表示星期一,1表示星期二

WEEK(d),WEEKOFYEAR(d)

計算日期d是本年的第幾個星期,范圍是0->53

SELECT WEEK('2011-11-11 11:11:11')

->45

DAYOFYEAR(d)

計算日期d是本年的第幾天

SELECT DAYOFYEAR('2011-11-11 11:11:11')

->315

DAYOFMONTH(d)

計算日期d是本月的第幾天

SELECT DAYOFMONTH('2011-11-11 11:11:11')

->11

QUARTER(d)

返回日期d是第幾季節,返回1->4

SELECT QUARTER('2011-11-11 11:11:11')

->4

HOUR(t)

返回t中的小時值

SELECT HOUR('1:2:3')

->1

MINUTE(t)

返回t中的分鐘值

SELECT MINUTE('1:2:3')

->2

SECOND(t)

返回t中的秒鐘值

SELECT SECOND('1:2:3')

->3

四、系統信息函數

系統信息函數用來查詢MySQL數據庫的系統信息。

函數作用

VERSION()

返回數據庫的版本號

SELECT VERSION()

->5.0.67-community-nt

CONNECTION_ID() 返回服務器的連接數

DATABASE()、SCHEMA返回當前數據庫名

USER()、SYSTEM_USER()

返回當前用戶

五、加密函數

加密函數是MySQL用來對數據進行加密的函數。

1、PASSWORD(str)

該函數可以對字符串str進行加密,一般情況下,PASSWORD(str)用于給用戶的密碼加密。

SELECT PASSWORD('123')

->*23AE809DDACAF96AF0FD78ED04B6A265E05AA257

2、MD5

MD5(str)函數可以對字符串str進行散列,可以用于一些普通的不需要解密的數據加密。

SELECT md5('123')

->202cb962ac59075b964b07152d234b70

3、ENCODE(str,pswd_str)與DECODE(crypt_str,pswd_str)

ENCODE函數可以使用加密密碼pswd_str來加密字符串str,加密結果是二進制數,需要使用BLOB類型的字段保存。該函數與DECODE是一對,需要同樣的密碼才能夠解密。

SELECT ENCODE('123','xxoo')

->;vx

SELECT DECODE(';vx','xxoo')

->123

insert into login values('lch','alvin',encode('123','xxoo'),'50')

select Name,decode(Password,'xxoo') from login where username='lch'

總結

以上是生活随笔為你收集整理的建立学生选课表 mysql 语句_学生选课数据库SQL语句45道练习题整理及mysql常用函数(20161019)...的全部內容,希望文章能夠幫你解決所遇到的問題。

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