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

相关推荐
xhbh66627 分钟前
开发效率翻倍:资深DBA都在用的MySQL客户端利器
数据库·mysql·数据库连接工具·mysql 连接工具
LJC_Superman42 分钟前
Web与Nginx网站服务
运维·服务器·前端·网络·数据库·nginx·vim
java水泥工1 小时前
校园管理系统|基于SpringBoot和Vue的校园管理系统(源码+数据库+文档)
数据库·vue.js·spring boot
高山有多高1 小时前
详解文件操作
c语言·开发语言·数据库·c++·算法
盒马coding1 小时前
PostgreSQL与Greenplum常见连接客户端
数据库·postgresql
言之。1 小时前
Django get_or_create 方法详解
数据库·django·sqlite
m0_571372821 小时前
嵌入式学习——ARM 体系架构1
arm开发·学习
Rhys..2 小时前
python + Flask模块学习 2 接收用户请求并返回json数据
python·学习·flask
罗光记2 小时前
腾讯混元游戏视觉生成平台正式发布2.0版本
数据库·经验分享·百度·facebook·开闭原则
我科绝伦(Huanhuan Zhou)3 小时前
达梦数据守护集群监视器详解与应用指南
数据库