当前位置: 首页 > news >正文

MySQL数据库操作全指南:数据库命令、表命令与数据CRUD操作

目录

一、MySQL概述与基本概念

1.1 MySQL的特点

1.2 MySQL的基本组成

二、数据库操作命令

2.1 数据库的创建与删除

创建数据库

删除数据库

2.2 数据库的选择与查看

选择当前操作的数据库

查看所有数据库

查看数据库创建语句

2.3 数据库的修改

修改数据库字符集

重命名数据库(MySQL不直接支持,通常需要导出再导入)

三、表操作命令

3.1 表的创建与删除

创建表

删除表

3.2 表的查看与修改

查看所有表

查看表结构

查看表创建语句

修改表名

添加列

修改列

删除列

添加约束

删除约束

3.3 表的索引操作

创建索引

删除索引

查看索引

四、数据CRUD操作

4.1 创建数据(INSERT)

基本插入

插入多行

从其他表插入

替换数据(存在则替换,不存在则插入)

4.2 读取数据(SELECT)

基本查询

条件查询

排序

分页

分组

连接查询

子查询

联合查询

4.3 更新数据(UPDATE)

基本更新

使用表达式更新

多表更新

4.4 删除数据(DELETE)

基本删除

清空表

多表删除

五、高级数据操作

5.1 事务处理

5.2 视图操作

创建视图

使用视图

修改视图

删除视图

六、MySQL实用技巧与最佳实践

6.1 性能优化建议

6.2 安全注意事项

6.3 常用系统变量查询

七、总结


一、MySQL概述与基本概念

MySQL是一个开源的关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,目前属于Oracle旗下产品。它使用最常用的结构化查询语言(SQL)进行数据库操作,具有体积小、速度快、成本低、开放源码等特点,广泛应用于Web应用程序开发中。

1.1 MySQL的特点

MySQL具有以下显著特点:

  • 开源免费:社区版可自由使用和修改

  • 性能卓越:处理速度快,响应时间短

  • 可靠性高:支持事务处理和崩溃恢复

  • 跨平台:支持多种操作系统

  • 易于使用:语法简单,学习曲线平缓

  • 扩展性强:支持大型数据库,可处理数千万条记录

1.2 MySQL的基本组成

MySQL数据库系统主要由以下几部分组成:

  1. 数据库(Database):数据存储的逻辑容器

  2. 表(Table):数据存储的实际结构,由行和列组成

  3. 视图(View):虚拟表,基于SQL查询结果

  4. 存储过程(Stored Procedure):预编译的SQL语句集合

  5. 触发器(Trigger):响应特定事件自动执行的代码块

  6. 索引(Index):提高数据检索速度的数据结构

二、数据库操作命令

2.1 数据库的创建与删除

创建数据库
CREATE DATABASE database_name;
CREATE DATABASE IF NOT EXISTS database_name;  -- 避免重复创建报错
CREATE DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;  -- 指定字符集和排序规则
删除数据库
DROP DATABASE database_name;
DROP DATABASE IF EXISTS database_name;  -- 避免不存在时报错

2.2 数据库的选择与查看

选择当前操作的数据库
USE database_name;
查看所有数据库
SHOW DATABASES;
查看数据库创建语句
SHOW CREATE DATABASE database_name;

2.3 数据库的修改

修改数据库字符集
ALTER DATABASE database_name CHARACTER SET charset_name COLLATE collation_name;
重命名数据库(MySQL不直接支持,通常需要导出再导入)

三、表操作命令

3.1 表的创建与删除

创建表
CREATE TABLE table_name (column1 datatype constraints,column2 datatype constraints,...PRIMARY KEY (column_name),FOREIGN KEY (column_name) REFERENCES other_table(column_name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

示例:

CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL UNIQUE,password VARCHAR(255) NOT NULL,email VARCHAR(100) UNIQUE,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
删除表
DROP TABLE table_name;
DROP TABLE IF EXISTS table_name;  -- 安全删除

3.2 表的查看与修改

查看所有表
SHOW TABLES;
查看表结构
DESCRIBE table_name;
DESC table_name;  -- 简写
SHOW COLUMNS FROM table_name;
查看表创建语句
SHOW CREATE TABLE table_name;
修改表名
ALTER TABLE old_table_name RENAME TO new_table_name;
RENAME TABLE old_table_name TO new_table_name;
添加列
ALTER TABLE table_name ADD COLUMN column_name datatype constraints;
修改列
ALTER TABLE table_name MODIFY COLUMN column_name new_datatype new_constraints;
ALTER TABLE table_name CHANGE COLUMN old_column_name new_column_name datatype constraints;
删除列
ALTER TABLE table_name DROP COLUMN column_name;
添加约束
ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY (column_name);
ALTER TABLE table_name ADD CONSTRAINT constraint_name FOREIGN KEY (column_name) REFERENCES other_table(column_name);
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (column_name);
删除约束
ALTER TABLE table_name DROP PRIMARY KEY;
ALTER TABLE table_name DROP FOREIGN KEY constraint_name;
ALTER TABLE table_name DROP INDEX constraint_name;

3.3 表的索引操作

创建索引
CREATE INDEX index_name ON table_name (column_name);
CREATE UNIQUE INDEX index_name ON table_name (column_name);  -- 唯一索引
删除索引
DROP INDEX index_name ON table_name;
查看索引
SHOW INDEX FROM table_name;

四、数据CRUD操作

CRUD代表创建(Create)、读取(Read)、更新(Update)和删除(Delete),是数据库最基本的四种操作。

4.1 创建数据(INSERT)

基本插入
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
插入多行
INSERT INTO table_name (column1, column2, ...) 
VALUES (value1, value2, ...),(value1, value2, ...),...;
从其他表插入
INSERT INTO table_name (column1, column2, ...)
SELECT column1, column2, ... FROM other_table WHERE condition;
替换数据(存在则替换,不存在则插入)
REPLACE INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);

4.2 读取数据(SELECT)

基本查询
SELECT column1, column2, ... FROM table_name;
SELECT * FROM table_name;  -- 查询所有列
条件查询
SELECT column1, column2, ... FROM table_name WHERE condition;
排序
SELECT column1, column2, ... FROM table_name ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
分页
SELECT column1, column2, ... FROM table_name LIMIT offset, count;
SELECT column1, column2, ... FROM table_name LIMIT count OFFSET offset;
分组
SELECT column1, aggregate_function(column2) 
FROM table_name 
GROUP BY column1
HAVING condition;
连接查询
-- 内连接
SELECT a.column1, b.column2 
FROM table1 a 
INNER JOIN table2 b ON a.common_field = b.common_field;-- 左连接
SELECT a.column1, b.column2 
FROM table1 a 
LEFT JOIN table2 b ON a.common_field = b.common_field;-- 右连接
SELECT a.column1, b.column2 
FROM table1 a 
RIGHT JOIN table2 b ON a.common_field = b.common_field;
子查询
SELECT column1, column2, ...
FROM table_name
WHERE column_name OPERATOR (SELECT column_name FROM table_name WHERE condition);
联合查询
SELECT column1, column2 FROM table1
UNION [ALL]
SELECT column1, column2 FROM table2;

4.3 更新数据(UPDATE)

基本更新
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
使用表达式更新
UPDATE products SET price = price * 1.1 WHERE category = 'Electronics';
多表更新
UPDATE table1 a, table2 b 
SET a.column1 = b.column2 
WHERE a.id = b.id AND condition;

4.4 删除数据(DELETE)

基本删除
DELETE FROM table_name WHERE condition;
清空表
TRUNCATE TABLE table_name;  -- 更快,不可回滚
DELETE FROM table_name;     -- 可回滚,但大表性能差
多表删除
DELETE a, b FROM table1 a, table2 b WHERE a.id = b.id AND condition;

五、高级数据操作

5.1 事务处理

START TRANSACTION;
-- SQL语句
COMMIT;  -- 提交事务
-- 或
ROLLBACK;  -- 回滚事务

5.2 视图操作

创建视图
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
使用视图
SELECT * FROM view_name;
修改视图
ALTER VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE new_condition;
删除视图
DROP VIEW IF EXISTS view_name;

六、MySQL实用技巧与最佳实践

6.1 性能优化建议

  1. 合理使用索引:为常用查询条件创建索引,但不要过度索引

  2. **避免SELECT ***:只查询需要的列

  3. 使用EXPLAIN分析查询EXPLAIN SELECT ...

  4. 优化JOIN操作:确保JOIN字段有索引

  5. 合理设计表结构:遵循规范化原则,但必要时适当反规范化

6.2 安全注意事项

1.防止SQL注入:使用预处理语句

PREPARE stmt FROM 'SELECT * FROM users WHERE username = ?';
SET @username = 'admin';
EXECUTE stmt USING @username;
DEALLOCATE PREPARE stmt;

2.限制用户权限:遵循最小权限原则

3.定期备份数据:使用mysqldump或其他工具

6.3 常用系统变量查询

SHOW VARIABLES LIKE 'version%';  -- 查看版本信息
SHOW VARIABLES LIKE 'char%';     -- 查看字符集设置
SHOW VARIABLES LIKE 'storage_engine';  -- 查看默认存储引擎
SHOW STATUS;                    -- 查看服务器状态

七、总结

MySQL作为最流行的开源关系型数据库之一,提供了丰富的命令和功能来管理数据库、表和数据。掌握这些基本的数据库命令、表命令和CRUD操作是进行MySQL数据库开发的基础。通过本文的系统介绍,读者应该能够:

  1. 熟练创建和管理MySQL数据库

  2. 设计并操作各种表结构

  3. 执行高效的数据增删改查操作

  4. 理解基本的性能优化和安全原则

随着实践的深入,可以进一步学习MySQL的高级特性如事务处理、存储引擎比较、复制与集群等,以应对更复杂的应用场景和性能需求。

http://www.xdnf.cn/news/1286551.html

相关文章:

  • 飞算 JavaAI -智慧城市项目实践:从交通协同到应急响应的全链路技术革新
  • vue excel转json功能 xlsx
  • 正则表达式解析(二)
  • Python 标准库模块shutil
  • 升级 Docker,避免执行 docker compose 时报错
  • Java 大视界 -- Java 大数据在智能教育学习效果评估指标体系构建与精准评估中的应用(394)
  • 实现一个二维码让 iOS 和 Android 用户自动跳转到对应下载链接
  • MySQL——MySQL引擎层BufferPool工作过程原理
  • 3 Abp 核心框架(Core Framework)
  • 京东方 DV133FHM-NN1 FHD13.3寸 工业液晶模组技术档案
  • 在Colab上复现LoRA相关论文实验的完整指南
  • 跨设备开发不再难:HarmonyOS 分布式任务管理应用全解析
  • 人机交互:连接人类与数字世界的桥梁
  • 基于柔性管控终端的新能源汽车充电站有序充电系统设计与实现
  • Docker容器部署论坛和网上商城(小白的“升级打怪”成长之路)
  • 1 JQ6500语音播报模块详解(STM32)
  • 电机极数2极、4极、6极、8极的区别
  • 电子电路原理学习笔记---第5章特殊用途二极管---第2天
  • PaddlePaddle 模型训练技巧
  • Myqsl建立库表练习
  • Spark on K8s 在vivo大数据平台的混部实战
  • Go 语言 里 `var`、`make`、`new`、`:=` 的区别
  • 深入解析ArrayList与LinkedList的区别:如何正确选择?
  • 游戏中角色持枪:玩家操控角色,角色转向时枪也要转向
  • Java集合学习之forEach()遍历方法的底层原理
  • 【Unity3D实例-功能-下蹲】角色下蹲(二)穿越隧道
  • 人工智能+虚拟仿真,助推医学检查技术理论与实践结合
  • Linux环境gitlab多种部署方式及具体使用
  • [论文阅读] (41)JISA24 物联网环境下基于少样本学习的攻击流量分类
  • 完整多端口 Nginx Docker部署 + GitLab Runner注册及标签使用指南