一、表结构的修改
1、为student表格增加籍贯列jiguan,数据类型varchar,字段宽度为20字节,不允许输入空值。
语法:ALTER TABLE table_name ADD 属性名 属性类型 NOT NULL;
命令如下:
mysql> alter table student add jiguan varchar(20) not null;
2、重命名student表的籍贯列“jiguan”为“jg”。
语法:ALTER TABLE table_name CHANGE 旧属性名 新属性名 新数据类型;
命令如下;
mysql> alter table student change jiguan jg varchar(20);
3、删除student表中的jg字段。
语法:ALTER TABLE table_name DROP 属性名;
命令如下:
mysql> alter table student drop jg;
4、将student表中的sdept字段长度改为20
语法:ALTER TABLE table_name MODIFY 属性名 数据类型;
--数据类型为修改后的数据类型
命令如下:
mysql> alter table student modify sdept char(20);
5、在sno字段上为Student表设置主键。
语法:ALTER TABLE table_name ADD PRIMARY key (属性名);
命令如下:
mysql> alter table student add primary key (sno);
6、在Cno字段上为Course表设置主键。
命令如下:
mysql> alter table course add primary key (Cno);
7、为SC表的Sno和Cno设置外键。
命令如下:
mysql> alter table sc add foreign key ss(Sno) references student(Sno);
二、数据操作
1、使用insert-SQL命令向上述表中输入如下数据记录。
学生关系表Student
Sno | Sname | Ssex | Sbirthday | Sdept | Speciality |
20180101 | 李勇 | 男 | 2000-01-12 | CS | 计算机应用 |
20180201 | 刘晨 | 女 | 2001-06-04 | IS | 电子商务 |
20180301 | 王敏 | 女 | 2002-12-23 | MA | 数学 |
20180202 | 张立 | 男 | 2001-08-25 | IS | 电子商务 |
例:insert into student(sno,sname) values('20050101','李勇');
命令如下:
mysql> insert into student (Sno,Sname,Ssex,Sbirthday,Sdept,Speciality) values("20180101","李勇","男","2000-01-12","CS","计算机应用");
mysql> insert into student (Sno,Sname,Ssex,Sbirthday,Sdept,Speciality) values("20180201","刘晨","女","2001-06-04","IS","电子商务");
mysql> insert into student (Sno,Sname,Ssex,Sbirthday,Sdept,Speciality) values("20180301","王敏","女","2002-12-23","MA","数学");
mysql> insert into student (Sno,Sname,Ssex,Sbirthday,Sdept,Speciality) values("20180202","张立","男","2001-08-25","IS","电子商务");
课程关系表Course 成绩表SC
Sno | Cno | Degree |
20180101 | C01 | 92 |
20180101 | C02 | 85 |
20180101 | C03 | 88 |
20180201 | C02 | 90 |
20180201 | C03 | 80 |
20180301 | C01 | NULL |
20180301 | C02 | NULL |
20180202 | C01 | 87 |
Cno | Cname |
C01 | 数据库 |
C02 | 数学 |
C03 | 信息系统 |
C04 | 操作系统 |
命令如下:
mysql>insert into course (Cno,Cname)values("C01","数据库");
mysql> insert into course (Cno,Cname)values("C02","数学");
mysql> insert into course (Cno,Cname)values("C03","信息系统");
mysql> insert into course (Cno,Cname)values("C04","操作系统");
mysql> insert into sc(Sno,Cno,Degree)values("20180101","C01","92");
mysql> insert into sc(Sno,Cno,Degree)values("20180101","C02","85");
mysql> insert into sc(Sno,Cno,Degree)values("20180101","C03","88");
mysql> insert into sc(Sno,Cno,Degree)values("20180201","C02","90");
mysql> insert into sc(Sno,Cno,Degree)values("20180201","C03","80");
mysql> insert into sc(Sno,Cno)values("20180301","C01");
mysql> insert into sc(Sno,Cno)values("20180301","C02");
mysql> insert into sc(sno,cno,degree)values("20180202","C01","87");
2、使用update命令将SC表C02课程的Degree字段值全部加5分。
命令如下:
Mysql>update sc set degree= degree+5 where cno="c02";
3、删除SC表中C02课程的全部记录。
命令如下:
Mysql>delete from sc where cno=”c02”;
4、查看SC表格中所有数据。
命令如下:
Mysql>select * from sc;
思考题
1、MySQL的数据库文件有几种?扩展名分别是什么?
一个数据库是一个目录,目录下一个表对应三个文件,文件名是表名,扩展名分别是.frm、.MYD、.MYI((数据文件:. myd )、( 索引文件:. MYI )、(表定义文件:. frm))。
.frm是存储数据表的框架结构 .MYD是MyISAM表的数据文件的扩展名 .MYI是MyISAM表的索引的扩展名 当对数据库的操作有大量的select,就用MyISAM表 当对数据库的操作有大量的insert or update,就用InnoDB表 |
2、如何实现数据库的备份和还原?
1 备份 开始菜单 | 运行 | cmd |利用“cd \Program Files\MySQL\MySQL Server 5.0\bin”命令进入bin文件夹 利用“mysqldump -u 用户名 -p databasename >exportfilename”导出数据库到文件 如mysqldump -u root -p voice>voice.sql,然后输入密码即可开始导出。 2 还原 mysql –uroot –p 输入密码: mysql>show databases; --查看已有数据库; mysql>create database voice; --建立要还原的数据库 mysql> use voice; --切换到刚建立的数据库 mysql>source voice.sql; --导入数据 导再次出现"mysql>"并且没有提示错误即还原成功。 |
3、在定义基本表语句时,NOT NULL参数的作用是什么?
表示插入数据的时候不允许为空 (null)空了就报错
4、主码可以建立在“值可以为NULL”的列上吗?
不可以。
因为主码具有唯一性和不抄可重复性,当主码为空时,唯一性约束被破坏所以主码列不能重复和为空值。如果该列不是主码,则说明设置了unique属性。