mysql 作业练习
作业:
说明: 每个动作都是一条sql执行下来.
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (ID)
);
一定得增加主键.
1. 新建一个数据库: School
2. 新建 一个表: students,
varchar: name
integer: id
2.1 往里面增加这些数据(纯手打), 包括: 李明, 李华, 李丽, 张三,张思,张武,赵六,赵括,赵萌
2.2 修改这个表, 增加一个列: integer age(年龄), 分别为这些学生增加年龄, 18-22不等.
2.3 使用SQL语句做以下的查询:
2.3.1 总共有多少个学生
mysql> select count(name) from students;
+-------------+
| count(name) |
+-------------+
| 9 |
+-------------+
2.3.2 所有年龄大于 19的学生
mysql> select * from students where age > 19;
+------+--------+------+
| id | name | age |
+------+--------+------+
| 1 | 李明 | 21 |
| 4 | 张三 | 20 |
| 5 | 张思 | 22 |
| 6 | 张武 | 20 |
| 9 | 赵萌 | 21 |
2.3.3 所有年龄小于 19的学生
mysql> select * from students where age > 19;
2.3.4 所有姓李的学生
mysql> select name from students where name like "%李%";
2.3.5 所有姓赵的,年龄大于19的学生
mysql> select name from students where name like "%李%" and age > 19;
2.3.6 把所有姓李的, 年龄大于20的学生的名字,都改成"已毕业"
mysql> update students set name = '已毕业' where name like '%李%' and age > 20;
2.3.7 把所有姓李的, 年龄大于20的学生的名字,都删掉.
mysql> delete from students where name like '%李%' and age > 20;
2.3.8 所有的学生, 按照姓名排序(也就是字母排序...).
mysql> select * from students order by name ;
2.3.8 所有的学生, 按照姓名排序倒序
mysql> select * from students order by name desc;
3. 新建一个表: teachers
varchar: name
integer: id
mysql> create table teachers (name varchar(25), id integer);
往里面增加3条数据(纯手打), 包括: 周老师, 赵老师
4. 实现students 对teachers的关系:
增加科目字段 object:
mysql> alter table teachers add object varchar(255);
mysql> alter table students add object varchar(255);
添加数据: .................. update teachers set object = "数学" where id = 1;
(有两种课程: 周老师教 数学课, 赵老师教语文课).
增加一个中间表: object column : id name student_id teacher_id.
4.1 一个学生可以学习语文课,也可以学习数学课.
4.2 一个数学老师可以教 小李 数学, 也可以教 小张数学.
5. 查询:
5.1 所有学习了语文课的,姓李的,年龄大于19的孩子.
mysql> select * from students where object = "语文" and name like "%李%" and age > 19;
5.2 所有学习了语文课的,姓李的,年龄大于19的孩子的个数
mysql> select count(*) from students where object = "语文" and name like "%张%" and age > 19;
5.3 所有教了 "姓李"的孩子的老师
mysql> select teachers.name from teachers inner join students on teachers.object = students.object where students.name like "%李%";
5.4 所有教了 "姓李"的孩子的老师的个数
mysql> select teachers.name from teachers inner join students on teachers.object = students.object where students.name like "%李%";
5.4 所有教了 "姓李"的孩子的老师, 按照姓名排序.
mysql> select teachers.name from teachers inner join students on teachers.object = students.object where students.name like "%李%" order by teachers.name;
6. 把所有的表的所有列, 都增加单列的index.
7. 找出所有的表的外键. (这个不需要sql, 直接写答案就行)