MySQl 数据库操作
一、MySQL 数据库介绍
MySQL 是一个广泛使用的开源关系型数据库管理系统(RDBMS),由 Oracle 公司维护。它支持 SQL(结构化查询语言),适用于中小型 Web 应用、数据仓库等场景,具备高可靠性、易用性和良好的性能。
二、MySQL 库操作
1. 系统数据库
安装 MySQL 后,默认包含以下系统数据库:
information_schema:存储元数据(如数据库、表、列信息)mysql:存储用户权限和系统配置performance_schema:监控服务器性能指标sys:提供简化性能调优的视图
2. 数据库操作
(1)创建数据库
CREATE DATABASE db_name;
(2)数据库命名规则
- 由字母、数字、下划线组成
- 建议使用小写字母
- 避免使用 MySQL 保留字(如
SELECT,TABLE)
(3)选择数据库
USE db_name;
(4)查看数据库
SHOW DATABASES; -- 列出所有数据库
SHOW CREATE DATABASE db_name; -- 查看创建语句
(5)删除数据库
DROP DATABASE db_name; -- 谨慎操作!
三、MySQL 表操作
1. 表介绍
表是存储数据的结构化对象,由行(记录)和列(字段)组成,每个字段有特定数据类型和约束。
2. 查看表
SHOW TABLES; -- 当前数据库所有表
SHOW TABLES FROM db_name; -- 指定数据库的表
3. 创建表
(1)语法
CREATE TABLE table_name (
column1 datatype constraints,
column2 datatype constraints,
...
);
(2)类型介绍
- 整数:
INT,BIGINT - 浮点数:
FLOAT,DOUBLE - 字符串:
VARCHAR(255),CHAR(10) - 日期时间:
DATE,DATETIME,TIMESTAMP - 大文本:
TEXT,BLOB
(3)约束条件
PRIMARY KEY:主键NOT NULL:非空UNIQUE:唯一值DEFAULT:默认值FOREIGN KEY:外键
(4)创建表示例
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
4. 查看表结构
DESC table_name; -- 简略信息
SHOW CREATE TABLE table_name; -- 完整创建语句
5. 修改表
(1)修改表名
ALTER TABLE old_name RENAME TO new_name;
(2)增加字段
ALTER TABLE table_name ADD COLUMN new_column VARCHAR(50);
(3)删除字段
ALTER TABLE table_name DROP COLUMN column_name;
(4)修改字段
ALTER TABLE table_name
CHANGE old_column new_column INT; -- 重命名+改类型
ALTER TABLE table_name
MODIFY column_name VARCHAR(100); -- 仅改类型
6. 复制表
CREATE TABLE new_table AS SELECT * FROM old_table; -- 仅复制数据
CREATE TABLE new_table LIKE old_table; -- 仅复制结构
7. 删除表
DROP TABLE table_name; -- 不可恢复!
四、MySQL 数据操作
1. 介绍
数据操作语言(DML)用于增删改查(CRUD)表中的记录。
2. 插入数据 INSERT
INSERT INTO table_name (col1, col2) VALUES ('val1', 100); -- 指定列
INSERT INTO table_name VALUES (val1, val2, ...); -- 全列插入(需按顺序)
3. 删除数据 DELETE
DELETE FROM table_name WHERE condition; -- 带条件删除
DELETE FROM table_name; -- 清空表(逐行删除)
4. 更新数据 UPDATE
UPDATE table_name
SET col1 = 'new_val', col2 = 200
WHERE condition;
5. 查询数据 SELECT
(1)单表查询
SELECT * FROM table_name; -- 所有列
SELECT name, age FROM users WHERE age > 18; -- 条件过滤
SELECT DISTINCT country FROM customers; -- 去重
SELECT COUNT(*) FROM orders; -- 聚合函数
(2)多表查询
在关系型数据库中,多表查询是最常用的操作之一,它允许我们从多个相关联的表中获取数据。以下是几种常见的多表连接方式:
- 内连接(INNER JOIN) 内连接只返回两个表中匹配的行。语法示例如下:
-- 查询用户及其订单信息(只返回有订单的用户)
SELECT u.name, o.order_date
FROM users u
JOIN orders o ON u.id = o.user_id;
-- 可以添加WHERE条件进一步筛选
SELECT u.name, o.order_date, o.amount
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE o.amount > 1000;
典型应用场景:需要获取两个表中存在关联关系的数据,如用户和其订单、产品和其销售记录等。
- 左连接(LEFT JOIN) 左连接返回左表的所有记录,以及右表中匹配的记录(如果没有匹配,右表字段显示为NULL)。语法示例如下:
-- 查询所有部门及其员工(包括没有员工的部门)
SELECT d.name AS department_name, e.employee_name
FROM departments d
LEFT JOIN employees e ON d.id = e.dept_id;
-- 可以配合WHERE条件找出没有员工的部门
SELECT d.name
FROM departments d
LEFT JOIN employees e ON d.id = e.dept_id
WHERE e.id IS NULL;
典型应用场景:需要获取主表所有记录及可能的关联信息,如展示所有产品(包括没有销售记录的产品)、所有客户(包括没有下单的客户)等。
- 右连接(RIGHT JOIN) 右连接返回右表的所有记录,以及左表中匹配的记录(如果没有匹配,左表字段显示为NULL)。语法示例如下:
-- 查询所有员工及其部门信息(包括没有分配部门的员工)
SELECT e.employee_name, d.name AS department_name
FROM departments d
RIGHT JOIN employees e ON d.id = e.dept_id;
-- 可以配合WHERE条件找出没有分配部门的员工
SELECT e.employee_name
FROM departments d
RIGHT JOIN employees e ON d.id = e.dept_id
WHERE d.id IS NULL;
典型应用场景:需要获取从表所有记录及可能的关联信息,如展示所有订单(包括没有对应客户的订单)、所有评论(包括没有用户信息的评论)等。
- 全连接(FULL JOIN) 全连接返回左右两表中所有记录,不匹配的部分显示为NULL。语法示例如下:
-- 查询所有部门和所有员工的组合(包括没有员工的部门和没有分配部门的员工)
SELECT d.name AS department_name, e.employee_name
FROM departments d
FULL JOIN employees e ON d.id = e.dept_id;
典型应用场景:需要同时获取两个表的完整信息,如展示所有产品类别和所有供应商的组合等。
五、MySQL 数据库用户授权
1. 创建用户
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
-- 示例:CREATE USER 'dev'@'localhost' IDENTIFIED BY 'Pass123!';
2. 授权操作
GRANT permission_type ON db_name.table_name TO 'username'@'host';
-- 示例:GRANT SELECT, INSERT ON shop.* TO 'dev'@'localhost';
3. 查看权限
SHOW GRANTS FOR 'username'@'host';
4. 撤销权限
REVOKE permission_type ON db_name.table_name FROM 'username'@'host';
-- 示例:REVOKE INSERT ON shop.orders FROM 'dev'@'localhost';
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)