一文看遍 Mysql 常用命令

文章目录

  • 数据库管理
      • 查看 MySQL版本
      • 数据库登录
      • 查询数据库引擎
      • 查看所有数据库
      • 退出数据库
  • 创建数据库
      • 创建数据库
      • 删除数据库
      • 进入指定数据库
      • 查看已进入的数据库名
  • 创建数据表
      • 查看数据表
      • 创建数据表
        • 数据类型
        • 表约束
      • 查看表结构
      • 备份数据表结构
      • 清空表内容
      • 删除表
  • 修改表结构
      • 增加列
      • 删除列
      • 修改列
  • 数据表中数据 CRUD
      • INSERT语句
      • UPDATE语句
      • DELETE语句
      • SELECT语句
        • 查询数据表
        • 去重
        • 设置别名
        • where条件
        • 范围查询
        • 范围匹配查询
        • 空值查询
        • 模糊查询
        • 排序查询
        • 分页查询
        • more

数据库管理

查看 MySQL版本

mysql --version

数据库登录

mysql -u用户名 -p

查询数据库引擎

show engines;

常见的 MySQL数据库的操作引擎有8种,需要了解的只有两种 [ InnoDB | MyISAM ]
InnoDB: 数据库支持事物操作,数据库行级锁,外键等功能,默认引擎
MyISAM:不支持事物操作,但是数据的读写性能非常友好

查看所有数据库

show databases [like ''];

退出数据库

quit | exit

创建数据库

创建数据库

# 创建一个数据库 并设置默认编码为 utf8
create database [IF NOT EXISTS] <db_name> default charset='UTF8';

删除数据库

drop database <db_name>;

进入指定数据库

# 数据库创建成功后并不表示选定并使用它,你必须明确操作进入指定数据库
use <db_name>;

进入数据库后,可使用 use 语句切换其它数据库

查看已进入的数据库名

select database();

创建数据表

查看数据表

show tables;

创建数据表

# 基本语法
create table <tab_name>(
    列名称 数据类型 [表约束],
    列名称 数据类型 [表约束]
);

############################

create table student(
    id int primary auto_increment,
    name varchar(20) not null,
    age int
)

数据类型

类型 描述
int 整数
float 浮点数
datetime 日期时间
timestamp 时间戳
char 定长字符串
varchar 变长字符串
text 长文本数据

表约束

语法 描述
not null 非空约束
unique 唯一约束
primary key 主键约束
auto_increment 自动增长
default 默认约束

查看表结构

desc <tab_name>;

备份数据表结构

create table <new_tab_name> as select * from <old_tab_name> where 1 = 2;

清空表内容

truncate table <tab_name>

删除表

drop table <tab_name>

修改表结构

增加列

# 增加一列到末尾
alter table <tab_name> add column <col_name> <col_definition>

# 增加一列到开头
alter table <tab_name> add column <col_name> <col_definition> first

# 增加一列到指定列后
alter table <tab_name> add column <col_name> <col_definition> after <col_name>

删除列

alter table <tab_name> drop <col_name>

修改列

# 修改 列数据类型
alter table <tab_name> modify <col_name> <new_col_definition>

# 修改 列名 及 数据类型
alter table <tab_name> change <old_col_name> <new_col_name> <new_col_definition>

数据表中数据 CRUD

INSERT语句

insert into <tab_name> [(col_name,col_name...)] values (1,值2...);

# 全字段增加数据
insert into student values (1,"小明",18);

# 指定字段增加数据
insert into student (name,age) values ("小红",16)

# 增加多条数据
insert into student values (3,"tom",15),(4,"jey",19);

# 备份数据到新表
insert into <new_tab_name> as select * from <old_table_name>

UPDATE语句

update <tab_name> set <col_name> = <value>,<col_name> = <value>... where 条件;

DELETE语句

delete from <tab_name> where 条件

SELECT语句

查询数据表

select {* | col_name} from <tab_name>
[
where <表达式>
group by <字段>
order by <字段>
limit <字段>
]

# 查询表中所有字段
select * from 表名;

# 查询表中指定字段
select <col_name,col_name....> from 表名:

去重

select distinct <col_name> from <tab_name>;

备注:

  • distinct 关键字只能在 select 中使用
  • 在对一个或多个字段去重时,distinct 关键字必须在所有字段的最前面
  • 如果 distinct 关键字后有多个字段,则会对多个字段进行组合去重,也就是,只有多个字段组合起来完全是一样的情况下才会被去重

设置别名

在使用 select 语句查询的时候,MySQL会显示每个 select后面输出的字段,有时为了显示结果更加直观,我们可以为字段指定一个别名

select <col_name> as 别名 from <tab_name>;

where条件

select * from 表名 where <条件>

# 单条件
select * from student where age > 18

# 多条件
# and : 记录满足所有条件,才会被查询出来
# or : 记录满足任意一个条件,才会被查询出来
# xor : 满足一个条件并且不满足另一个条件,才会被查询出来

select * from student where age > 15 and id > 10

范围查询

MySQL 提供了 between and 关键字,用来判断字段的数值是否在指定范围内

between and 需要两个参数,即范围的起始值和终止值。如果字段值在指定的范围内,则这些记录被返回

select * from <tab_name> where <col_name> between n1 and n2

# 查询年纪在 15 到 18 岁之间的学生
select * from student where age between 15 and 18

范围匹配查询

MySQL 提供了 in /not in ,用来范围匹配查询

进行离散数据(不连续的数据)检索时,通常会采用 in 查询的方式

select * from <tab_name> where <col_name> in (value1,value2,value3...)

# 查询年纪为 15,20,25 的学生
select * from student where age in (15,20,25)

空值查询

MySQL 提供了 is null 关键字,判断字段的值是否为空值(MULL),空值不等于0,也不同于空字符串

select * from <tab_name> where <col_name> is null

模糊查询

MySQL 提供了 like 关键字,用于模糊查询

like 关键字 支持 %_ 通配符

  • % 代表任何长度的字符串,字符串长度可以为0
  • _ 代表单个字符

注意:
不要过度使用通配符,MySQL对通配符的处理一般会比其它操作符花费更长时间
除非有必要,否则不要把通配符用在字符串的开始处,放在开始处搜索起来是最慢的

select * from <tab_name> where <col_name> like <str>

# 查询名字中包含 n 的学生
select * from student where name like "%n%"

排序查询

通过条件语句查询到的数据一般都是按照数据表中的顺序来显示,为了使查询结果的顺序满足用户的要求,MySQL提供了 order by 关键字来对查询结果进行排序

  • asc : 默认值,按升序排列
  • desc : 按降序排列
select * from <tab_name> order by <col_name> [asc|desc]

# 单字段排序
select * from student order by age

# 多字段排序
# 首先按照 age 进行排序 ,如果有多条数据 age 相同,按照 name 数据排序
select * from student order by age,name

分页查询

当数据量较大时,一次性查询表中全部数据会降低数据返回速度,同时查阅不方便,这时候就可以使用 limit 关键字按照分页的方式进行查询

limit 是一个特殊的关键字,用于指定查询结果从哪条记录开始显示,一共显示多少条数据,第一条记录的位置是 0

select * from <tab_name> limit 初始位置,记录数

# 查询数据表中 从第 3 条记录开始的 2 行记录
select * from student limit 2,2

more

http://c.biancheng.net/mysql/70/

你可能感兴趣的:(数据库)