mysql数据库作业_mysql数据库操作练习
mysql數據庫練習題
溫馨提示:多刷新表!
? 多刷新表!!!
? 多刷新表!!!!!
1查詢每個 學生成績大于60且成績總和小于200的班級編號以及成績和并根據成績和降序
update sg set sumgrade = chinese+math+english+biology+geography+physic+chemistry;
/*
更新每個學生的總成績
*/
select classid,grade where grade>60 and sum(grade)<200 order by grade desc;
2創建一個表:student sid sname sage sex score sclass sbirthday
create table student (sid int,
sname varchar(20),
sage int,
sex varchar(5),
score double(5,2),
sclass int,
sbirthday DATE )
3 插入20條數據: 其中sage隨機 sex隨機 score隨機
-- 初版 存儲過程 insert20 無語法錯誤 但是沒有對表student插入
delimiter $$
create PROCEDURE insert20( n INT)
BEGIN
declare n int default 0;
while n<20 do
insert into student(sage,sex,score )values(
round(RAND() * 100),
if(floor (RAND()*2)<1,'是','否'),
-- SUBSTR(sexrand (round(RAND() * 100)%2 FOR 1)
round(RAND() * 100)
) ;
set n=n+1 ;
END while ;
end $$
--然后發現參數沒卵用。。性別寫錯了 修改
delimiter $$
create PROCEDURE insert20()
BEGIN
declare n int default 0;
while n<20 do
insert into student(sage,sex,score )values(
round(RAND() * 100),
if(floor (RAND()*2)<1,'男','女'),
-- SUBSTR(sexrand (round(RAND() * 100)%2 FOR 1)
round(RAND() * 100)
) ;
set n=n+1 ;
END while ;
end $$
/*注意事項
1 begin end之間算是代碼塊語句后要有 分號;
2 delimiter $$ end $$寫在開頭和結尾,因為結束符號默認是分號;與代碼塊中沖突,所以要用delimiter
3 二選一賦值用if簡單,要是多的話建議用substr(設定好的字符串,隨機大數求余,長度) 來賦值
4 基本語法一定要寫對,要記牢,本例涉及while do,if,insert into,round(),rand(),及基本存儲過程語法等
5 當然 性別 這個或許并不合適 設計性別一般也不是非男即女,懂的都懂
*/
--執行語句
/*刪除存儲結構*/DROP PROCEDURE IF EXISTS insert20
/*清空表數據*/delete from student
/*調用存儲結構*/call insert20()
4 獲取所有年齡小于18 并且 名字中有妹的 所有女生的信息
SELECT * FROM student WHERE sage<18 AND sname like '%妹%'
5 獲取所有學生的總人數 平均分 最低分 最高分
select count(*) as '總人數'from student;
select avg(score) as '平均分' from student;
select min(score) as'最低分'from student;
select max(score) as'最高分'from student;
--整合--
select count(*) as '總人數',
avg(score) as '平均分',
min(score) as'最低分',
max(score) as'最高分'
from student ;
6獲取所有參加考試的學生的總人數和參加考試學生的平均分 和 所有學生的平均分
select count(score) as '總人數',
avg(score) as '平均分',
min(score) as'最低分',
max(score) as'最高分'
from student
--ps: count(*)會計算含null的字段,因為此行其他字段不為空
7 獲取所有學生的自我介紹信息:我叫xxx,今年xxx歲,明年xx歲,考了xx分,我是成年人/未成年人
SELECT CONCAT('我叫',
sname,
'今年',
sage,
'歲,明年',
sage+1 ,
'歲,考了',
score ,
'分,我是',
if(sage<18,'未成年人','成年人')
)as SelfIntroduce
FROM student
8 獲取5月份生日的學生的個數
SELECT * FROM student where MONTH(sbirthday) =5
9 獲取本月生日的學生的個數
SELECT count(*) FROM student where MONTH(sbirthday) =MONTH(CURDATE())
10 獲取年齡在18到22歲之間的學生的信息
select * from student where sage>=18 and sage <=22
11 獲取第6-10條的所有學生的信息
select * from student limit 5,5; --從第五行結束 開始,查五行
12 把所有女生 并且年齡<20的學生分數+1
select *from student where sex='女'
13 把所有成績為null的學生 分數設置為100
UPDATE student set score=100 where ISNULL(score);
14 刪除sclass列
alter TABLE student DROP COLUMN sclass
15 添加sgrade列 列類型固定長度4的字符串
alter table student add sgrade varchar(4);
16 修改列名sgrade為grade
alter table student change sgrade grade varchar(4);
17 修改grade列類型為char(4)
ALTER table student change grade grade char(4);
18 修改表名為stu1
rename table student to stu1
總結
以上是生活随笔為你收集整理的mysql数据库作业_mysql数据库操作练习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用c语言写出一个榜单程序,C语言依然位居
- 下一篇: android cpu负载 工具,计算A