上机练习二 表的查看、修改和删除

一、表结构的修改

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属性。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值