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 表名;

猜你喜欢

转载自blog.csdn.net/weixin_44515978/article/details/118324204