"这篇文档主要介绍了MySQL中的联合主键概念,并涵盖了数据库的基本操作、SQL语句的分类、数据类型、范式理论以及表约束。同时,给出了学生表、班级表和分数表的示例,强调了联合主键在确保数据完整性和一致性中的作用。"
在MySQL数据库中,联合主键是一个由两个或更多列组成的复合键,用于唯一标识表中的每一行。例如,在描述中提到的"Primary key(sno, cno)"就是一个联合主键,它由学号sno和课程号cno共同构成,确保了每条记录的唯一性。在设计数据库表结构时,当单一列无法满足唯一性要求时,可以使用联合主键。
数据库操作方面,可以通过以下命令进行基本的MySQL交互:
1. 登录数据库:`mysql –u用户名–p密码`
2. 执行SQL文件:`source.sql文件绝对路径`
3. 查看所有数据库:`Show databases;`
4. 创建数据库:`Create database 数据库名;`
5. 删除数据库:`Drop database 数据库名;`
6. 进入指定数据库:`Use 数据库名;`
7. 查看所有表:`Show tables;`
8. 查看表结构:`Desc 表名;`
9. 创建表:使用`Create table`语句,定义列及约束。
10. 删除表:`Drop table;`
11. 修改表:`Alter table;`
SQL语句主要分为三类:
1. DDL(Data Definition Language)数据定义语言,用于创建、修改和删除数据库对象如表、视图等。
2. DML(Data Manipulation Language)数据操纵语言,用于插入、更新、删除数据。
3. DCL(Data Control Language)数据控制语言,用于权限管理,如`grant`和`revoke`。
数据类型包括:
1. `Bigint`:长整型
2. `Varchar(int)`:可变长度字符型,括号内的int表示最大长度
3. `Double`:浮点型
4. `Date`:日期类型,如`current_date`
5. `Time`:时间类型,如`current_time`
6. `Timestamp`:时间戳类型,如`current_timestamp`
范式理论是数据库设计的基础,主要包括:
1. 第一范式(1NF):确保每一列都是不可再分的基本数据项,无重复数据。
2. 第二范式(2NF):在1NF的基础上,非主属性完全依赖于主键。
3. 第三范式(3NF):在2NF基础上,消除非主属性对主键的传递依赖。
表约束用于保证数据的完整性和一致性:
1. 主键(`primary key`):确保每行的唯一性,实现实体完整性。
2. 外键(`foreign key (FK)`):建立表间关系,实现参照完整性。
3. 唯一约束(`unique (UK)`):确保列中的值唯一。
4. 非空约束(`not null`):确保列的值不为空。
5. 检查约束(`check`):限制列的值必须满足特定条件。
根据描述,创建的数据库exam包含学生表、课程表和分数表,其中学生表的结构如下:
- 学号(sno,主键,唯一)
- 姓名(sname,字符型,非空)
- 地址(address,字符型)
- 出生日期(birthdate,日期型,非空,小于当前日期)
- 总分(total_score,浮点型)
- 班级编号(class_no,字符型,外键,参照班级表的班级编号)
班级表的结构如下:
- 班级编号(class_no,主键,唯一,非空)
- 班级名称(class_name,唯一,非空)
分数表的结构如下:
- 学号(sno)
- 课程号(cno)
- 分数(score)
最后,将建表语句保存到`.sql`文件中,通过源代码执行导入数据库。联合主键在这里的作用是确保学生和课程的组合具有唯一性,防止出现重复记录。