MySQL单表练习

1.创建一个名称为mydb1的数据库。

Create database mydb1;

2.创建一个使用utf8字符集的mydb2数据库。

create database mydb2 charset utf8;

3.创建一个使用utf8字符集,并带校对规则的mydb3数据库

create database mydb3 charset utf8 collate utf8_bin;

4.查看当前数据库服务器中的所有数据库

show databases;

5.删除前面创建的mydb1数据库

drop database mydb1;

6.创建一个员工表employee

字段

属性

id

整型

name

字符型

gender

字符型

birthday

日期型

entry_dayte

日期型

job

字符型

salary

小数型

resume

大文本型

create table employee(

id int,

name varchar(20),

gender varchar(2),

birthday date,

entry_dayte date,

job varchar(20),

salary double,

resume longtext

);

7.修改表练习

1在上面员工表的基本上增加一个image列。

alter table employee add image longblob;

2修改job列,使其长度为60。

alter table employee modify job varchar(60);

3删除gender列。

alter table employee drop gender;

4表名改为emp

rename table employee to emp;

5列名name修改为empname

alter table emp change name empname varchar(20);

8.使用insert语句向表中插入三个员工的信息。

要求:三个员工的名字分别为  张三、李四、王五。其他字段无要求

insert into emp(empname) values('张三'),('李四'),('王五');

9.在上面创建的employee表中修改表中的纪录。

要求:

将所有员工薪水修改为5000元。

update employee set salary = 5000;

(更新表的时候,不用加table,不用加table,不用加table啊啊啊啊啊)

将姓名为张三的员工薪水修改为3000元。

update employee set salary = 3000 where name = '张三';

将姓名为李四的员工薪水修改为4000元,job改为ccc。

update employee set salary = 4000,job = 'ccc' where name = '李四';

(set后面有多个条件需要设置的时候,中间用逗号隔开就行了,切记,切记!!!)

王五的薪水在原有基础上增加1000元。

update employee set salary = salary + 1000 where name = '王五';

(int,double等数值类型加减乘除都可以,其他类型这么运算毫无意义)

10.删除表中名称为张三的记录。

delete from employee where name = '张三';

(删除表中的一行记录用的是delete from ......)

11.删除表中所有记录。

delete from employee;

12.创建考试表: 表名: exam

字段: id         int    主键

       name     varchar

       math      int

       chinese    int

       english    int

create table exam(

id int,

name varchar(20),

math int,

chinese int,

english int

);

录入数据

id

name

math

chinese

english

1

小毛

88

78

70

2

小邓

90

91

92

3

小江

65

66

98

4

小胡

88

77

66

insert into exam values(1,'小毛',88,78,70);

insert into exam values(2,'小邓',90,91,92);

insert into exam values(3,'小江',65,66,98);

insert into exam values(4,'小胡',88,77,66);

13.查询表中所有学生的信息。

select * from exam;

14.查询表中所有学生的姓名和对应的英语成绩。

select name,english from exam;

15.统计每个学生的总分。

select id,name,math+chinese+english total_score from exam;

16.查询姓名为小江的学生成绩

select name,math,chinese,english from exam where name = '小江';

#select * from exam where name = '小江';

17.查询英语成绩大于90分的同学

select name,english from exam where english > 90;

18.查询总分大于200分的所有同学

select name,math+chinese+english total_score from exam where math+chinese+english > 200;

(错误写法:

select name,math+chinese+english total_score from exam where total_score > 200;#由于先执行的是where中的语句,当时total_score还没有被创建,所以报错!!!)

19.查询英语分数在 80-90之间的同学。

select name,english from exam where english between 80 and 90;

(千万不要忘记写from exam,不然鬼知道你操作的是哪个表啊!!!)

20.查询数学分数为89,90,91的同学。

select name,math from exam where math in(89,90,91);

21.查询所有姓李的学生成绩。

select name,math,chinese,english from exam where name = '李%';

22.查询数学分>80,语文分>80的同学。

select name,math,chinese from exam where math > 80 and chinese > 80;

23.对总分排序按从高到低的顺序输出。

select id,name,math+chinese+english total_score from exam order by math+chinese+english desc;

(千万别忘了写from exam)

24.对学生成绩按照英语进行降序排序,英语相同学员按照数学降序。

select name,english,math from exam order by english desc,math desc;

25.统计一个班级共有多少学生?

select count(*) from exam;

26.统计数学成绩大于90的学生有多少个?

select count(*) from exam where math > 90;

27.统计总分大于220的人数有多少?

select count(*) from exam where math+chinese+english > 220;

28.统计一个班级数学总成绩?

select sum(math) from exam;

29.统计一个班级语文、英语、数学各科的总成绩

select sum(chinese) '语文总成绩',sum(english) '英语总成绩',sum(math) '数学总成绩' from exam;

30.统计一个班级语文、英语、数学的成绩总和

select sum(chinese+math+english) from exam;

#没有指定,就计算全部的

31.统计一个班级语文成绩平均分

select avg(ifnull(chinese,0)) '语文成绩' from exam;

 

 

 

你可能感兴趣的:(第二阶段)