Mysql基础

Mysql基础

Mysql管理

Mysql服务的启动和停止

  • 计算机——右击管理——服务
  • 通过管理员身份运行
    • net start 服务名(启动服务)
    • net stop 服务名(停止服务)

Mysql服务的登录和退出

  • 通过mysql自带的客户端(只限于root用户)
  • 通过客户端命令输入
1
2
3
4
登录:
mysql -h 主机名 -P 端口号 -u 用户名 -p 密码
退出:
exit或ctrl+c

Mysql语法规范及常用命令

Mysql语法规范

  1. 不区分大小写,但建议关键字大写,表名、列名小写
  2. 每条命令最好用分号结尾
  3. 每条命令根据需要,可以进行缩进或换行
  4. 注释
  • 单行注释:#注释文字
  • 单行注释:– 注释文字
  • 多行注释:/ 注释文字 /

常用命令

1
2
3
4
5
6
7
8
9
10
11
show databases; 查看所有的数据库
use 库名; 打开指定 的库
show tables ; 显示库中的所有表
show tables from 库名;显示指定库中的所有表
create table 表名(
字段名 字段类型,
字段名 字段类型
); 创建表

desc 表名; 查看指定表的结构
select * from 表名;显示表中的所有数据

Mysql语言

Mysql中的语言主要可以分为如下四种:

  • DQL(Data Query Language):数据查询语言
    **select** 
    
  • DML(Data Manipulate Language):数据操作语言
    **insert 、update、delete**
    
  • DDL(Data Define Languge):数据定义语言
    **create、drop、alter**
    
  • TCL(Transaction Control Language):事务控制语言
    **commit、rollback**
    

DQL语言

Select

  • 单表查询:
1
2
3
4
5
select 要查询的字段|表达式|常量值|函数 from 表 
where 条件
group by
having
order by 排序的字段|表达式|函数|别名 【asc|desc】;

常见表达式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
一、条件表达式
示例:salary>10000
条件运算符:
> < >= <= = != <>

二、逻辑表达式
示例:salary>10000 && salary<20000

逻辑运算符:
and(&&):两个条件如果同时成立,结果为true,否则为false
or(||):两个条件只要有一个成立,结果为true,否则为false
not(!):如果条件成立,则not后为false,否则为true

三、模糊查询
示例:last_name like 'a%'

常见函数如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
一、单行函数
1、字符函数
concat拼接
substr截取子串
upper转换成大写
lower转换成小写
trim去前后指定的空格和字符
ltrim去左边空格
rtrim去右边空格
replace替换
lpad左填充
rpad右填充
instr返回子串第一次出现的索引
length 获取字节个数
2、数学函数
round 四舍五入
rand 随机数
floor向下取整
ceil向上取整
mod取余
truncate截断
3、日期函数
now当前系统日期+时间
curdate当前系统日期
curtime当前系统时间
str_to_date 将字符转换成日期
date_format将日期转换成字符
4、流程控制函数
if 处理双分支
case语句 处理多分支
情况1:处理等值判断
情况2:处理条件判断
5、其他函数
version版本
database当前库
user当前连接用户
二、分组函数
sum 求和
max 最大值
min 最小值
avg 平均值
count 计数
  • 多表连接查询
1
2
3
4
5
6
7
8
select 字段,...
from 表1
【inner|left outer|right outer|cross】join 表2 on 连接条件
【inner|left outer|right outer|cross】join 表3 on 连接条件
【where 筛选条件】
【group by 分组字段】
【having 分组后的筛选条件】
【order by 排序的字段或表达式】
  • 子查询

一条查询语句中又嵌套了另一条完整的select语句,其中被嵌套的select语句,称为子查询或内查询
在外面的查询语句,称为主查询或外查询。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
特点:
1、子查询都放在小括号内
2、子查询可以放在from后面、select后面、where后面、having后面,但一般放在条件的右侧
3、子查询优先于主查询执行,主查询使用了子查询的执行结果
4、子查询根据查询结果的行数不同分为以下两类:
① 单行子查询
结果集只有一行
一般搭配单行操作符使用:> < = <> >= <=
非法使用子查询的情况:
a、子查询的结果为一组值
b、子查询的结果为空
② 多行子查询
结果集有多行
一般搭配多行操作符使用:any、all、in、not in
in: 属于子查询结果中的任意一个就行
any和all往往可以用其他查询代替
  • 分页查询
1
2
3
4
5
6
7
8
9
10
11
12
13
select 字段|表达式,...
from 表
【where 条件】
【group by 分组字段】
【having 条件】
【order by 排序的字段】
limit 【起始的条目索引,】条目数;

特点:
通常起始条目从0开始
公式:select * from 表 limit (page-1)*sizePerPage,sizePerPage
每页显示条目数sizePerPage
要显示的页数 page
  • 联合查询
1
2
3
4
5
6
7
8
9
10
select 字段|常量|表达式|函数 【from 表】 【where 条件】 union 【all】
select 字段|常量|表达式|函数 【from 表】 【where 条件】 union 【all】
select 字段|常量|表达式|函数 【from 表】 【where 条件】 union 【all】
.....
select 字段|常量|表达式|函数 【from 表】 【where 条件】

特点:
1、多条查询语句的查询的列数必须是一致的
2、多条查询语句的查询的列的类型几乎相同
3、union代表去重,union all代表不去重

DML语言

Insert

1
insert into 表名(字段名,...) values(值1,...);

Update

  • 修改单表
1
update 表名 set 字段=新值,字段=新值 【where 条件】
  • 修改多表
1
2
3
4
update 表1 别名1,表2 别名2
set 字段=新值,字段=新值
where 连接条件
and 筛选条件

Delete

  • 删除单表
1
delete from 表名 【where 筛选条件】
  • 删除多表
1
2
3
4
delete 别名1,别名2
from 表1 别名1,表2 别名2
where 连接条件
and 筛选条件;

Truncate

1
truncate table 表名;

注意:面试中常常会问两者的区别

  1. truncate不能加where条件,而delete可以加where条件
  2. truncate的效率高一丢丢
  3. truncate 删除带自增长的列的表后,如果再插入数据,数据从1开始
    delete 删除带自增长列的表后,如果再插入数据,数据从上一次的断点处开始
  4. truncate删除不能回滚,delete删除可以回滚

DDL语言

库的管理

1
2
3
4
创建库
create database 库名;
删除库
drop database 库名;

表的管理

创建表
1
2
3
4
create table if not exists 表名{
字段名 类型 约束,
...
}
修改表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
alter table 表名 add|modify|drop|change column 字段名 【字段类型】;

修改字段名
alter table 表名 change column 旧字段名 新字段名 类型;

修改表名
alter table 表名 rename to 新表名;

修改字段类型和约束
alter table 表名 modify cloumn 字段名 类型 约束;

添加字段
alter table 表名 add column 字段名 类型 【位置】;

删除字段
alter table 表名 drop column 字段名;
删除表
1
drop table if exists 表名;

TCL语言

事务基础使用

1
2
3
4
5
6
7
8
set autocommit=0;
start transaction;
commit;
rollback;

savepoint 断点
commit to 断点
rollback to 断点

隔离级别设置

1
2
3
4
set session|global  transaction isolation level 隔离级别名;

查看隔离级别
select @@tx_isolation;

注意:如何避免事务的并发问题通过设置事务的隔离级别

  1. READ UNCOMMITTED
  2. READ COMMITTED 可以避免脏读
  3. REPEATABLE READ 可以避免脏读、不可重复读和一部分幻读
  4. SERIALIZABLE可以避免脏读、不可重复读和幻读

本文标题:Mysql基础

文章作者:JoinApper

发布时间:2019年11月10日 - 16:11

最后更新:2019年11月10日 - 16:11

原始链接:https://zhuofujiang.github.io/2019/11/10/Mysql基础/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。