任务描述
本关任务:创建表,并且添加主键约束。
相关知识
主键,是表中一列或者多列的组合,主键约束( Primary Key Constraint )要求主键列的数据唯一,并且不允许为空。主键能够唯一的标识表中的每一条记录,可以结合外键,来定义与不同数据表之间的关系。 怎么理解主键呢?我们知道数据库中的表可以存放很多数据,如果把表中的每一条数据比作一个人的话,那么表的主键就可以看做是人的身份证。
为了完成本关任务,你需要掌握:怎么给表中的字段添加主键约束。
添加主键约束
有两种方式可以添加主键约束:1.在定义列的同时指定主键,2.在定义完字段之后,再指定主键。
(1) 在定义列的同时指定主键:
(2) 在定义完所有列之后,指定主键。
多字段联合主键
在开发中,还有一种情况很常见,就是将几个字段联合在一起作为主键,那这个在代码中怎么实现呢? 举个例子,我们将员工的名字和部门 ID 联合起来作为主键:
CREATE TABLE t_emp2
(
name VARCHAR(32),
deptId INT,
salary FLOAT,
PRIMARY KEY(name,deptId)
)
语句执行后,会将 name 和 deptId 字段组合成为表 t_emp2 的多字段组合主键。
编程要求
在数据库 MyDb 中,创建两张表 t_user1 , t_user2 ,表结构如下,请为两张表分别创建主键约束, t_user1 的主键为 userId , t_user2 的主键为联合主键,将字段 name 和 phone 作为 t_user2 的联合主键。
表t_user1
字段名 | 数据类型 | 备注 |
---|---|---|
userId | INT | 用户ID |
name | VARCHAR(32) | 用户名 |
password | VARCHAR(32) | 密码 |
phone | VARCHAR(11) | 电话号码 |
VARCHAR(32) | 邮箱 |
表t_user2
字段名 | 数据类型 | 备注 |
---|---|---|
name | VARCHAR(32) | 用户名 |
phone | VARCHAR(11) | 电话号码 |
VARCHAR(32) | 邮箱 |
测试说明
点击评测之后,平台会查看你的两张表是否按照要求创建成功。若成功,则会输出如图结果;否则,输出报错信息,详细输出请查看右侧测试集。
提示:
连接数据库: sqlcmd -S localhost -U sa -P '<123123Aa!@>'
删除表: drop table 表名
我还想让你知道的知识:
如果我们创建表的时候,发现字段类型设置错了想修改,应该怎么做呢?
ALTER TABLE t_user1 ALTER COLUMN phone VARCHAR(11)
该语句可以将 t_user1 表的 phone 字段的字段类型和长度修改为: varchar(11) 。
开始你的任务吧,祝你成功!
实验代码