mySQL数据库学习
优点
- 开源、免费、成本低
- 性能高、移植性好
- 体积小、便于安装
安装
属于c/s架构的软件,一般来讲安装服务端
MySQL服务的启动和停止
方式一: 命令行
启动:net start 服务名
停用:net stop 服务名
方式二: 计算机 – 右键 – 管理 – 服务
MySQL服务登录和退出
登录:mysql [ -h主机名 -P端口号] -u用户名 -p密码
eg:
mysql -uroot -p123123
退出:exit 或者 ctrl + c
一、 DQL (data query language)语言学习
所有查询之前先声明:use 数据库名
- 基础查询
AS起别名
DISTINCT去重
concat做字符串拼接
IFNULL()函数,只能判断值是否为null,第一个参数为要判断的字段,第二个参数为满足条件时需要做的赋值,如下面写法:如果为null,就显示为0,不为null,就显示原值commission_pct
- 条件查询
条件表达式(> ,< ,<> ,!= ,>=, <=, =)
逻辑表达式筛选(AND NOT OR)
模糊查询(like,between…and, in)
like
关键字转义 \ 或使用escape
between … and …
in:判断某字段的值是否属于in列表中的某一项
is null 和 Is not null 可用于判断是否为Null值的字段
安全等于 <=> 判断是否等于,可以判断为Null的值以及其他值均可判断,但是可容性较差,用的较少
is null和安全等于区别
- 排序查询
asc升序 和 desc降序排序
order by也支持按照别名排序
order by多个字段排序,逗号分隔
- 常见函数
单行函数
1) 字符函数
instr
trim
lpad , rpad
replace
2) 数学函数
3) 日期函数
str_to_date
str_to_date 将字符串转为日期格式
date_format 将日期转为字符串
4) 其他函数
5.)流程控制函数
if
case 类似于switch时
case类似于多重if时
- 分组函数
多个值进行计算,最后得到一个值
注意:count个数总和 只有非空的才会计算在内
一起执行,逗号分割
和关键字 distinct 搭配使用 去重之后的结果
count函数的详细用法
count(*)统计所有行数,count(1)也是统计行数,相当于新增一列,每个值都是1,相当于统计了为1的个数=行数
- 分组查询
having 根据分组后结果进行筛选
- 连接查询
等值连接(两张表共同字段作为连接条件,等号连接)
为表起别名,提高简捷度,区分多个重名字段
多表连接
非等值连接 两个表通常没有相同字段,通过判断大于,小于等关系建立连接
自连接 在同一张表中找了两遍以上
sql199语法
多表连接
sql199 非等值连接
sql199自连接
外连接 用于查询 一个表中有,一个表中没有的数据
左外连接
交叉连接 笛卡尔乘积结果
- 子查询
标量子查询(>,<等符号判断的)
列子查询(in,any/some,all)
行子查询 (结果集一行多列或者多行多列,用的较少)
select后面子查询
from后面子查询
exists后面(相关子查询),用的较少 可以用其他查询(in)代替
上下两种方式都可以查询出结果
上下两种方式都可以查询出结果
- 分页查询
执行顺序
- union联合查询
要查询的结果来自多张表,并且表之间没有连接关系时,使用联合查询