drop database if exists StudentManage;
create database StudentManage;
use StudentManage;
create table Student
(Sno int primary key,
Sname nchar(10) ,
Ssex nchar(2),
Sage int,
Sdept nvarchar(30)
)charset utf8;
create table Course
(Cno int primary key,
Cname nvarchar(30),
Cpno int,
Ccredit int
)charset utf8;
create table SC
(Sno int,
Cno int,
Grade int,
primary key(Sno,Cno)
)charset utf8;
insert into Student
values(201215121,'李勇','男',20,'CS'),
(201215122,'刘晨','女',19,'CS'),
(201215123,'王敏','女',18,'MA'),
(201215124,'张立','男',19,'IS');
insert into Course
values(1,'数据库',5,4),(2,'数学',NULL,2),
(3,'信息系统',1,4),(4,'操作系统',6,3),
(5,'数据结构',7,4),(6,'数据处理',NULL,2),
(7,'PASCAL',6,4);
insert into SC
values(201215121,1,92),(201215121,2,85),
(201215121,3,88),(201215122,2,90),(201215122,3,80);
(1)-1.23以下の整数を見つけます。①文;②結果。
最初の空:
SELECT FLOOR(-1.23);
2番目に空:
-2
(2)文字「d」のASCIIコード値を見つけます。①文;②結果。
最初の空:
SELECT ASCII( 'd');
2番目に空:
100
(3)「My」、「S」、「QL」の3つの文字列を連結します。①文;②結果。
最初の空:
SELECT CONCAT( 'My'、 'S'、 'QL');
2番目に空:
MySQL
(4)文字列「Text」の長さを調べます。①文;②結果。
最初の空:
SELECT CHAR_LENGTH( 'Text');
2番目の空:
4
(5)文字列「foobarbar」で文字列「bar」の最初の出現箇所を見つけます。①文;②結果。
最初の空:
SELECT INSTR( 'foobarbar'、 'bar'); SELECT LOCATE( 'bar'、 'foobarbar'); SELECT POSITION( 'bar' IN'foobarbar ');
2番目の空:
4
(6)文字列「foobarbar」の右端の5文字を見つけます。①文;②結果。
正解:
最初の空:
SELECT RIGHT( 'foobarbar'、5); SELECT SUBSTR( 'foobarbar'、-5);
2番目の空:
arbar
(7)文字列「www.mysql.com」の「w」を「Ww」に置き換えます。①文;②結果。
最初の空:
SELECT REPLACE( 'www.mysql.com'、 'w'、 'Ww');
2番目に空:
WwWwWw.mysql.com
(8)取得システムの現在の日付は、その年の日です。(NOW()と同じ関数がNOW()を使用します)①ステートメント。
正解:
最初の空:
SELECT DAYOFYEAR(NOW());
(9)100日後の日付を取得します。(NOW()と同じ関数がNOW()を使用します)①ステートメント。
curdate()+間隔100日を選択します。
(10)データベースのバージョン番号を取得します。①ステートメント。
version();を選択します。
(11)文字列「abcd」に対してmd5暗号化を実行します。①文;②結果。
正解:
最初の空:
SELECT md5( 'abcd');
2番目に空:
e2fc714c4727ee9395f324cd2e7f331f
整数666を返す関数myselectを定義し、関数を呼び出します。①定義;②電話。
第一空:
作成関数myselect()
return int
BEGIN
return 666;
終わり
2番目の空:
select myselect();
「LiuChen」の学生IDを検索する関数myselect2を定義し、この関数を呼び出します。①定義;②電話。
第一空:
create function myselect2()returns int
begin
return(select sno from student where sname = '刘晨');
終わり
2番目の空:
myselect2();を選択します。
関数myselect3を定義します。この関数の関数は、学生の名前に基づいて学生の学生IDを見つけることです(パラメーター名にnameを使用)。
CREATE FUNCTION myselect3(name VARCHAR(30))RETURNS INT
BEGIN
RETURN(SELECT sno FROM student WHERE sname = name)
END;
関数myselect3を呼び出して、「LiYong」の学生IDを照会します。①コマンドを起動します;②結果。
最初の空:
SELECT myselect3( 'Li Yong');
2番目に空:
201215121
関数stu_countを定義して、学生の名前に基づいて学生の選択科目の数を照会します。(パラメーター名にはnameを使用してください)
CREATE FUNCTION stu_count(name VARCHAR(30)charset utf8)RETURNS INT
BEGIN
RETURN(SELECT COUNT(*)FROM Student s
JOIN SC ON s.sno = sc.sno
WHERE s.sname = name)
END;
関数stu_countを呼び出して、「LiYong」が受講したコースの数をそれぞれ照会します。①コマンドを起動します;②結果。
最初の空:
SELECT stu_count( 'Li Yong');
2番目の空:
3
関数sdept_avggradeを定義して、部門名とコース名に基づいてコース内の学生の平均スコアを照会します。
CREATE FUNCTION sdept_avggrade(p_sdept VARCHAR(30)charset utf8、p_cname VARCHAR(30)charset utf8)RETURNS DECIMAL(6,2)
BEGIN
RETURN(SELECT AVG(SC.grade)FROM student s
JOIN sc ON s.sno = sc.sno
JOINコースcON sc.cno = c.cno
WHERE s.sdept = p_sdept
AND c.cname = p_cname)
END;
関数sdept_avggradeを呼び出して、「CS」部門と「数学」コースの平均成績を照会します。①コマンドを起動します;②結果。
最初の空:
SELECT sdept_avggrade( 'CS'、 'Mathematics');
2番目に空:
87.5
SQLステートメントを使用して、sdept_avggrade関数を削除します。
存在する場合のドロップ関数sdept_avggrade;