跳到主要内容

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 查询中根据条件过滤分组通常与聚合函数一起使用,注意性能影响