
SQL基础与约束详解:主键、外键与数据库管理
下载需积分: 10 | 112KB |
更新于2024-07-27
| 66 浏览量 | 举报
1
收藏
"这篇文档是关于SQL语句的经典集合,主要涵盖了主键、外键以及数据库约束的概念,适合SQL初学者和开发者学习。文档详细介绍了如何创建和管理数据库,包括创建与删除数据库、数据备份,以及如何构建带有各种约束的新表。"
在SQL语言中,约束是用于确保数据完整性和一致性的重要工具。SQL Server提供了五种主要的约束类型:
1. 主键约束(PrimaryKeyConstraint):主键是表中的一个或一组字段,其值唯一且不可为空,用来标识表中的每一行。例如,在创建表时,可以指定某个字段为主键,如下所示:
```sql
CREATE TABLE table_name (
id INT PRIMARY KEY,
...
)
```
2. 外键约束(ForeignKeyConstraint):外键用于建立两个表之间的关联,确保参照完整性。外键是引用另一个表的主键。例如:
```sql
CREATE TABLE child_table (
child_id INT PRIMARY KEY,
parent_id INT,
FOREIGN KEY (parent_id) REFERENCES parent_table(parent_id)
)
```
3. 惟一性约束(UniqueConstraint):确保表中某列的值是唯一的,但可以为空。例如:
```sql
CREATE TABLE table_name (
unique_col VARCHAR(255) UNIQUE,
...
)
```
4. 检查约束(Check Constraint):限制字段值必须满足的特定条件。例如,确保年龄在18到55之间:
```sql
CREATE TABLE table_name (
age INT CHECK (age >= 18 AND age <= 55),
...
)
```
5. 缺省约束(DefaultConstraint):当未提供值时,字段将自动设置为预设值。例如,性别默认为'男':
```sql
CREATE TABLE table_name (
gender CHAR(1) DEFAULT '男',
...
)
```
除了约束,文档还提到了基本的数据库操作:
- 创建数据库:`CREATE DATABASE database_name`
- 删除数据库:`DROP DATABASE db_name`
- 备份数据库:首先定义备份设备,如`EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'`,然后执行备份命令,如`BACKUP DATABASE pubs TO testBack`
此外,创建新表时,可以同时定义列的属性,如是否允许为空、是否为主键等,例如:
```sql
CREATE TABLE table_ok (
col1 INT,
col2_notnull INT NOT NULL,
col3_default NCHAR(1) NOT NULL DEFAULT '男',
col4_default DATETIME NOT NULL DEFAULT GETDATE(),
col5_check INT NOT NULL CHECK (col5_check >= 18 AND col5_check <= 55),
col6_check NCHAR(9) NOT NULL CHECK (col6_check LIKE 'msd0902[0-9][^6-9]'),
cola_primary NCHAR(5) NOT NULL PRIMARY KEY
)
```
这个例子中,`table_ok`表包含了不同类型的约束,如非空、默认值和检查约束。`cola_primary`字段被定义为主键。这些概念对于理解和操作SQL数据库至关重要。
相关推荐


















FCQ_never_regret
- 粉丝: 0
最新资源
- COD05实验平台:运动捕获与实时编程粒子系统融合
- 秦连科学术研究资料库主页展示
- TON dApp开发示例: TON Wallet插件使用与迁移指南
- Tutum平台GlusterFS集群的自动化部署指南
- React项目入门教程:创建与管理应用
- Docker实操培训:Java初学者入门指南
- 开发自定义Dock界面:DemoDock与SmartQuant实践指南
- Git初体验:新手上路,我的Github第一次
- VB制作远程桌面开启工具源码分享
- VB源码实现的代理服务器资源获取器
- docker-devel-env:实现快速、复制和移植的开发环境
- Discord Aequitas Guard机器人:交易监控与社区报告
- 使用Metalsmith打造个性化博客网站示例教程
- USURT数据科学课程核心教材解析
- 大学学术Java项目:面向对象与UML的实践
- 创建Couchbase集群的Docker容器指南
- GitHub Actions与Greenkeeper自动化Prettier代码格式更新指南
- React-Table与大数据集结合的入门指南
- Python实现凯撒替代密码及其应用案例
- DataSketches:Apache基金会下的高效数据草图技术
- 算法与动画结合:CrazyMinions小黄人游戏开发
- 基于Markdown的Sapper博客模板入门指南
- 以太坊协议纯Java实现ethereumj详解
- Counter Compliance服务器版本4开源实现指南