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

相关推荐
dengqingrui1232 小时前
【树形DP】AT_dp_p Independent Set 题解
c++·学习·算法·深度优先·图论·dp
我的心永远是冰冰哒2 小时前
ad.concat()学习
学习
ZZZ_O^O2 小时前
二分查找算法——寻找旋转排序数组中的最小值&点名
数据结构·c++·学习·算法·二叉树
slomay4 小时前
关于对比学习(简单整理
经验分享·深度学习·学习·机器学习
hengzhepa4 小时前
ElasticSearch备考 -- Async search
大数据·学习·elasticsearch·搜索引擎·es
vvvae12345 小时前
分布式数据库
数据库
雪域迷影5 小时前
PostgreSQL Docker Error – 5432: 地址已被占用
数据库·docker·postgresql
bug菌¹6 小时前
滚雪球学Oracle[4.2讲]:PL/SQL基础语法
数据库·oracle
逸巽散人6 小时前
SQL基础教程
数据库·sql·oracle
小小洋洋6 小时前
BLE MESH学习1-基于沁恒CH582学习
学习