【数据库】表的查看、修改和删除
练习二表的查看、修改和删除学号: 200855211姓名:李明璐一、表结构的修改1、为student表格增加籍贯列jiguan,数据类型varchar,字段宽度为20字节,不允许输入空值。语法:ALTER TABLE table_name ADD 属性名属性类型NOT NULL;命令如下:修改的话:alter table table_name modify 属性名 属性类型 not null;2、
练习二 表的查看、修改和删除
一、表结构的修改
1、为student表格增加籍贯列jiguan,数据类型varchar,字段宽度为20字节,不允许输入空值。
语法:ALTER TABLE table_name ADD 属性名 属性类型 NOT NULL;
命令如下:

修改的话:alter table table_name modify 属性名 属性类型 not null;
2、重命名student表的籍贯列“jiguan”为“jg”。
语法:ALTER TABLE table_name CHANGE 旧属性名 新属性名 旧数据类型;
命令如下;

3、删除student表中的jg字段。
语法:ALTER TABLE table_name DROP 属性名;
命令如下:

4、将student表中的sdept字段长度改为20
语法:ALTER TABLE table_name MODIFY 属性名 数据类型;
--数据类型为修改后的数据类型
命令如下:

5、在sno字段上为Student表设置主键。
语法:ALTER TABLE table_name ADD PRIMARY key 属性名;
命令如下:


6、在Cno字段上为Course表设置主键。
命令如下:

7、为SC表的Sno和Cno设置外键。
命令如下:
首先显示一下三个表:

添加外键的操作:

添加外键之后的sc表:


字段Sno和字段Cno的key位置上出现了MUL的字样
8、删除键(如有外键的话,要先删除外键,再删除主键)
一、如何删除外键?
分布删除外键:
第一步:先删除外键:
alter table table_name drop foreign key 外键名;
第二步:再删除索引:
alter table table_name drop index 外键名;

/*但是注意一点:MySQL不支持直接删除外键:alter table table_name drop constraint 外键名;*/
我发现alter table table_name drop constraint 外键名;和alter table table_name drop foreign key 外键名;起到的作用是一样的

And

------------------------------------其实到这一步就已经删除外键了(如果再次添加外键也是可以的)
如果要完全删除这个键的话就需要
alter table table_name drop index 外键名;

而且我查看sc表上的Key发现就没有MUL

关于删除外键约束需要注意的几点
* 从表的外键通常为主表的主键(就像这里的sc表的Sno是student的主键、Cno是course的主键)
* 从表里外键的数据类型必须与主表中主键的数据类型一致
* 主表发生变化时应注意主表与从表的数据的一致性问题
- 如何删除主键?
alter table table_name drop primary key;//因为主键唯一所以删除的对象是表格
对于有自定义名字的主键:
添加主键:alter table table_name add constraint p_pk primary key(Sname);//其中p_pk是这个主键的名字,就像外键一样。
删除主键:alter table table_name drop constraint p_pk;
二、数据操作
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('20180101','李勇');
命令如下:

|
Sno |
Cno |
Degree |
|
20180101 |
C01 |
92 |
|
20180101 |
C02 |
85 |
|
20180101 |
C03 |
88 |
|
20180201 |
C02 |
90 |
|
20180201 |
C03 |
80 |
|
20180301 |
C01 |
89 |
|
20180301 |
C02 |
87 |
|
20180202 |
C01 |
87 |
课程关系表Course 成绩表SC
|
Cno |
Cname |
|
C01 |
数据库 |
|
C02 |
数学 |
|
C03 |
信息系统 |
|
C04 |
操作系统 |
命令如下:
课程关系表Course:

成绩表:
刚开始我发现初始的decimal精度太小,输入的值会越界
![]()
然后我对Degree的精度作了一些修改:

就可以正常的输入了

2、使用update命令将SC表C02课程的Degree字段值全部加5分。
命令如下:

3、删除SC表中C02课程的全部记录。
命令如下:

4、查看SC表格中所有数据。
命令如下:

- 思考题
1、MySQL的数据库文件有几种?扩展名分别是什么?
种类有很多,这里我找到一篇blog介绍数据库文件,很详细
MySQL数据库文件 - DB-Engineer - 博客园 (cnblogs.com)

2、如何实现数据库的备份和还原?
教你如何进行数据库的备份与恢复_zimao_的博客-CSDN博客_数据库备份与恢复
3、在定义基本表语句时,NOT NULL参数的作用是什么?
该属性的值不可以为空值
4、主码可以建立在“值可以为NULL”的列上吗?
不可以
更多推荐


所有评论(0)