软件学习笔记【MySQL】
一、概述
概念辨析:数据库(DB) & 数据库管理系统(DBMS) & 关系型数据库(RDBMS)。
2.连接操作
# 在本机上 按键 windows+A+X 打开powershell ;cd ...\bin 位置
net start mysql #启动
mysql -u root -q #客户端连接
二、SQL
通用:分号结尾;单行注释:# ;多行注释: /* */。
分类:DDL【定义】;DML【增删改】;DQL【查询】;DCL【控制权限】。
DDL:
#数据库操作:查询、创建、删除、使用
show database; select database()
create database 数据库名;
drop database;
use database;
#表操作-查询
show tables;
DESC 表名;
show create table 表名;
#表操作-创建
create table 表名(
字段1 字段1类型 comment ‘字段1命名’,
字段2 字段2类型 comment ‘字段2命名’
)comment '命名';
#表操作-修改:添加字段、修改类型、删除、修改表名
Alter table 表名 Add 字段名 字段类型 comment ‘命名’;
Alter table 表名 modify 字段名 字段类型;
Alter table 表 change 旧字段 新字段 新字段类型;
Alter table 表名 drop 字段名 字段类型;
Alter table 表名 rename to 字段名 字段类型;
#表操作-删除:删除表、删除表名
Drop table [if exist] 表名;
Truncate table 表名;
数据类型
(1)数值:int float double decimal
(2)字符串:char varchar blob text
(3)时间:date time year datetime timestamp
4.DML
#添加数据
Insert into 表名(字段名1,字段名2...) values(值1,值2,...);
Insert into 表名 values(值1,值2,...)
#修改数据
Update 表名 set 字段名1=值1,字段名2=值2 where 条件;
#删除数据
Delete from 表名 where 条件;
5.DQL
#基础查询
select 字段 from 表名;
select distinct 字段 as a from 表名;
#条件查询
select 字段 from 表名 where 条件;
#条件:> < = between...and in like
#聚合查询:count max min avg sum
select count(*) from 表名
#分组查询
select 字段 from 表名 where 条件 group by 分组字段名 Having 分组后条件
#分组前过滤:where
#分组聚合后:having
#排序查询
select 字段 from 表名
where 条件
group by 分组字段名 having 分组后条件
order by 字段1,排序方式;
#排序方式:DESC ASC
#分页查询
select 字段 from 表名 limit 起始索引,查询记录数;
执行顺序:
from---where---group by ---having---select---order by---limit.
6.DCL:管理用户和权限控制。
三、函数
字符串函数
Concat(s1,s2,...)
Lower(str) Upper(str)
Lpad(str,n,pad) Rpad(str,n,pad)
Trim(str) Substring(str,start,len)
2.数值函数
ceil(x) floor(x) mod(x,y) rand() roundn(x,n)
3.日期函数
curdate() curtime() now()
Year(now())
Date_add(date,Interval expr type)
Datediff(date1,date2)
4.流程函数
If(value,T,F) Ifnull(value1,value2)
case ... when...then else end
case [expr] when [val1] then [res1]...else[default] end
四、多表查询
内连接
(1)隐式:select 字段 from 表1,表2 where 条件;
(2)显式:select 字段 from 表1 inner join 表2 on 连接条件;
2. 外连接
(1)左外(完全包含左表数据)
select 字段 from 表1 left join 表2 on 连接条件;
(2)右外(完全包含右表数据)
select 字段 from 表1 right join 表2 on 连接条件;
3.自连接
select 字段 from 表1 别名1 join 表1 别名2 on 连接条件;
4.联合查询:列数和字段类型必须一致
select 字段 from 表1
union
select 字段 from 表2;
5.子查询
select 字段 from 表1 where col1=(select col1 from 表2);
(1)标量子查询:数值、日期、< > =
(2)列子查询:all any
(3)行子查询:in not = > <
(4)表子查询:in
五、事务
1.四大特性:原子性、一致性、隔离性、持久性。
2.事务操作:
开启:start transaction 、 Begin
提交:commit
回滚:rollback
六、窗口函数
函数(排序函数 or 聚合函数 or 其他函数 )
over (
partition by <分组列>
order by <排序列>
rows between...and...
);