数据库相关操作
数据库表创建
定义逻辑库、数据表
- 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 操作对数据库中的数据进行添加、修改、删除和查询操作。这些基本操作是数据库应用开发中的常见需求,掌握它们能够有效地管理和操作数据库中的数据。