跳到主要内容

3 篇博文 含有标签「数据库」

数据库相关技术文章

查看所有标签

什么是数据定义语言DDL

· 阅读需 3 分钟
素明��诚
Full stack development

数据定义语言(Data Definition Language,简称DDL)是一组用于定义和管理数据库结构和对象的 SQL 语句。这些语句用于创建、修改和删除数据库中的各种对象,如数据库本身、表、索引、视图、存储过程和触发器等。DDL 主要用于描述数据库的模式(schema),即数据库的逻辑结构。

DDL 的主要操作​

创建(CREATE)用于创建新的数据库对象。​

创建数据库

CREATE DATABASE 数据库名;

创建表

CREATE TABLE 表名 (
列名1 数据类型 [约束],
列名2 数据类型 [约束],
...
);

修改(ALTER)用于修改现有的数据库对象。​

修改表结构添加、修改或删除列。

-- 添加列
ALTER TABLE 表名 ADD COLUMN 列名 数据类型;
​
-- 修改列
ALTER TABLE 表名 MODIFY COLUMN 列名 新数据类型;
​
-- 删除列
ALTER TABLE 表名 DROP COLUMN 列名;

删除(DROP)用于删除数据库对象。​

删除数据库

DROP DATABASE 数据库名;

删除表

DROP TABLE 表名;

重命名(RENAME)用于重命名数据库对象。​

重命名表

RENAME TABLE 旧表名 TO 新表名;

**截断(TRUNCATE)**用于快速删除表中的所有数据,但保留表结构。

TRUNCATE TABLE 表名;

DDL 的特点​

**自动提交,**DDL 语句在执行后会自动提交(Auto-Commit),无法通过事务回滚。因此,在执行 DDL 操作时需要格外谨慎。

影响数据库结构,DDL 直接影响数据库的结构和定义,而不仅仅是数据内容。

权限控制,执行 DDL 操作通常需要更高的数据库权限,普通用户可能无法执行某些 DDL 语句。

使用 DDL 的注意事项​

备份数据,在执行可能影响数据的 DDL 操作(如 DROP、ALTER)之前,务必备份数据。

影响范围,了解 DDL 操作的影响范围,避免对生产环境造成不必要的影响。

事务管理,由于 DDL 语句会自动提交,需要在事务处理中慎重使用。

实际应用示例​

创建一个名为employees的表

CREATE TABLE employees (
employee_id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
email VARCHAR(100),
hire_date DATE
);

向employees表中添加一个新的列salary

ALTER TABLE employees ADD COLUMN salary DECIMAL(10, 2);

删除employees表

DROP TABLE employees;

DDL 是数据库管理中的基础部分,负责定义和管理数据库的结构

数据库规范化 1NF 到 3NF 的详解

· 阅读需 2 分钟
素明诚
Full stack development

第一范式(1NF)​

每个表格的列都必须拥有单一的(不可再分的)值,列不能有重复的组

假设有一个记录学生爱好的表格,如果一个学生有多个爱好,这样设计就违反了 1NF

StudentIDStudentNameHobbies
1Alice游泳, 跑步

为了满足 1NF,我们应将“Hobbies”拆分为多行,每行表示一个爱好

StudentIDStudentNameHobby
1Alice游泳
1Alice跑步

第二范式(2NF)​

基于 1NF,所有非主键字段必须完全依赖于整个主键

假设一个表格记录学生参加的课程及课程老师,如果主键是(StudentID, CourseID),则下表违反了 2NF,因为“TeacherName”只依赖于“CourseID”部分

StudentIDCourseIDTeacherName
1101Dr. Smith
2101Dr. Smith
1102Dr. Jones

为了达到 2NF,我们应该把“TeacherName”移到单独的表格中

Courses Table

CourseIDTeacherName
101Dr. Smith
102Dr. Jones

Enrollment Table

StudentIDCourseID
1101
2101
1102

第三范式(3NF)​

基于 2NF,任何非主键字段不应依赖于其他非主键字段

如果有一个员工表,其中包括员工、他们所在的部门以及部门经理

EmployeeIDDepartmentNameDepartmentManager
E01SalesJohn Doe
E02SalesJohn Doe
E03HRJane Smith

这里,“DepartmentManager”依赖于“DepartmentName”,违反了 3NF 正确的设计应该是创建一个独立的“部门”表

Departments Table

DepartmentNameDepartmentManager
SalesJohn Doe
HRJane Smith

Employees Table

EmployeeIDDepartmentName
E01Sales
E02Sales
E03HR

常用 SQL 语句

· 阅读需 3 分钟
素明诚
Full stack development

数据查询语言(DQL)​

SQL 语句类型用途注意事项
SELECTDQL查询表中的数据使用合适的索引优化查询效率

数据操作语言 (DML)​

SQL 语句类型用途注意事项
INSERTDML插入新的数据记录到表中确认数据的完整性和准确性
UPDATEDML修改表中的数据记录尽量使用主键进行更新,避免全表扫描
DELETEDML从表中删除数据记录使用事务处理,确保不会误删除重要数据

3. 数据定义语言 (DDL)​

SQL 语句类型用途注意事项
CREATE TABLEDDL创建新的表设计时考虑未来可能的扩展
ALTER TABLEDDL修改现有的表结构在低峰时段进行,以减少对业务的影响
DROP TABLEDDL删除表确保已备份重要数据
CREATE INDEXDDL在表的一列或多列上创建索引创建索引可以提高查询效率,但可能降低更新速度
DROP INDEXDDL删除索引考虑索引的使用情况,避免删除重要索引
CREATE DATABASEDDL创建新的数据库确保数据库配置符合需求
DROP DATABASEDDL删除数据库预先备份所有重要数据

4.数据控制语言(DCL)​

SQL 语句类型用途注意事项
GRANTDCL给用户赋予权限确保只授予必要的最小权限
REVOKEDCL移除用户的权限定期审查权限,确保安全性

5.事务控制语言(TCL)​

SQL 语句类型用途注意事项
BEGIN TRANSACTIONTCL开始一个新的事务确保事务中的操作逻辑一致
COMMITTCL提交事务,保存所有修改避免长事务,以减少锁定资源的时间
ROLLBACKTCL回滚事务,撤销所有修改适时回滚,防止错误扩散

通用 SQL 语句​

SQL 语句用途注意事项
JOIN在查询中关联两个或多个表使用适当的 JOIN 类型,优化关联查询的性能
GROUP BY在查询中按某列或条件分组数据配合聚合函数使用,合理索引可以优化查询速度
ORDER BY对查询结果进行排序尽量在有索引的列上进行排序
WHERE在查询中根据条件过滤数据使用索引优化过滤,减少全表扫描
HAVING在 GROUP BY 查询中根据条件过滤分组通常与聚合函数一起使用,注意性能影响