目录
一、MySQL
1、概念
MySQL 是一种关系型数据库,在Java企业级开发中非常常用,因为 MySQL 是开源免费的,并且方便扩展。
2、安装
下载链接:MySQL :: Download MySQL Community Server
安装教程:MYSQL数据库安装教程_zzuli_xiaomingke的博客-CSDN博客_数据库安装
3、服务启动
管理员方法启动命令提示符
启动服务:net start mysql
关闭服务:net stop mysql
4、常用命令
- show databases; 查看当前所有数据库
- use 库名; 打开指定的库
- show tables; 查看当前库的所有表
- show tables from 库名; 查看其他库的所有表
- create table 表名( 列名 列类型,列名 列类型;。。。); 创建表
- desc 表名; 查看表结构
- select version() 登录进mysql查看版本
- mysql --version 没有登录mysql,在命令行查看,或者mysql --V
5、语法规范
- 不区分大小写,建议关键字大写,表名,列名小写
- 每条命令最好用分号结尾
- 每条命令根据需要,可以进行缩进或换行
- 注释
单行注释:#注释文字
单行注释:-- 注释文字
多行注释: /* 注释文字 */
二、DQL语言
1、常用操作
常用操作
- select 常量值; 查询常量值
- select 表达式; 查询表达式
- select 函数; 查询函数
起别名
1、便于理解
2、如果要查询字段有重名的情况,使用别名来区分
去重(distinct关键字)放在select之后
+号的作用
- 两者都为数值型,进行加运算
- 其中一者为字符型的数值,将其转换为数值型,进行加运算
- 其中一者为字符,转换失败,将字符转为0,进行加运算
- null + 10 ,其中一者为null,结果一定为null
运算符
条件运算符: > < = != <> >= <=
逻辑运算符: && || ! and or not
连接字符 concat(字符1,字符2,。。。)
2、常用函数
单行函数
字符函数
函数 | 用法 |
length() | 获取字符长度 |
concat() | 拼接字符 |
upper() | 转大写 |
lower() | 转小写 |
substr() | 截取字符(sql中下标从1开始) substr(字符,初始位置) substr(字符,指定初始位置,指定字符长度) |
instr() | 子字符在父子符第一次出现的位置 instr(父子符,子字符) |
trim() | 去两端指定字符(默认为空格) trim(字符) |
lpad() | 用指定字符左填充到指定长度 lpad(字符,字符长度,填充字符) |
rpad() | 用指定字符右填充到指定长度 注:指定长度小于字符长度,会从右截取字符 |
replace() | 替换字符 replace(字符,被替换字符,替换字符) |
数学函数
函数 | 用法 |
round() | 四舍五入函数 round(数值) |
ceil() | 向上取整 |
floor() | 向下取整 |
truncate() | 截断 truncate(数值,保留位数)不进行四舍五入 |
mod() | 取余函数 |
日期函数
函数 | 用法 |
now() | 返回当前系统日期+时间 |
curdate() | 返回当前系统日期 |
curtime() | 返当前系统时间 |
year(日期) month(日期) monthname(日期)英文名称 | 获取指定的的部分 |
str_to_date() | 日期格式的字符转为指定格式的日期 str_to_date('9-13-1999', '%m-%d-%Y') |
date_format() | 将日期转化为字符 |
格式符:%Y 四位的年份 %y 两位的年份 %m 月份(01,02,03 ...)
%c 月份(1,2,3 ...) %d 日 %H 小时(24小时制)
%h 小时(12小时制) %i 分钟 %s 秒
流程控制函数
if else
if(判断语句,true执行,false执行)
case函数
使用一:类似switch...case
case 表达式或字段
when 常量1 then 要显示的值1或语句1;
when 常量2 then 要显示的值2或语句2;
...
else 要显示的值n或语句n;
end
(then后面 值不用加分号,语句要加分号)
使用二:类似多重if
case
when 条件1 then 要显示的值1或语句1;
when 条件2 then 要显示的值2或语句2;
...
else 要显示的值n或语句n;
end
分组函数
- sum()求和
- avg()求平均值
- max()求最大值
- min()求最小值
- count()求个数
特点:
A、sum、avg一般用于处理数值,max、min、count可以处理任何类型
B、以上分组函数都忽略了null值
3、查询方式
简单查询
select 查询列表 from 表名; (查询多个字段用逗号隔开)
模糊查询
1、like 关键字
% 匹配任意个字符
_ 匹配任意单个字符
$ 转义
2、between and
3、in 关键字
in (匹配列表);in 列表的值类型必须一致或者兼容
4、is null | is not null
可以判断null值
= 和 <> 不能判断null值
5、<=>安全等于
既可以判断null值,也可以判断普通值
排序查询
order by 排序列表 [ asc | desc ] 根据排序列表排序;
asc 升序(默认,可不写);desc降序
分组查询
> select 分组函数,列(要求出现在group by的后面)from 表
>【where 筛选条件】 group by 分组的列表【having 分组后再筛选】【order by 子句】
连接查询
语法:
select 查询列表 from 表1 别名 【连接类型】
join 表2 别名 on 连接条件
【where】【group by】【having】【order by】
连接类型:
内连接:inner
外连接
左外:left [outer] 左边的为主表
右外:right [outer] 右边的为主表
全外:full [outer]
交叉连接:cross (笛卡尔乘积)
子查询
分类:
按子查询出现的位置:
- select后面:仅仅支持标量子查询
- from后面:支持表子查询
- where或having后面:标量子查询、 列子查询 、行子查询
- exists后面(相关子查询):(结果只有1和0)(判断是否有结果) 表子查询
按结果集的行列数不同:
- 标量子查询(结果集只有一行一列)
- 列子查询(结果集只有一列多行)
- 行子查询(结果集有一行多列)
- 表子查询(结果集一般为多行多列)
分页查询
语句末尾 limit 起始位置 , 要显示的行数 (索引从0开始)
联合查询
关键字:union
语法:语句一 union 语句二 union 语句三 ....
应用场景:查询结果来自不同表,且无直接关系,但查询信息一致时。
特点:
- 要求多条查询语句的查询列数是一致的
- 要求多条查询语句的查询的每一列的类型和顺序最好一致
- union默认去重,使用union all可以包含重复项