SQL Server 数据库操作复习总结(基于 esa 数据库练习)
本总结涵盖:表结构的创建(DDL)、数据的插入与修改(DML)、备份表、查看表结构等核心知识点。
一、 数据库定义语言(DDL):创建表结构
1. 核心语法
CREATETABLE表名(字段名 数据类型 约束,...);2. 数据类型对应关系(根据题目图片)
| 图中类型 | SQL Server 类型 | 备注说明 |
|---|---|---|
| 文本型 | VARCHAR(n) | n为宽度,如VARCHAR(8) |
| 日期型 | DATE | 如DATE |
| 整型 | INT | 如INT |
| 浮点型 | DECIMAL(4,1) | 宽度4,小数1位 |
| varbinary | VARBINARY(MAX) | 用于存储图片等二进制数据 |
3. 约束条件(保证数据完整性)
- 主键(PRIMARY KEY):唯一标识行,不允许重复且非空。
- 单列主键:如
学号 VARCHAR(8) PRIMARY KEY。 - 复合主键(联合主键):多列共同组成唯一标识,如成绩单表的
PRIMARY KEY (学号, 课程号)。
- 单列主键:如
- 外键(FOREIGN KEY … REFERENCES):用于建立表与表之间的联系,强制实施“参照完整性”。
- 建表顺序:必须先建主表(父表:学院),再建子表(专业、学生、课程),最后建关联表(成绩单)。否则会报错。
- 非空约束(NOT NULL):禁止填入空值(如姓名、生日字段)。
- 空值约束(NULL):允许填入空值(如院长、简历、登记照字段)。
二、 数据操纵语言(DML):插入数据
1. 核心语法
INSERTINTO表名(列1,列2,...)VALUES(值1,值2,...);2. 实操注意点
- 插入顺序:必须遵循外键依赖顺序(先插学院、专业,再插学生、课程,最后插成绩单)。
- 日期格式:标准格式为
'YYYY-MM-DD'(如'1987-04-19')。 - 空值处理:参考数据中没有提供的字段(如简历、登记照),直接写
NULL。 - 批量插入:可使用
INSERT INTO 表 VALUES (值1), (值2), (值3);一次性插入多行数据。
三、 数据操纵语言(DML):备份、删除与更新
1. 备份表(复制结构和数据)
-- 核心语法SELECT*INTO新表名FROM原表名;-- 实例:备份学生表SELECT*INTO学生备份FROM学生;⚠️ 易错点:这种方法不会自动复制原表的主键、外键和索引,仅复制表结构和数据。
2. 删除数据
-- 核心语法DELETEFROM表名WHERE条件;-- 实例:删除备份表中专业为0501的学生DELETEFROM学生备份WHERE专业号='0501';⚠️ 警告:不加
WHERE条件会清空整张表数据!
3. 修改(更新)数据
-- 核心语法UPDATE表名SET列名=新值WHERE条件;-- 实例:将备份表性别为男的学生,民族修改为汉UPDATE学生备份SET民族='汉'WHERE性别='男';💡 重要提示:对“备份表”进行的删除、更新操作,完全不影响原始“学生表”。
四、 查看表结构(元数据查询)
1. 使用 T-SQL 命令
查看单表详细结构(包含主键、索引、外键):
EXECsp_help'表名';查看所有表的字段结构(拼接信息架构视图):
SELECTTABLE_NAME,COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,IS_NULLABLEFROMINFORMATION_SCHEMA.COLUMNSORDERBYTABLE_NAME,ORDINAL_POSITION;查看所有外键关系:
SELECTfk.nameAS外键约束名,OBJECT_NAME(fk.parent_object_id)AS子表名称,OBJECT_NAME(fk.referenced_object_id)AS父表(参照表)名称FROMsys.foreign_keys fk;
2. 使用图形界面(SSMS)
- 左侧“对象资源管理器” -> 展开“表” -> 展开“列”。
- 右键数据库 -> “新建数据库关系图” -> 添加表,可直观查看外键连线。
五、 核心考点与易错点总结
- 区分 DDL 和 DML:建表、改表结构是 DDL;增、删、改、查数据是 DML。
- 外键的连环关系:子表的数据不能凭空产生,必须依赖于主表中已有的主键值。
- 备份表的独立性:备份表是独立的新表。
- WHERE 子句的“安全带”:
UPDATE和DELETE如果不加WHERE就是灾难性的全表操作。 - Access 与 SQL Server 术语转换:如果在 Access 中操作,文本型对应“短文本”,日期型对应“日期/时间”,VARBINARY 对应“OLE 对象”,整型对应“数字/长整型”,浮点型对应“数字/单精度型”。