学生表:Student (Sno, Sname, Ssex , Sage, Sdept)
学号,姓名,性别,年龄,所在系 Sno为主键
课程表:Course (Cno, Cname,)
课程号,课程名 Cno为主键
学生选课表:SC (Sno, Cno, Score)
学号,课程号,成绩 Sno,Cno为主键
创建Student表
mysql> create table Student(?????????????????????????????????????????????
??? -> Sno int primary key,??????????????????????????????????????????????
??? -> Sname varchar(20) unique,?????????????????????????????????????????
??? -> Ssex enum('男','女'),?????????????????????????????????????????????
??? -> Sage int,?????????????????????????????????????????????????????????
??? -> Sdept varchar(30) default '计算机'????????????????????????????????
??? -> );????????????????????????????????????????????????????????????????
Query OK, 0 rows affected (0.01 sec)
#注意:在MySQL中,你可以使用枚举类型(ENUM)来限制字段的值只能是特定的选项。
Student表插入数据
mysql> insert into Student values(1,'张三','男',20,'计算机');????????????
mysql> insert intoStudent values(2,'李四','男',23,'英语');? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ? mysql> insert into Student values(3,'王五','女',22,'数学');?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mysql> insert into Student values(4,'小明','女',18,'数学');??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
mysql> insert into Student values(5,'哈利姆','男',19,'计算机');??????????
#查看表结构
mysql> desc Student;
#查看Student表数据
mysql> select * from Student;
#在MySQL中,alter table 语句可以用于修改表的结构,包括添加、删除或修改列,以及重命名表。其中, modify关键字可以用于修改现有列的定义。
mysql> alter table Student modify Sage smallint;
#创建学生选课表SC
mysql> create table SC(??????????????????????????????????????????????????
??? -> Sno int,??????????????????????????????????????????????????????????
??? -> Cno int,??????????????????????????????????????????????????????????
??? -> Score int,????????????????????????????????????????????????????????
??? -> primary key (Sno,Cno)?????????????????????????????????????????????
??? -> );????????????????????????????????????????????????????????????????
Query OK, 0 rows affected (0.01 sec)
#学生选课表SC中插入数据
mysql> insert into SC values(1,1,90);????????????????????????????????????
mysql> insert into SC values(2,2,80);????????????????????????????????????
mysql> insert into SC values(3,3,85);????????????????????????????????????
mysql> insert into SC values(4,3,95);????????????????????????????????????
mysql> insert into SC values(5,1,87);????????????????????????????????????
#查询学生选课表SC中的内容
mysql> select * from SC;
#在MySQL中,可以使用 create index 语句来创建索引。在默认情况下,MySQL会对索引进行升序排序。
#创建索引的用法:create index on index_name on? table_name ( column_list );
#在这个格式中,index_name是我们想要创建的索引的名称,table_name 是我们想要在其上创建索引的表的名称,column_list是我们想要索引的列的列表。
mysql> create index SC_INDEX on SC(Sno,Cno);
#创建课程表Course
mysql> create table Course(??????????????????????????????????????????????
??? -> Cno int primary key,??????????????????????????????????????????????
??? -> Cname varchar(30)?????????????????????????????????????????????????
??? -> );????????????????????????????????????????????????????????????????
Query OK, 0 rows affected (0.01 sec)
#课程表Course中插入数据
mysql> insert into Course values(01,'计算机');???????????????????????????
mysql> insert into Course values(02,'英语');???? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mysql> insert into Course values(03,'数学');?????????????????????????????
#查询课程表的数据
mysql> select * from Course;
#在MySQL中,可以使用create view...as?语句来创建视图。视图是一种虚拟表,基于SQL语句的结果集。视图包含行和列,就像真实的表一样。视图中的字段来自数据库中的一个或多个真实表。
mysql> create view v_Stu_SC_C as (select Sname 姓名,Ssex 性别,Cname 课程号,Score 成绩 from Student Stu inner join SC on Stu.Sno=SC.Sno inner join? ?Course C on SC.Cno=C.Cno);
SQL语句分析:涉及三张表的连接,因为选课表SC中的Sno与学生表Sno数据一致,SC表中的Cno与课程表Cno数据一致,所以选课表SC表当作中间参数,连接另外两张表
mysql> select Sname 姓名,Ssex 性别,Cname 课程号,Score 成绩 from Student Stu inner join SC on Stu.Sno=SC.Sno inner join Course C on SC.Cno=C.Cno;
#描述视图表v_Stu_SC_C的结构
mysql> desc v_Stu_SC_C;
?#查询视图表v_Stu_SC_C中的内容
mysql> select * from v_Stu_SC_C;