MySQL语句
本位与2025-01-06在CSDN上发布 现将其转移至自己的博客
引擎相关
查看存储引擎:
1 | show engines; |
查看显示支持的存储引擎信息:
1 | show variables like 'have%' |
查看默认的存储引擎:
1 | show variables like 'storage_engine' |
数据库相关操作(增 删 改)
创建数据库:
1 | create datbase [if not exists] db_name |
PS
“[ ]”中的是可选项 可写可不写
将db_name替换成你想给数据库取的名字
查看所有数据库
1 | show databases; |
查看数据库的详细信息
1 | show create database db_name; |
使用某个数据库
1 | use db_name; |
修改数据库编码
1 | alter database [db_name] |
PS
例1:将schoolDB的编码方式有GBK修改为UTF8。
法1:ALTER DATABASE schoolDB CHARACTER SET UTF8;
法2:ALTER DATABASE schoolDB collate utf8_general_ci;
删除数据库
1 | drop database [if exists] db_name; |
表的相关操作(增删改查)
创建表
1 | create table [if exists] t_name( |
PS
这里t_name是表名
name_1 name_2 name_3 是字段名
字段名后面[ ]中的是完整性约束(可选填)
完整性约束条件:
PRIMARY KEY主键(唯一来标识的,每一个表都一个,自动非空)
AUTO_INCREMENT自增长
FOREIGN KEY外键
NOT NULL非空
UNIQUE KEY唯一
DEFAULT默认值
最下面的[ ] 中的是引擎和编码方式的选择
修改表
[在name_3的(前面|后面)] 增加新列name_4
1 | alter table t_name |
修改列的数据类型
将name_2的数据类型修改成float(4,3)
1 | alter table t_name |
修改列名
将表t_name中的name_1列的名字修改成new_name_1
1 | alter table t_name |
修改表名
将表t_name的名字修改成new_t_name
1 | alter table t_name |
删除列
将表t_name中的name_1列删除
1 | alter table t_name |
删除行
1 | delete from t_name |
修改存储引擎
将表t_name的存储引擎修改成INNODB
1 | alter table t_name |
查看表
查看表名
1 | show tables; |
查看表的结构
1 | #法1 |
复制表
1 | create table [if not existe] t_name |
删除表
将表t_name删除
1 | drop table t_name; |
数据相关操作
插入数据
1 | insert [into] |
查看插入信息
1 | select * from t_name; |
修改数据
1 | update t_name |
PS
若where不写
则更新全部记录
删除数据
1 | delate from t_name |
完全清除某个表
完全清除表t_name:
1 | truncate [table] t_name; |
单表查询(重点)
先给出语法:
1 | select [distinct] name_1 [as new_name], |
PS
SELECT子句:
指定要查询的列名称,列与列之间用逗号隔开。
还可以为列指定新的别名,显示在输出的结果中。
ALL关键字表示显示所有的行,包括重复行,是系统默认的
DISTINCT表示显示的结果要消除重复的行。
FROM子句:指定要查询的表,可以指定两个以上的表,表与表之间用逗号隔开。
WHERE子句:指定要查询的条件。
如果有WHERE子句,就按照“条件表达式”指定的条件进行查询;
如果没有WHERE子句,就查询所有记录。
GROUP BY :
子句用于对查询结构进行分组。
按照“列名1”指定的字段进行分组;
如果GROUP BY子句后带着HAVING关键字,那么只有满足“条件表达式2”中指定的条件的才能够输出。
GROUP BY子句通常和COUNT()、SUM()等聚合函数一起使用。
HAVING子句:
指定分组的条件,通常放Group by字句之后
ORDER BY子句:用于对查询结果的进行排序。
排序方式由ASC和DESC两个参数指出;
ASC参数表示按升序进行排序。默认情况下是ASC。
DESC参数表示按降序的顺序进行排序。升序表示值按从小到大的顺序排列。
LIMIT 子句:限制查询的输出结果的行数。
多表查询
连接
等值连接
1 | select x_name_1, |
左连接、右连接和联合查询不过多赘述
子查询
带in关键词的子查询
1 | select * |
带比较运算符的子查询
1 | select * |
索引
引:
面试题:select id,name,age from sd where name=’张飞’
怎么优化?最佳方案是什么?
答:在name上创建索引:
create index in name on sd(name);
语法(已存在的表):
1 | create index in_id |
PS
in_id:索引名 (自己取)
t_name:表名
id:列名
在创建表的时候创建索引
1 | create table t_name( |
视图
创建视图
1 | create view view_name as |
删除视图
1 | drop view view_name; |
用户
创建用户
1 | create user '用户名'@'localhost' identifiednby '密码'; |
查询用户
1 | select * from mysql.user; |
分配权限
1 | grant 权限 on 库.表 to '用户名'@'localhost'; |
触发器
触发器设置
1 | #触发器设置 |
PS
这里是当position设置为经理或董事长时 自动更改权限等级
显示设置的触发器
1 | #显示设置的触发器 |
备份与恢复
备份
备份数据库到文件。
1 | mysqldump -u username -p db_name > backup.sql |
恢复
从文件恢复数据库。
1 | mysql -u username -p db_name < backup.sql |
- Title: MySQL语句
- Author: 姜智浩
- Created at : 2025-01-06 11:45:14
- Updated at : 2025-03-30 14:44:32
- Link: https://super-213.github.io/zhihaojiang.github.io/2025/01/06/20250106MySQL语句/
- License: This work is licensed under CC BY-NC-SA 4.0.