关系型数据库核心操作:DDL 与 DML 详解
数据库核心概念辨析
DB 与 DBMS
数据库(Database)是存储数据的物理仓库,遵循特定数据结构进行组织;数据库管理系统(Database Management System)则是操控这些数据的软件层,提供访问接口与安全机制。
关系型数据库特征
- 以二维表(Table)形式组织数据,表与表之间可建立关联
- 主流产品:Oracle、DB2、SQL Server、MySQL、MariaDB、PostgreSQL
库与表的层级结构
表(Table)
- 行(Row/Record):单条数据记录
- 列(Column/Field):定义数据属性
库(Database)
- 多个相关表的集合体
- DBMS 支持同时管理多个独立数据库
SQL 语言体系
| 分类 | 全称 | 核心功能 |
|---|---|---|
| DDL | Data Definition Language | 定义/修改/删除数据库对象 |
| DML | Data Manipulation Language | 增删改表中数据 |
| DQL | Data Query Language | 查询检索数据 |
| TCL | Transaction Control Language | 事务控制 |
| DCL | Data Control Language | 权限管理 |
DDL 数据定义语言
数据库级别操作
创建数据库
CREATE DATABASE store_db CHARSET=utf8mb4;
查看与切换
SHOW DATABASES;
SHOW CREATE DATABASE store_db;
USE store_db;
删除数据库
DROP DATABASE store_db;
表级别操作
创建表结构
CREATE TABLE merchandise(
merchandise_id INT,
merchandise_name VARCHAR(64),
unit_price DECIMAL(10,2),
stock_quantity INT
);
查看表信息
DESC merchandise;
SHOW TABLES;
SHOW CREATE TABLE merchandise;
重命名表
RENAME TABLE merchandise TO product;
删除表
DROP TABLE product;
表结构修改
以 staff 表为例演示:
CREATE TABLE staff(
staff_name VARCHAR(32),
hire_year INT
);
追加字段
-- 末尾追加
ALTER TABLE staff ADD department VARCHAR(20);
-- 首部插入
ALTER TABLE staff ADD staff_id INT FIRST;
-- 指定位置插入
ALTER TABLE staff ADD phone VARCHAR(15) AFTER staff_name;
删除与修改字段
-- 删除字段
ALTER TABLE staff DROP phone;
-- 修改字段类型及约束
ALTER TABLE staff CHANGE hire_year entry_year INT;
-- 修改字段名并调整属性
ALTER TABLE staff CHANGE staff_name employee_name VARCHAR(40) NOT NULL;
DML 数据操纵语言
先构建示例表:
CREATE TABLE client(
client_name VARCHAR(30),
client_age INT,
city VARCHAR(20) DEFAULT '未知'
);
INSERT 数据插入
指定字段插入
INSERT INTO client(client_name, client_age) VALUES('李明', 28);
INSERT INTO client(client_age, client_name) VALUES(35, '王芳');
默认值应用
-- city 自动填充 '未知'
INSERT INTO client(client_name, client_age) VALUES('张伟', 30);
-- 显式使用 DEFAULT 关键字
INSERT INTO client VALUES('赵强', 25, DEFAULT);
全列插入
INSERT INTO client VALUES('刘洋', 40, '上海');
批量插入
INSERT INTO client(client_name, client_age, city) VALUES
('陈晨', 22, '杭州'),
('杨洋', 27, '深圳'),
('孙丽', 33, '成都');
UPDATE 数据更新
全表更新(慎用)
UPDATE client SET client_age = 30;
条件更新
-- 单条件
UPDATE client SET client_age = 29 WHERE client_name = '李明';
-- 多字段同时更新
UPDATE client SET client_age = 35, city = '北京' WHERE client_name = '王芳';
-- 范围条件
UPDATE client SET city = '广州' WHERE client_age < 30;
DELETE 数据删除
条件删除
DELETE FROM client WHERE client_name = '张伟';
DELETE FROM client WHERE client_age > 35 AND city = '北京';
清空表数据
DELETE FROM client;
注意:DML 操作默认处于事务控制之下,执行后需通过 COMMIT 确认或 ROLLBACK 回滚才会最终生效。