MySQL之数据库相关操作学习笔记(一)

数据库相关操作

数据库表创建

定义逻辑库、数据表
  1. DML
    1. 添加
    2. 修改
    3. 删除
    4. 查询
  2. DCL
    1. 用户
    2. 权限
    3. 事务
  3. DDL
    1. 逻辑库
    2. 数据表
    3. 视图
    4. 索引

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

相关推荐
远歌已逝1 小时前
维护在线重做日志(二)
数据库·oracle
qq_433099402 小时前
Ubuntu20.04从零安装IsaacSim/IsaacLab
数据库
Dlwyz2 小时前
redis-击穿、穿透、雪崩
数据库·redis·缓存
工业甲酰苯胺4 小时前
Redis性能优化的18招
数据库·redis·性能优化
没书读了5 小时前
ssm框架-spring-spring声明式事务
java·数据库·spring
i道i5 小时前
MySQL win安装 和 pymysql使用示例
数据库·mysql
小怪兽ysl5 小时前
【PostgreSQL使用pg_filedump工具解析数据文件以恢复数据】
数据库·postgresql
wqq_9922502776 小时前
springboot基于微信小程序的食堂预约点餐系统
数据库·微信小程序·小程序
爱上口袋的天空6 小时前
09 - Clickhouse的SQL操作
数据库·sql·clickhouse
朝九晚五ฺ6 小时前
【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
linux·运维·学习