一,安装mysql
MySQL :: Download MySQL Installer
二,配置环境
path下添加自己安装路径 H:\installback\mysql\MySQL Server 5.7\bin
三,基础命令
启动服务:net start mysql
关闭服务:net stop mysql
连接数据库:mysql -h localhost -P 3306 -u root -p
回车输入密码即可。
四,MySQL的常见命令
1.查看当前所有的数据库: show databases;
2.打开指定的库: use 库名
3.查看当前库的所有表 show tables;
4.查看其它库的所有表 show tables from 库名;
5.创建表 create table 表名(
列名 列类型,
。。。
);
6.查看表结构 desc 表名;
7.查看服务器的版本
方式一:登录到mysql服务端
select version();
方式二:没有登录到mysql服务端
mysql --version
或
mysql --V
五,规范
1.不区分大小写,但建议关键字大写,表名、列名小写
2.每条命令最好用分号结尾
3.每条命令根据需要,可以进行缩进 或换行
4.注释
单行注释:#注释文字
单行注释:-- 注释文字
多行注释:/* 注释文字 */
六 SQL的语言分类
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语言的学习
1,基础查询:select * from table
去重:select DISTINCT 字段 from table
查非:slect * from table where 字段 <> '值'
2,条件查询:select (字段|表达式|常量值|函数) from table where 条件
3,常见条件表达式,逻辑表达式,逻辑运算符,模糊查询:
条件表达式示例:salary>10000
条件运算符: > < >= <= = != <>
逻辑表达式示例:salary>10000 && salary<20000
select * ,salary*12*(1+ifnull(commission_pct,0)) 年薪 from employees order by 年薪 desc.
逻辑运算符:
and(&&):两个条件如果同时成立,结果为true,否则为false
or(||):两个条件只要有一个成立,结果为true,否则为false
not(!):如果条件成立,则not后为false,否则为true
between 100 and 200
模糊查询示例:last_name like 'a%'
统配符:%任意多个字符,_任意单个字符
4,排序: order by 字段(asc(升) | desc(降))
5,常见函数
一、单行函数
1、字符函数
concat拼接(select ('a','b','c') as 结果)null和任何数值拼接都为null 》 ifnull
substr截取子串select concat(upper(substr (last_name,1,1)) ,'_',lower(substr(lastname,2)) out_put from employees;
upper转换成大写
lower转换成小写
trim去前后指定的空格和字符
ltrim去左边空格
rtrim去右边空格select trim('a' form 'aaabbbaaa' ) as out_put
replace替换select replace ('abcdefg','ab','DD') as out_put; => DDcdefg
lpad左填充 select lpad('abc',5,'*') as out_put; =>abc**
rpad右填充
instr返回子串第一次出现的索引 select instr('abcde','de') as out_put => 4
length 获取字节个数 select length('last_name') 字节长度 ,last_name,salary from empoyees order by 字节长度 desc
2、数学函数
round 四舍五入 round(1.56) => 2 round(1.567,2) => 1.57
rand 随机数
floor向下取整
ceil向上取整
mod取余
truncate截断 truncate(1.69999,1) =>1.6
3、日期函数
now当前系统日期+时间
curdate当前系统日期
curtime当前系统时间
str_to_date 将字符转换成日期 str_to_date('4-3 1992','%c-%d %Y')
date_format将日期转换成字符date_fromat(now(), '%y年%m月%d日') as out_put
4、流程控制函数
if 处理双分支 select ifnull(conum,0) from table(如果为null返回0,否则返回原值)
case语句 处理多分支
情况1:处理等值判断
情况2:处理条件判断
![]()
5、其他函数
version版本
database当前库
user当前连接用户
二、分组函数
sum 求和
max 最大值
min 最小值
avg 平均值
count 计数
特点:
1、以上五个分组函数都忽略null值,除了count(*)
2、sum和avg一般用于处理数值型
max、min、count可以处理任何数据类型
3、都可以搭配distinct使用,用于统计去重后的结果
4、count的参数可以支持:
字段、*、常量值,一般放1
建议使用 count(*)
六 ,分组查询
语法:
select 查询的字段,分组函数
from 表
group by 分组的字段
特点:
1、可以按单个字段分组
2、和分组函数一同查询的字段最好是分组后的字段
3、分组筛选
针对的表 位置 关键字
分组前筛选: 原始表 group by的前面 where
分组后筛选: 分组后的结果集 group by的后面 having
4、可以按多个字段分组,字段之间用逗号隔开
5、可以支持排序
6、having后可以支持别名
七,多表查询
1,多表:
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 排序的字段或表达式】
2,自连接:
eg1: SELECT e.last_name,m.last_name
FROM employees e
JOIN employees m ON e.`manager_id`=m.`employee_id`;
eg2: SELECT e.last_name,m.last_name
FROM employees e,employees m
WHERE e.`manager_id`=m.`employee_id`;
排序: select * from table order by a desc,b asc(先按照a排,再按照b排)
八,子查询:
一条查询语句中又嵌套了另一条完整的select语句,其中被嵌套的select语句,称为子查询或 内查询在外面的查询语句,称为主查询或外查询
select dep_id from deps where loc_id in(1400,1700)
九,分页查询
公式:select * from 表 limit (page-1)*sizePerPage,sizePerPage
十,联合查询
引入:
union 联合、合并
语法:
select 字段|常量|表达式|函数 【from 表】 【where 条件】 union 【all】
select 字段|常量|表达式|函数 【from 表】 【where 条件】 union 【all】
select 字段|常量|表达式|函数 【from 表】 【where 条件】 union 【all】
.....
select 字段|常量|表达式|函数 【from 表】 【where 条件】
特点:
1、多条查询语句的查询的列数必须是一致的
2、多条查询语句的查询的列的类型几乎相同
3、union代表去重,union all代表不去重