数据库相关操作
数据库表创建
定义逻辑库、数据表
- DML
- 添加
- 修改
- 删除
- 查询
- DCL
- 用户
- 权限
- 事务
- DDL
- 逻辑库
- 数据表
- 视图
- 索引
DCL (Data Control Language) 示例
DCL(数据控制语言)主要用于控制数据库用户的访问权限和管理事务。DCL 主要包含两类语句:用户和权限管理语句,以及事务管理语句。
1. 用户管理
创建用户
创建一个新的数据库用户:
sql
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
删除用户
删除一个数据库用户:
sql
DROP USER 'newuser'@'localhost';
修改用户密码
修改用户的密码:
sql
ALTER USER 'newuser'@'localhost' IDENTIFIED BY 'newpassword';
2. 权限管理
授予权限
授予用户对某个数据库的所有权限:
sql
GRANT ALL PRIVILEGES ON mydatabase.* TO 'newuser'@'localhost';
授予用户对某个表的特定权限:
sql
GRANT SELECT, INSERT, UPDATE ON mydatabase.mytable TO 'newuser'@'localhost';
撤销权限
撤销用户对某个数据库的所有权限:
sql
REVOKE ALL PRIVILEGES ON mydatabase.* FROM 'newuser'@'localhost';
撤销用户对某个表的特定权限:
sql
REVOKE SELECT, INSERT, UPDATE ON mydatabase.mytable FROM 'newuser'@'localhost';
刷新权限
刷新权限表,使权限变更生效:
sql
FLUSH PRIVILEGES;
查看权限
查看用户的权限:
sql
SHOW GRANTS FOR 'newuser'@'localhost';
3. 事务管理
事务管理用于确保数据库操作的原子性、一致性、隔离性和持久性(ACID)。
开始事务
开始一个事务:
sql
START TRANSACTION;
提交事务
提交当前事务,使所有更改永久生效:
sql
COMMIT;
回滚事务
回滚当前事务,撤销所有未提交的更改:
sql
ROLLBACK;
设置保存点
设置一个事务的保存点,可以部分回滚到该保存点:
sql
SAVEPOINT savepoint_name;
回滚到保存点
回滚到指定的保存点:
sql
ROLLBACK TO SAVEPOINT savepoint_name;
释放保存点
释放指定的保存点,使其无法再回滚:
sql
RELEASE SAVEPOINT savepoint_name;
示例操作
示例 1:创建用户并授予权限
sql
-- 创建用户
CREATE USER 'alice'@'localhost' IDENTIFIED BY 'alice123';
-- 授予对整个数据库的所有权限
GRANT ALL PRIVILEGES ON mydatabase.* TO 'alice'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
-- 查看权限
SHOW GRANTS FOR 'alice'@'localhost';
示例 2:管理事务
sql
-- 开始事务
START TRANSACTION;
-- 插入数据
INSERT INTO users (username, email) VALUES ('bob', 'bob@example.com');
-- 更新数据
UPDATE users SET email = 'bob@newdomain.com' WHERE username = 'bob';
-- 设置保存点
SAVEPOINT before_delete;
-- 删除数据
DELETE FROM users WHERE username = 'bob';
-- 回滚到保存点
ROLLBACK TO SAVEPOINT before_delete;
-- 提交事务
COMMIT;
这些示例展示了如何使用 DCL 语句来管理 MySQL 数据库中的用户、权限和事务。通过掌握这些操作,可以有效地控制数据库的访问权限和确保数据的一致性和完整性。
DDL (Data Definition Language) 示例
DDL(数据定义语言)用于创建、修改和删除数据库对象,包括逻辑库、数据表、视图和索引等。以下是针对逻辑库、数据表、视图和索引的常见 DDL 操作示例。
1. 逻辑库
创建逻辑库
sql
CREATE DATABASE mydatabase;
删除逻辑库
sql
DROP DATABASE mydatabase;
2. 数据表
创建数据表
sql
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
修改数据表
添加新的列:
sql
ALTER TABLE users ADD COLUMN age INT;
修改列的数据类型:
sql
ALTER TABLE users MODIFY COLUMN email VARCHAR(255);
删除列:
sql
ALTER TABLE users DROP COLUMN age;
删除数据表
sql
DROP TABLE users;
3. 视图
创建视图
sql
CREATE VIEW user_emails AS
SELECT username, email FROM users;
删除视图
sql
DROP VIEW user_emails;
4. 索引
创建索引
在单个列上创建索引:
sql
CREATE INDEX idx_username ON users (username);
在多个列上创建复合索引:
sql
CREATE INDEX idx_username_email ON users (username, email);
删除索引
sql
DROP INDEX idx_username ON users;
示例操作
示例 1:创建逻辑库和数据表
sql
-- 创建逻辑库
CREATE DATABASE mydatabase;
-- 使用逻辑库
USE mydatabase;
-- 创建数据表
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
示例 2:创建视图和索引
sql
-- 创建视图
CREATE VIEW user_emails AS
SELECT username, email FROM users;
-- 创建索引
CREATE INDEX idx_username ON users (username);
通过这些示例,你可以学习如何使用 DDL 操作来管理数据库的逻辑库、数据表、视图和索引。掌握这些基本操作能够有效地设计和维护数据库结构,以满足应用程序的需求。
DML (Data Manipulation Language) 示例
DML(数据操纵语言)用于对数据库中的数据进行增、删、改、查操作。以下是关于添加、修改、删除和查询数据的 DML 操作示例。
1. 添加数据
单行添加数据
sql
INSERT INTO users (username, email) VALUES ('john', 'john@example.com');
批量添加数据
sql
INSERT INTO users (username, email)
VALUES ('alice', 'alice@example.com'),
('bob', 'bob@example.com'),
('charlie', 'charlie@example.com');
2. 修改数据
更新单行数据
sql
UPDATE users SET email = 'new_email@example.com' WHERE username = 'john';
批量更新数据
sql
UPDATE users SET email = 'new_email@example.com' WHERE id > 10;
3. 删除数据
删除单行数据
sql
DELETE FROM users WHERE username = 'john';
删除多行数据
sql
DELETE FROM users WHERE id > 10;
4. 查询数据
查询所有数据
sql
SELECT * FROM users;
查询特定数据
sql
SELECT * FROM users WHERE username = 'alice';
查询特定列
sql
SELECT username, email FROM users;
查询排序结果
sql
SELECT * FROM users ORDER BY created_at DESC;
查询分页结果
sql
SELECT * FROM users LIMIT 10 OFFSET 20;
示例操作
示例 1:添加数据
sql
-- 单行添加数据
INSERT INTO users (username, email) VALUES ('john', 'john@example.com');
-- 批量添加数据
INSERT INTO users (username, email)
VALUES ('alice', 'alice@example.com'),
('bob', 'bob@example.com'),
('charlie', 'charlie@example.com');
示例 2:修改数据
sql
-- 更新单行数据
UPDATE users SET email = 'new_email@example.com' WHERE username = 'john';
-- 批量更新数据
UPDATE users SET email = 'new_email@example.com' WHERE id > 10;
示例 3:删除数据
sql
-- 删除单行数据
DELETE FROM users WHERE username = 'john';
-- 删除多行数据
DELETE FROM users WHERE id > 10;
示例 4:查询数据
sql
-- 查询所有数据
SELECT * FROM users;
-- 查询特定数据
SELECT * FROM users WHERE username = 'alice';
-- 查询特定列
SELECT username, email FROM users;
-- 查询排序结果
SELECT * FROM users ORDER BY created_at DESC;
-- 查询分页结果
SELECT * FROM users LIMIT 10 OFFSET 20;
通过这些示例,你可以学习如何使用 DML 操作对数据库中的数据进行添加、修改、删除和查询操作。这些基本操作是数据库应用开发中的常见需求,掌握它们能够有效地管理和操作数据库中的数据。