Mysql
简介
- 作用:存放数据
- 版本:5.7和8.0
Mysql的三层结构
SQL语句分类
- DDL:数据定义(创建create)
- DML:数据操作(增insert,删改)
- DQL:数据查询(select)
- DCL:数据控制(管理数据库:用户权限,grand,revoke)
数据库操作
打开Mysql
1 | mysql -u root -p |
显示数据库
1 | SHOW DATABASES; |
创建数据库
1 | CREATE DATABASE 数据库名 |
使用数据库
1 | USE 数据库名字; |
‘’可以规避关键字,若要以关键字命名数据库,可以使用’’
备份数据库
在shell中运行
备份文件是用户输入的一系列sql语句
1 | //备份数据库 |
恢复数据库
语句不用分号
1 | source 备份文件夹路径 |
删除数据库
1 | DROP DATABASE 数据库名; |
数据类型
类型 | ||
---|---|---|
int | ||
char | ||
date | ||
表操作
创建
1 | CREATE TABLE 表名( |
character set和collate:如不指定,将以所在数据库的字符集为准
查看
查看数据库中的所有表格
1 | SHOW TABLES; |
查看表格结构(列)
1 | DESC 表名 |
查看表中的所有数据
1 | SELECT * FROM 表名 |
修改alter
修改表名
1 | rename table 表名 to 新表名 |
修改表名字符集
1 | alter table 表名 character set 字符集 |
添加列
1 | alter table 表名 add(字段 类型,字段 类型) |
修改列类型
1 | alter table 表名 modify (字段 类型,字段 类型) |
修改列名
1 | alter table 表名 change 列名 新列名 类型 |
筛选select
查看某列
1 | SELECT 列名 FROM 表名; |
查看某列中满足条件的数据
1 | SELECT 列名 FROM 表名 WHERE 列 运算符 值; |
数据去重
1 | select distinct 列名 FROM 表名; |
给列取别名
1 | select 列名 as 别名 from 表名 |
and or | ||
in | 在集合中 | in(100,200)在集合{1,2}中 |
between and | 介于范围 | between 80 and 90 介于80-90包含两头 |
like | 模糊查询 | “韩%” 查询姓韩的同学 %表示任意字符 _表示任意一个字符 |
排序
表格按照某列的值排序
1 | //升序(从上到下,依次递增),默认为升序 |
添加insert
插入一行数据
1 | insert into 表名 values(数据1,数据2,数据n) |
对某些列插入数据
1 | insert into 表名 (列1,列2)values(列1数据,列2数据) |
给列添加多个值
1 | insert into 表名 (列名) values (数据),(数据),(数据) |
修改
修改整列的值
1 | update 表名 set 列名=value |
修改某些列满足条件的值
1 | update 表名 set 字段1=value,字段2=value where 列 运算符 值 |
删除
删除所有数据
1 | delete from 表名 |
删除行数据
1 | delete from 表名 where 列 运算符 值 |
删除列
1 | alter table 表名 drop 列名 |
函数
统计函数count–返回行的总数
1 | //1。count(*) 返回满足条件的记录的行数 |
合计函数sum–返回where条件的行的和,只对数值列起作用
1 | select sum(数值列) from 表名 where 列 运算符 值 |
平均值avg–求列的平均值
1 | select avg(列名) from 表名 |
最值max/min–列最大值
1 | select max(列名) from 表名 |
表复制
1 |
删除重复记录
1 | #利用distinct筛选数据到临时表 |
分组函数
分组
1 | select 列1,列2... from table group by 列 |
分组后过滤having(有)
1 | select 列1,列2... from table group by 列 having 列 运算符 值 |
字符串函数
数学函数
时间函数
获取当前时间戳(年月日时分秒)
1 | now() |
获取当前日期
1 | current_date() |
日期加减
1 | //加 |
计算天数差
1 | dateiff(date1,date2)--date为日期 |
unix时间戳–1970-1-1至今
1 | unix_timestamp() |
将unix时间戳转化为指定格式的时间
1 | form_unixtime(unix_timestamp(),'%Y-%m-%d %H:%i:%s')//年-月-日 时:分:秒 |
加密和系统
查询使用sql的用户
1 | user()--返回用户名和IP地址 |
查询当前使用的数据库名字
1 | datebase() |
为字符串进行MD5加密,经过MD5加密的字符串是32位的字符串,所以密码的类型常用char(32)
1 | MD5(str) |
加密函数
1 | password(str) |
流程控制函数
如果姓名为Jack则将jack替换为杰克显示
判断是否为NULL不用==而用is
多表查询
分页
1 | #从start+1行开始,取出rows行 |
笛卡尔积
1 | select * from emp,det;#emp的每一行和det的每一行进行拼接,得到结果行数=emp行数*det行数 |
自连接
1 | #把同一张表当做两张表使用,但要给两张表取别名 |
多列子查询
1 | (value1,value2)=(select ...) |
事务
索引
视图
用户管理
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 xiao's blog!