数据库原理 头歌实训 数据定义/数据操纵语言

本文是一系列关于DML语言使用的任务,涉及向表中插入数据、更新指定字段、删除记录、创建新表以及修改表结构等操作。例如,如何为student表插入数据、更新所有学生总学分、删除特定记录、创建与student表结构相同的s1表,以及在course表上添加唯一性约束uk_cno。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DML语言的使用

第1关:插入数据

任务描述

本关任务:为教学数据库中表插入规定的数据。

相关知识

为了完成本关任务,你需要掌握:如何为表一次性插入一条记录。

为表的所有字段插入数据

向表中插入数据最简单的方法就是使用 INSERT 语句。 INSERT 语句需要你声明要插入内容的表 (table) 名和内容 (values)

 
  1. 语法规则:INSERT INTO 表名 (字段名) VALUES (内容);

为表的指定字段插入数据

有的时候,我们并不想往某个字段内插入完完整整的值,或者说,有的时候我们并没有完整的数据可以整整齐齐插入某个字段。这时候就需要我们只为指定好的字段插入数据了,其他的我们都不用管。换句话说,就是: 为表的指定字段插入数据,就是在 INSERT 中只向部分插入值,而其他字段的值为表定义时的默认值。

编程要求

根据提示,在右侧编辑器 Begin-End 处补充代码:

在 student 表中插入一条数据

 
  1. ('11111','马明','计算机','01','女','2000/01/02',null)

测试说明

编写代码后,点击测评即可。

代码如下:

insert into student  values ('11111','马明','计算机','01','女','2000/01/02',null);

第2关:更新数据1

任务描述

本关任务:将 student 表中所有学生的总学分加2,空值记录也参加计算。

相关知识

为了完成本关任务,你需要掌握:如何使用 update 来修改已有的数据。

更新表中指定的内容

通过上一关的学习,我们已经掌握了 INSERT 操作!同样,UPDATE 操作也很简单,只要记住 UPDATE 语句三要素就能轻松掌握,它们分别是:

  • 需要更新的表(table)名

  • 需要更新的字段(column)名和它的新内容(value)

  • 决定更新哪一条内容(value)过滤条件

语法规则为: UPDATE 表名 SET 字段名1 = 内容1, 字段名2 = 内容2, 字段名3 = 内容3 WHERE 过滤条件; 。

编程要求

根据提示,在右侧编辑器 Begin-End 处补充代码:

  • 将 student 表中所有学生的总学分加2,空值记录也参加计算。

测试说明

编写代码后,点击测评即可。

代码如下:update student set totalcredit=totalcredit+2;

第3关:更新数据2

任务描述

本关任务:将 student 表中马小燕的出生日期修改为’2000-01-22’。

相关知识

见上一关

编程要求

根据提示,在右侧编辑器补充代码,将 student 表中马小燕的出生日期修改为’2000-01-22’。

测试说明

编写代码后,点击测评即可。

代码如下:

 update student set birthday='2000-01-22'

   where sno='96001';

第4关:删除数据1

任务描述

本关任务:删除student表中的数据

相关知识

为了完成本关任务,你需要掌握:如何删除指定行的数据。

删除表中的指定行

从数据表中删除数据内容需要使用 DELETE 语句,它需要 WHERE 语句来配合它来指定我们究竟应该删除哪些数据内容。

语法规则为: DELETE FROM 表名 WHERE 条件语句; 。

我们可以指定删除某一行的数据内容,当然,我们还可以指定删除很多行的数据内容,区别就在于条件语句。那么在接下来的例子里,我们来看看很多行内容是怎么删除的。

删除表中的所有行

删除表中的所有行就更简单了。如果需要删除表中所有的行,只需要省略 WHERE 语句即可。

语法规则为: DELETE FROM 表名; 。

编程要求

根据提示,在右侧编辑器Begin-End处补充代码:

  • 删除 student 表中学号为'11111'的记录。

测试说明

编写代码后,点击测评即可。

代码如下:delete from student where sno='11111';

第5关:创建表-使用子查询

任务描述

本关任务:利用 student 表创建表 s1,s1 的结构与内容与 student 表完全相同。

相关知识

为了完成本关任务,你需要掌握:使用 select 查询结果创建新表

Create tabale as select的三种方式

示例如下: 创建一个表结构与 tabale2一模一样的表,只复制结构不复制数据;

 
  1. create table table1 as select * from table2 where 1=2;

创建一个表结构与 table2一模一样的表,复制结构同时也复制数据;

 
  1. create table table1 as select * from table2 ;

创建一个表结构与 table2一模一样的表,复制结构同时也复制数据;

 
  1. create table table1(columns1,columns2) as
  2. select columns1,columns2 from table2;

编程要求

利用 student 表创建表 s1,s1 的结构与内容与 student 表完全相同。

代码如下: create view s1 as select * from student;

第6关:删除数据2

任务描述

本关任务:删除学生表 s1 中计算机系学生信息。

相关知识

见第4关

编程要求

删除学生表 s1 中计算机系学生信息。

测试说明

编写代码后,点击测评即可。

代码如下:

 delete

 from s1

  where sdept='计算机';

第7关:删除数据表

任务描述

本关任务:删除 s1 表。

相关知识

drop table <表名>

编程要求

删除 s1 表。

测试说明

编写代码后,点击测评即可。

代码如下:  drop table s1;

DDL语言的使用

第1关:创建数据库

任务描述

本关任务:创建一个名为 teachingdb 的教学数据库。

相关知识

create database <数据库名>

编程要求

在右侧窗口编写 SQL,并创建一个名为 teachingdb 的教学数据库。

连接数据库的用户名为:root,密码为:123123

请注意:数据库名区分大小写。

teachingdb 的教学数据库共有四张表,所有实验项目都在此基础上完成,参考建表语句如下: -- 创建学生表的SQL; CREATE TABLE student( sno CHAR(5) PRIMARY KEY, sname VARCHAR(20) NOT NULL, sdept VARCHAR(20) NOT NULL, sclass CHAR(2) NOT NULL, ssex CHAR(1) , birthday DATE, totalcredit DECIMAL(4,1) );

-- 创建课程表的SQL; CREATE TABLE course( cno CHAR(3) PRIMARY KEY, cname VARCHAR(50), ctime DECIMAL(3,0), credit DECIMAL(3,1) );

-- 创建教师表的SQL; CREATE TABLE teach( tno CHAR(6) PRIMARY KEY, tname VARCHAR(20), tsex CHAR(1), tdept VARCHAR(20) );

-- 创建成绩表的SQL; CREATE TABLE score ( sno CHAR(5), cno CHAR(3), tno CHAR(6), grade DECIMAL(5,1), PRIMARY KEY(sno,cno,tno), CONSTRAINT fk_sno FOREIGN KEY(sno) REFERENCES student(sno), CONSTRAINT fk_cno FOREIGN KEY(cno) REFERENCES course(cno), CONSTRAINT fk_tno FOREIGN KEY(tno) REFERENCES teach(tno) );

代码如下: create database teachingdb;

第2关: 创建数据表

任务描述

本关任务:在 teachingdb 中创建学生表的 student;

相关知识

创建表的规则:

 
  1. CREATE TABLE 表名
  2. (
  3. 字段名 数据类型 约束,
  4. 字段名 数据类型 约束,
  5. .....
  6. )

添加主键约束

有两种方式可以添加主键约束: 1.在定义列的同时指定主键; 2.在定义完字段之后再指定主键。

编程要求

在右侧窗口中操作,teachingdb;表结构分别如下:

--学生情况表 student

字段名称数据类型约束
snochar(5)PRIMARY KEY
snamevarchar(20)NOT NULL
sdeptvarchar(20)NOT NULL
sclasschar(2)NOT NULL
ssexchar(1)
birthdayDATE
totalcreditdecimal(4,1)

测试说明

编写代码后,点击测评即可。

代码如下:

create table student

  (

     sno char(5)  PRIMARY KEY,

     sname  varchar(20) NOT NULL,

     sdept  varchar(20) NOT NULL,

     sclass char(2)  NOT NULL,

     ssex   char(1),

     birthday  DATE,

     totalcredit  decimal(4,1)  

  );

第3关:添加字段

任务描述

本关任务: 在 student 表中增加籍贯字段:nativeplace varchar(20)。

相关知识

为了完成本关任务,你需要掌握: 1.如何在指定位置添加新的字段, 2.如何删除指定的字段。

添加字段

因为甲方的业务需求是不停变化的,所以在数据库操作中,添加字段可是常有的事。一个完整的字段包括:字段名数据类型完整性约束

语法规则为: ALTER TABLE 表名 ADD 新字段名 数据类型 [约束条件] [FIRST|AFTER] 已存在字段名; 。

以下是在 MySQL 中常用的约束。

NOT NULL 约束:确保某列不能有 NULL 值。

DEFAULT 约束:当某列没有指定值时,为该列提供默认值。

UNIQUE 约束:确保某列中的所有值是不同的。

PRIMARY Key 约束:唯一标识数据库表中的各行/记录。

CHECK 约束:CHECK 约束确保某列中的所有值满足一定条件。

在表的最后一列添加字段

只要不做 [FIRST|AFTER] 的位置说明,在添加字段时 MySQL 会默认把新字段加入到表的最后一列。

删除字段

有添加的需求就会有删除的需求。删除一个字段就是将数据表中的某个字段从表中移除。

编程要求

根据提示,在右侧编辑器补充代码:

在 student 表中增加籍贯字段:nativeplace varchar(20)。

测试说明

编写代码后,点击测评即可。

代码如下:  alter table student add nativeplace varchar(20);

第4关:删除字段

任务描述

本关任务:删除 student 表中籍贯字段。

相关知识

见上一关

编程要求

根据提示,在右侧编辑器补充代码,删除 student 表中籍贯字段。

测试说明

开始你的任务吧,祝你成功!

代码如下:alter table student drop column nativeplace;

第5关:修改字段

任务描述

本关任务:将 student 表中的 ssex 字段定义改为 varchar(3) 。

相关知识

为了完成本关任务,你需要掌握:1.如何修改字段名;2.如何修改字段的数据类型。

修改字段名

有时,在我们建好一张表后会突然发现,哎呀!字段名貌似写错了!怎么办?要删了表再重新建一个新表吗?还是要删了这个字段再新建一个新的字段? 都不用,MySQL 中修改字段名称也有专门的语句,接近于自然语言,很好记忆。

语法规则为: ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型; 。

修改字段数据类型

随着存储的数据越来越多,数据库新人可能会发现,哎呀,当初预留的数据类型已经不能满足要求了,或者当初预留的字符太少了,怎么办?怎么修改?规则来了。

语法规则为: ALTER TABLE 表名 MODIFY 字段名 数据类型; 。

编程要求

根据提示,在右侧编辑器补充代码:

将 student 表中的 ssex 字段定义改为 varchar(3) 。

测试说明

编写代码后,点击测评即可。

代码如下: alter table student modify ssex   varchar(3);

第6关:添加唯一性约束

任务描述

本关任务:在 course 表中 cname 上添加唯一性约束 uk_cno。

相关知识

为了完成本关任务,你需要掌握: 1.什么是唯一性约束; 2.如何在修改表时添加唯一性约束。

唯一性约束定义

  • 唯一约束(Unique Key)是指所有记录中字段的值不能重复出现。

  • 唯一约束与主键约束相似的是它们都可以确保列的唯一性。

  • 唯一约束与主键的区别: 唯一约束在一个表中可有多个,并且设置唯一约束的列允许有空值,但是只能有一个空值。 而主键约束在一个表中只能有一个,且不允许有空值。

添加唯一性约束

语法规则为:ALTER TABLE <数据表名> ADD CONSTRAINT <唯一约束名> UNIQUE(<列名>)

编程要求

根据提示,在右侧编辑器补充代码,在 course 表中 cname 上添加唯一性约束 uk_cno。

测试说明

编写代码后,点击测评即可。

代码如下:alter table course add constraint uk_cno unique (cname);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值