MySQL基本命令及数据操作
0. 相关
SQL(Structured Query Language):结构化查询语言
- 数据定义语言DDL:create、drop
- 数据操作语言DML:insert、delete、update
- 数据查询语言DQL:select、where、group by、order by、limit
- 数据控制语言DCL:grant、revoke
- 事务处理语言TPL:commit、rollback
1. MySQL基本命令
必须掌握
基本命令 | 说明 |
---|---|
show databases; |
查看库 |
create database 数据库名; |
创建库 |
drop database 数据库名; |
删除库 |
use 数据库名; |
使用库 |
show tables; |
查看表 |
show create database 数据库名; |
查看数据库创建语句 |
select database(); |
查看被选中的数据库 |
alter database 数据库名 default charset=utf8; |
修改数据库字符集 |
create table 新表名 select * from 旧表名; | 复制表 |
2. MySQL基础数据类型
2.1 数字型
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
tinyint | 1字节 | -128-+127 | 0-255 | 最小整数 |
int | 4字节 | -2147483648-+2147483647 | 大整数值 | |
float(m,n) | 4-8个字节 | 单精度浮点型(浮点数) | ||
double(m,n) | 8个字节 | 双精度浮点型(浮点数) | ||
decimal(m,n) | 变长 | 浮点数(更加精确,长度一般无限制) |
2.2 字符型
类型 | 大小 | 用途 |
---|---|---|
char | 0-255字节 | 存储定长的字符串 |
varchar | 0-65535字节 | 存储变长的字符串 |
text | 0-65535字节 | 长文本数据 |
blob | 0-65535字节 | 二进制文本(不建议) |
enum(‘w’,‘m’) | 65535个成员 | 枚举 |
set(‘w’,‘m’) | 64个成员 | 集合 |
2.3 时间型
类型 | 大小 | 范围 | 格式 | 用途 |
---|---|---|---|---|
date | 3字节 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
time | 3字节 | -838:59:59/838:59:59 | HH:MM:SS | 时间值 |
year | 4字节 | 1901/2155 | YYYY | 年份值 |
datetime | 8字节 | 1000-01-01 00:00:00 / 9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合时间和日期 |
3. show 命令
加黑为常用命令
基本命令 | 说明 |
---|---|
show status; |
查看服务器状态 |
show create database 数据库名; |
显示建库语句 |
show create table 表名; |
显示建表语句 |
show grants; |
显示用户权限 |
show errors; |
显示服务器错误信息 |
show warnings; |
显示服务器警告信息 |
4. 数据库表操作
4.1 创建表
要素:表名 表字段名 定义每个表字段
语法:create table table_name (column_name column_type);
eg:
create table student(
id int auto_increment,
name varchar(64) not null,
primary key(id)
)engine = InnoDB default charset = utf8;
- 字段可以设置为不为空,即not null;
- auto_increment 定义列为自增的属性,一般用于主键,数值会自动加1;
- primary key 关键字用于定义列为主键。 可以使用多列来定义主键,列间以逗号分隔。
- engine 设置存储引擎,charset 设置编码。此句可不写。
desc 表名;来查看表结构
4.2 修改、删除表
4.2.1 修改字段属性
-
语法:
alter table 表名 modify 字段 字段属性
-
alter table** student **modify** nume char not null;
4.2.2 增加字段
- 语法:
alter table 表名 add 字段 字段属性 (after 字段);
alter table student add score float ;
alter table student add score float ;
4.2.3 修改字段名
-
语法:
alter table 表名 change 原字段名 新字段名 新字段属性;
-
alter table student change score level double;
4.2.4 重命名表名
-
alter table 原表名 rename 新表名;
-
alter table student rename students;
4.3 插入数据
语法:
- 插入一条数据:
insert into table_name ( 字段1, 字段2,...字段N ) values
( value1, value2,...valueN );
insert into table_name values ( value1, value2,...valueN );
- 插入多条数据,用’,‘隔开:
insert into table_name values
( value1, value2,...valueN ),
( value1, value2,...valueN ),
( value1, value2,...valueN );
5. 数据操作
5.1 查询
5.1.1 基础查询
语法 | 说明 |
---|---|
select * from 表名; |
查看表中所有数据 |
select 字段1,字段名2 ... from 表名; |
查看表中字段1,字段2 … 中的数据 |
select distinct 字段 from 表名; |
去重查询 |
5.1.2 限制查询
语法 | 说明 |
---|---|
select 字段列表 from 表名 limit n; |
返回字段的n条数据,n>=0 |
select 字段列表 as 别名 from 表名 limit n; |
返回字段的n条数据,并把字段修改为其他的名字 |
select 字段列表 from 表名 limit n,m; |
返回第n条数据后的m条数据 |
select 字段列表 from 表名 limit n offset m; |
从 第m条数据后返回n个数据,可用于实现分页 |
5.1.3 条件查询
语法:select 字段名列表 from 表名 where条件
- 关系运算符:> 、 >=、 <、 <=、 =、!=、<>、 between… and
- 逻辑运算符:and 、 or、 not
- 集合运算符:in 、not in
- 判空运算符:is null、is not null
- 通配符:_、%(与关键字一起使用)
_为占位符,一个只能匹配一个字符;而%可以匹配多个字符
5.1.4 排序查询
语法:
select 字段列表 from 表名 order by 字段 (asc);
默认升序select 字段列表 from 表名 order by 字段 desc;
降序- 可与limit、条件等方式连用
5.2 集合函数
函数 | 说明 | eg |
---|---|---|
count() | 返回列的函数 | select count(字段) from 表名; 字段为*或者1时计算结果包括空值 |
sum() | 返回列的和 | select sum(字段) from 表名; |
avg() | 返回列的均值 | select avg(字段) from 表名; |
max() | 返回列的最大值 | select max(字段) from 表名; |
min() | 返回列的最小值 | select min(字段) from 表名; |
5.3 分组查询
select 字段名列表(包含集合函数)from 表名 group by 字段;
select 字段名列表(包含集合函数)from 表名 group by 字段 having 条件;
5.4 数据修改
语法:
update 表名 set 字段1 = 值1,字段2=值2... where 条件
- 不加where是修改所有数据
- 客户端启动时可加上参数:
mysql -u root --safe-updates -p
如果数据更新不加where会报错
5.5 数据删除
delete命令
delete from 表名 where 条件;
- 不加条件会删除表中所有数据
truncate命令
truncate table 表名;
- 清空表中所有记录,相当于
delete from 表名;