数据库3:主键约束(头歌云课)


任务描述

本关任务:创建表,并且添加主键约束。

相关知识

主键,是表中一列或者多列的组合,主键约束( 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

字段名数据类型备注
userIdINT用户ID
nameVARCHAR(32)用户名
passwordVARCHAR(32)密码
phoneVARCHAR(11)电话号码
emailVARCHAR(32)邮箱

表t_user2

字段名数据类型备注
nameVARCHAR(32)用户名
phoneVARCHAR(11)电话号码
emailVARCHAR(32)邮箱

测试说明

点击评测之后,平台会查看你的两张表是否按照要求创建成功。若成功,则会输出如图结果;否则,输出报错信息,详细输出请查看右侧测试集。

提示:

连接数据库: sqlcmd -S localhost -U sa -P '<123123Aa!@>'

删除表: drop table 表名

我还想让你知道的知识:

如果我们创建表的时候,发现字段类型设置错了想修改,应该怎么做呢?

ALTER TABLE t_user1 ALTER COLUMN phone VARCHAR(11)

该语句可以将 t_user1 表的 phone 字段的字段类型和长度修改为: varchar(11) 。


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

实验代码

一、单项选择题 (只有一个正确答案) 【1】 执行语句"SELECT '2008-01-20'+ INTERVAL 2 DAY; "结果为 A: 2008-01-22 B: 2010-01-20 C: 2008-02-11 D: 2008-03-20 答案: A 【2】 下列哪个是不正确的MySQL的变量命名方式 A: _name B: n$ame C: name D: name! 答案: D 【3】 字符串'hel'lo'输出结果为 A: hel'lo B: 'hello' C: hel\'lo D: 'hel lo' 答案: A 【4】 关系数据库模型是以下哪种方式组织数据结构 A: 树状 B: 文本 C: 二维表 D: 网状 答案: C 【5】 使用下列哪个语句可以删除表中所有数据,但保留表结构 A: truncate table B: rename table C: delete D: drop talbe 答案: A 【6】 E-R图设计属于( )。 A: 概念结构设计 B: 物理结构设计 C: 逻辑结构设计 D: 需求分析设计 答案: B 【7】 执行语句"GREATEST(10,9,128,1)"结果为( )。 A: 9 B: 10 C: 128 D: 1 答案: C 【8】 在一个关系中,若有这样一个属性存在,它的值能唯一地标识关系中的每一个元组,则 称这个属性为 A: 数据项 B: 候选码 C: 主键 D: 主键值 答案: C 【9】 数据库管理系统能实现对数据库中数据的查询、插入、修改和删除等操作。这种功能称 为( )。 A: 数据控制功能 B: 数据操纵功能 C: 数据管理功能 D: 数据定义功能 答案: B 【10】 1999年10月1日在mysql中表示方法错误的是: A: "1999-10-01" B: "1999%10%01" C: "1999\10\01" D: "1999/10/01" 答案: D 【11】 两个表中的行按照给定的条件进行拼接而形成新表的运算为 A: 连接 B: 投影 C: 集合 D: 选择 答案: A 【12】 向表中插入一个行新的纪录的命令为 A: replace into B: insert into C: replace from D: insert from 答案: B 【13】 \n在MySQL中表示 A: " B: 退格符 C: 回车符 D: 换行符 答案: D 【14】 执行语句"SELECT '5' = '5ab';"结果为 A: 0 B: NULL C: False D: 1 答案: A 【15】 显示所有错误的命令 A: show variables B: show warrings C: show errors D: show databases 答案: C 【16】 下列哪项不属于数据库模型的: A: 逻辑 B: 网状 C: 关系 D: 层次 答案: A 【17】 修改数据库的命令为: A: alter database B: Create database C: use database D: drop database 答案: A 【18】 创建表的命令为: A: Create table B: alter table C: drop table D: rename table 答案: A 【19】 删除表的命令为( )。 A: alter table B: drop table C: rename table D: Create table 答案: B 【20】 求查询结果的和的函数为 A: COUNT() B: MIN C: SUM D: MAX 答案: C 【21】 在关系数据库中一个关系是指 A: 一个二维表 B: 表中的一列 C: 表中的一行 D: 表中列的取值围 答案: A 【22】 数据库管理系统的简称为( )。 A: DBMS B: MDBS C: DB D: DBA 答案: A 【23】 数据库表中的基本运算不包括( )。 A: 选择 B: 集合 C: 连接 D: 投影 答案: B 【24】 下列哪个语句指定查询目的 A: from B: select C: grup by D: where 答案: B 【25】 换行是下列哪个转义字符 A: \" B: \n C: \\ D: \' 答案: B 【26】 消除查询结果中重复纪录的关键字为 A: distinct B: having C: ALL D: limit 答案: A 【27】 创建数据库的命令为( )。 A: use database B: Create database C: alter database D: drop database 答案: B 【28】 以下不是
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值