实验3 表结构的修改与表内容的基本操作

实验3 表结构的修改与表内容的基本操作
#一、实验目的
掌握表结构的修改;表数据的插入、修改和删除等基本操作。
#二、实验课时
本实验2学时。
#三、实验准备
在图形化工具(SQLyog或Navicat)里打开文件“Teach数据库及表结构.sql”,执行所有的命令,生成完整的Teach数据库及表结构。
#四、实验内容

  1. 修改表结构
    命令格式:
    ALTER TABLE <表名>
    ADD COLUMN <新列名> <类型> [DEFAULT <默认值>] [列级约束] [FIRST | AFTER 列名]
    |DROP COLUMN <原列名> --删除1列
    |DROP COLUMN <原列名1>,DROP COLUMN <原列名2>,…… --删除多列
    | MODIFY COLUMN <原列名> <新类型> [DEFAULT <默认值>] [列级约束] [FIRST | AFTER 列名] –主要修改列类型
    | CHANGE COLUMN <原列名> <新列名> <新类型> [DEFAULT <默认值>] [列级约束] [FIRST | AFTER 列名] --主要修改列名,也可以修改列类型
    | ALTER COLUMN <原列名> [SET DEFAULT <默认值> | DROP DEFAULT] –修改或删除指定列的默认值
    | RENAME [TO] <新表名> --修改表名

注:
(1)所有COLUMN都是可加可不加;
(2)ADD COLUMN 短语为增加列,并可指明列的列名、类型、默认值、约束和位置(第1列或是某列的后面,默认是最后一列)等信息,注意位置信息一定在最后。
(3)DROP COLUMN <列名> 短语为删除列,删除几列就写几个drop column短语。
(4)MODIFY COLUMN <列名> <新类型> [DEFAULT <默认值>] [列级约束] [FRIST | AFTER 列名]
该短语的主要功能是修改列的类型,但不可以修改列名。另外也可以修改(或增加)列的约束、默认值,并可以通过FRIST或AFTER更改列的表中的位置。
(5)CHANGE COLUMN <原列名> <新列名> <类型> [DEFAULT <默认值>] [列级约束] [FRIST | AFTER 列名]
该短语的主要功能是修改列名,也可以修改列类型、约束、默认值,并可以通过FRIST或AFTER更改列的表中的位置。无论列的类型是否修改,都必须带着列类型。
(6)ALTER COLUMN <列名> [SET DEFAULT <默认值> | DROP DEFAULT]
该短语的功能是修改或删除指定列的默认值。
(7)RENAME TO <表名>
该短语的功能是对表重命名,等价于语句 RENAME TABLE <原表名> TO <新表名> 命令。

实验任务1:做课本上的例3-10到例3-15,把结果截图。

  1. 修改表约束
    命令格式:
    ALTER TABLE <表名>
    | DROP INDEX <列名> --删除该列上的unique约束
    | MODIFY <列名> <列类型> UNIQUE|NULL|NOT NULL --为该列增加unique、空值、非空值等约束
    | DROP PRIMARY KEY --删除主码约束
    | MODIFY <列名> <列类型> PRIMARY KEY --为某列添加主码约束1(主码为单属性时可用)
    | ADD PRIMARY KEY(列名1,列名2,……) – 为表添加主码约束2(主码为单或多属性时均可
    使用),不能加constraint短语为约束起名
    | DROP FOREIGN KEY 外码约束名 --删除外码约束
    | ADD [CONSTRAINT 外码约束名] FOREIGN KEY (外码列) REFERENCES 主表名(主码)
    –添加外码约束

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注:
(1)唯一约束的标志是 UNI,主码约束标志是PRI,外码约束标志是MUL
(2)对于外码约束名,最好在创建或添加时用CONSTRAINT短语给外码约束起名,如果不起名,系统会给出默认的名字,可通过 SHOW CREATE TABLE <表名> 命令查看默认的约束名。
(3)在创建外码约束时,会同时创建同名的索引,因此在删除外码约束时,索引不会同时删除掉,所以MUL的标志依然存在。如果想删除这个MUL标志,必须删除同名的索引。
(4)ALTER后面的几个功能短语可以同时使用,中间用逗号分隔开。

实验任务2:做课本上的例3-16到例3-23,把结果截图。

  1. 查看表记录
    命令格式:SELECT 属性名1,属性名2,…… FROM <表名>
    当查看所有属性值时,可用*来代替属性名列表。
    示例:
    /查看student表中的记录/
    select * from department;
    select sno,sname from student;

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 插入表记录
    命令格式:INSERT [INTO] <表名> [(属性名1,属性名2,…)]
    VALUES(值1,值2,…) [,(值1,值2,…),…]
    或者:
    INSERT [INTO] <表名> SET 属性名1=值1,属性名2=值2,…
    注:
    (1)VALUES短语后面的值的个数、类型和顺序一定要与表名后面的属性名的个数、类型和顺序一致
    (2)若要插入所有属性的值,则表名后的属性名可省略。
    (3)插入数据时,主码和不允许为空的属性列一定要有值(可以给出值或采用默认值),否则出错。
    (4)使用VALUES短语可以一次插入多条记录。
    (5)使用SET短语插入记录时,后面的字段可以不按表中字段的顺序插入数据,可以避免记不住字段的顺序出现插入错误的情况。

实验任务3:参照课本上的例3-25到例3-27,依据表2-3到表2-8,将数据分别插入到Teach数据库的六个表中,可尝试两种插入方法都使用。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  1. 修改表记录
    命令格式:UPDATE 表名 SET 属性名1=值1 [,属性名2=值2] [,…]
    [WHERE<条件>] [ORDER BY <列名> [desc] LIMIT n]
    注:
    (1)当WHERE<条件>省略时,表示更新指定列的所有行的值。
    (2)ORDER BY <列名> LIMIT n 短语是在将所有满足条件的记录排序(默认是升序),然后只修改前n条。
    实验任务4:做课本上的例3-28到例3-32,把结果截图。

  2. 删除表记录
    命令格式:DELETE [FROM] 表名 [WHERE<条件>] [ORDER BY <列名> [desc] LIMIT n]
    功能:删除满足WHERE条件的记录
    注:
    (1)当WHERE<条件>省略时,表示删除所有记录。
    (2)ORDER BY <列名> LIMIT n 短语是将所有满足条件的记录排序(默认是升序),然后只删除前n条。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

实验任务4:做课本上的例3-33到例3-37,把结果截图。
在这里插入图片描述

实验任务5:判断以下操作是否能操作成功,如果能,写出操作的SQL语句并执行,如果不能,请说明原因。
(1)向TC表中插入任课记录(‘T3’,‘C6’,‘2020-1’)。
(2)向SC表中插入记录(‘S1’,‘C4’,93)。
(3)修改TEACHER表中T6的教师姓名为“张三”。
(4)修改TEACHER表中T6的教师编号为“T8”。
(5)删除TEACHER表中T6的教师记录。
(6)删除TC表中T6教师的所有任课记录。

四、实验过程
将以上实验内容的过程及结果截图写在该部分。
五、实验总结
说明实验中遇到的问题及解决方法。

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,顺序是一种线性数据结构,它的元素排列在连续的一段内存空间中。下面是顺序基本操作: 1. 初始化操作:创建一个空的顺序。 2. 插入操作:在顺序的任意位置插入一个元素。 3. 删除操作:从顺序中删除一个元素。 4. 查找操作:在顺序中查找指定的元素。 5. 修改操作修改顺序中指定位置的元素。 6. 遍历操作:依次访问顺序中的每个元素。 下面具体介绍这些操作的实现方法: 1. 初始化操作:创建一个空的顺序 ```python def init_list(): return [] ``` 2. 插入操作:在顺序的任意位置插入一个元素 ```python def insert_list(lst, index, value): if index < 0 or index > len(lst): print("Error: The index is out of range!") return False lst.insert(index, value) return True ``` 3. 删除操作:从顺序中删除一个元素 ```python def delete_list(lst, index): if index < 0 or index >= len(lst): print("Error: The index is out of range!") return False lst.pop(index) return True ``` 4. 查找操作:在顺序中查找指定的元素 ```python def search_list(lst, value): for i in range(len(lst)): if lst[i] == value: return i return -1 ``` 5. 修改操作修改顺序中指定位置的元素 ```python def modify_list(lst, index, value): if index < 0 or index >= len(lst): print("Error: The index is out of range!") return False lst[index] = value return True ``` 6. 遍历操作:依次访问顺序中的每个元素 ```python def traverse_list(lst): for i in range(len(lst)): print(lst[i]) ``` 以上是顺序基本操作实现方法。需要注意的是,在进行插入和删除操作时,需要先判断操作的位置是否合法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值