数据库概述
一 数据库的好处
1.持久化的将数据保存到本地
2.可以实现数据化查询,方便管理
二数据库的相关概念
DB(database)数据库 数据的容器类比于"仓库"
DBMS(database management system) 数据库管理系统
常用的 DBMS:Mysql Oracle DB2 SQL server 等
SQL 结构化查询语言
专门用来与DBMS沟通的语言
三数据库的启动与登录
数据库的启动与停止
doc命令:以管理员身份
启动 net start mysql
停止 net stop mysql
登录: mysql -h主机号 -p端口号 -u 用户名 -p密码
SQL语言
分别有
数据查询语言DQL
数据操作语言DML
一.数据查询语言DQL
基础查询
语法:select 查询列表
form 表名
特点:查询列表可以是表中的字段,常量值,表达式,函数查询的结果是虚拟的表格
select *
form表名
表中所有字段
起别名
select 查询列表 AS或空格 别名
可以给查询列表起别名
注意:关键字必须用双引号引起来
去重
select distinct 字段名 from 表名
去掉表里的重复元素
+号的作用
MySQL中的加号只用作运算符
select ‘123’+12
他会先是试着将他转换成数值
转换成功,则继续做加法运算
转换失败,则将字符转换成0,在做运算
select null+任意 其结果都为null
可以用concat来实现连接
select concat(str1,str2,…)
条件查询
语法 :select 查询列表
from 表名
where 筛选条件
分类:
一按条件表达式分类
条件运算符 <,>,=,<=,>=,<>(不等于)
二按逻辑表达式筛选
逻辑运算符 and,or,not
三按模糊查询 like,between and,in,is null
模糊查询
1,like
一般与通配符搭配使用
通配符:%任意多个字符,包含0字符
_任意单个字符
where 查询列表 like ‘_a%’
即查询列表中第二个字母为a的
2 between and
where
查询列表 >=100and查询列表<=200
等价于
where
查询列表 between100and200
3.in
含义:用于判断某字段的值是否为in列表中的某一项
注意:in列表中的值应该类型统一
where
查询列表 in(值1,值2,值3,…)
4 is null 没有
is not null 有
安全等于 <=> 数值
查询工资为17000的员工信息
排序查询
语法:select 查询列表
from 表名
[where 筛选条件]
order by 排序列表 [asc/desc]
特点:1.asc代表升序,desc代表降序
如果不写就是默认是升序
2.order by 子句中可以支持单个字段,多个字段,表达式,函数,别名
3.order by 子句一般在查询语句的最后面,limit除外
常见函数
概念:类似Java中的方法,将一组逻辑语句封装在方法中,对外暴露方法名
好处:1.隐藏了实现细节 2.提供了代码的重用性
调用 select 函数名() [from]
特点:1.叫什么(函数名)
2.是什么(函数功能)
分类:1.单行函数
如 concat,length,ifnull,isnull等
2.分组函数
功能:做统计使用,又称统计函数,聚合函数,组函数
一 字符函数
1.concat 拼接函数
2.length 获取参数值的字节个数(UILT-8 中文有三个字节)
3.upper,lower
select upper() 大写
select lower () 小写
4.substr,substring
注意:索引从1开始
截取从指定索引出后面所以字符
select subster(‘我是大哥’ from 3)
截取从指定索引处指定字符长度的字符
select subster(‘我是大哥’ from3 for 4)
5.instr
返回子串第一次出现的索引的位置,返回位置的数值,如果找不到返回0
select instr (‘我是大哥哥’,‘大哥哥’)
6.trim (去掉前后的空格或去掉前后指定字符)
select trim(‘a’ from ‘aaaaa我是大哥aaaaaa’)
7.lpnd
select lpnd (‘大哥哥’,10,’*’) 超过字符长度填充小于截断
rpad
8.replace 替换
select replace (‘aaaaaaannnnnn’,‘n’,‘c’) 把n换成c
数学函数
1 round 保留几位小数,并四舍五入
select round (1.6666,3)
2 ceil 向上取整 返回>=该参数的最小整数
select ceil(-1.5) -1
floor 向下取整 返回<=该参数的最大整数
select foolr(-1.5) -2
3.truncate 取整无四舍五入
4.mod 取余
mod(a.b):a-a/b*b a/b 取整
5.日期函数
now 返回现在的日期时间
curdate 返回当前系统日期包含时间
curttime 返回当前系统时间不包含日期
str_to_date 将不规范时间格式,转换成规范的时间格式
SELECT STR_TO_DATE(‘6-02-2020’,’%m-%d-%Y’)
date-format 将日期转换成字符
SELECT DATE_FORMAT(NOW(),’%Y年-%m跃-%d日’)
2020年-02跃-21日
四其他函数
select version 查mysql版本号
database 查当前库
user 当前用户
五流程控制函数
if 函数
if(条件表达式,如果是怎么样,如果不是怎么样)
case函数
case 要判断的字段或者表达式
when 常量1 then
when 常量2 then
…
end
要判断的字段或表达式等于常量
case
when 条件一 then
…
end
要判断的字段或表达式范围在那个区间
分组函数
功能:用做统计使用,又称聚合函数或统计函数或组函数
分类:sum 求和 avg 求平均值 max 最大值 min最小值 count 计算个数
特点:
1 sum,avg 一般用于处理数值型
max min count 都可以处理
2 都忽略null值
3 可以搭配distinct 去重 使用
4 count的详细介绍
count( 随意传任何参数都行
5 和分组函数查询的字段有限制 要求是 grood by 后字段
补充 dateniff 返回两个日期相差的天数
分组查询
语法:select 分组函数 列(要求出现在gorud by 后面的字段
from 表名
[where 筛选条件]
groud by 分组列表
[order by 排序列表
注意:查询列表 必须是分组函数和groud by 后面的字段
where是在原有的表中筛选,而
having是在分组之后的新列表中进行筛选
能用where就不用having
group by 支持多个字段,函数,表达式
连接查询
含义:又称多表查询
笛卡尔乘积:当查询多个表时,灭有添加连接条件时,会导致多个表所有行实现完全连接 M*N
分类
按年代分
sql 92 标准:仅仅支持内连接
sql 99 标准:支持内连接+外连接(左外和右外)+交叉连接
按功能分类
内连接:等值连接
非等值连接
自连接
外连接: 左外连接
右外连接
全外连接
交叉连接
内连接
sql 92 :
内连接语法
select 查询列表
from 表一
inner john 表二
on 表一 key=表二key
左外连接语法
select 查询列表
from 表一主表
left join 表一
on 表一 key=表二key
右外连接语法
select 查询列表
from 表一主表
left join 表一
on 表一 key=表二key