Mysql数据库管理系统以及SQL--》DQL

概念:

常说的装数据库 就是装数据库管理系统 DBMS(常用的sql service2008(微软 win)/mysql/db2 Oracle、IBM (以上是关系性管理系统R(relation)DBMS) mangodb(非关系型数据库(nosql ),属于文档型数据库。先解释一下文档的数据库,即可以存放xml、json、bson类型系那个的数据。数据结构由键值(key=>value)对组成。)) 也可以教数据库软件 数据库应用 而数据库管理软件就是对数据库DB进行管理的;程序猿使用DBMS就需要使用SQL(结构化查询语言 structure query language)对数据库用来访问和操作数据库系统。

SQL:(结构化语言)

一、DQL(数据查询语言 data query language)

(1)基础查询:

1、涉及关键词:select from

2、语法:select 查询列表 from 表名

(2)条件查询

1、涉及关键词:select from where

2、语法:select 查询列表 from 表名 where 筛选条件

3、筛选条件的分类:

        1、简单条件运算符:> < = <> != >= <=  <=>安全等于

·       2、逻辑运算符: && (and)、|| (or) 、! (not)

        3、模糊查询:涉及关键词 like 一般搭配通配符使用,可以判断字符型或数值型

通配符:%任意多个字符,_任意单个字符

(3)排序查询

1、涉及关键词:select from where order by 【asc(默认,升序)/desc】

2、语法:select 查询列表  from 表  where 筛选条件  order by 排序列表 【asc}desc】

3、注意:order by的位置一般放在查询语句的最后(除limit语句之外)

(4)常见函数

分类:

1、单行函数:字符 、数学、 日期、 流程控制 、其他函数

字符:concat()做字符的拼接(不涉及字符串的概念)、substr(截取函数)、upper(表大写) 、lower(变小写)、replace(替换)、length(返回字节长度)、trim(去掉前后空格  去掉自选字符 ‘字符’ from 主字符)lpad(左填充)rpad(右填充) instr(获取子串中第一次出现的索引)

数学:round四舍五入 mod 取模 floor 乡下取整 ceil 向上取整  truncate截断 rand 获取随机数

日期:datediff 返回两个日期的差值 now(返回当前日期时间)year(返回年)month(返回月)day(返回日)date_format 将日期转换成字符 str_to_date 将字符转换为日起 curtime 返回当前时间 hour:小时 minute:分钟  second:秒   monthname:以英文形式返回月

其他:version 当前数据库服务器的版本  database 当前打开的数据库  user当前用户
password('字符'):返回该字符的密码形式   md5('字符'):返回该字符的md5加密形式

流程控制:

①if(条件表达式,表达式1,表达式2):如果条件表达式成立,返回表达式1,否则返回表达式2

②case情况1
case 变量或表达式或字段
when 常量1 then 值1
when 常量2 then 值2
...
else 值n
end

③case情况2
case 
when 条件1 then 值1
when 条件2 then 值2
...
else 值n
end

2、分组函数

count max min avg  sum 传一组 返回一个

支持的类型
    sum和avg一般用于处理数值型
    max、min、count可以处理任何数据类型
以上分组函数都忽略null
和分组函数一同查询的字段,要求是group by后出现的字段

(5)分组查询

语法:

select 分组函数,分组后的字段
from 表
【where 筛选条件】
group by 分组的字段
【having 分组后的筛选】
【order by 排序列表】

二、特点
                使用关键字        筛选的表       位置
分组前筛选      where            原始表     group by的前面
分组后筛选      having        分组后的结果    group by 的后面

(6)连接查询

sql92(支持内连接(等值连接 非等值连接 自连接 ) 部分外连接(oracle mysql sqlserver不支持))标准 sql99标准(建议)(内连接 外连接(左外 右外 全外(mysql不支持)交叉连接 形成一个笛卡尔积 )):

sql92:

等值连接语法:

    select 查询列表
    from 表1 别名,表2 别名
    where 表1.key=表2.key
    【and 筛选条件】
    【group by 分组字段】
    【having 分组后的筛选】
    【order by 排序字段】

sql99:外连接语法 内连接将left|right|full 换成inner 交叉 换成corss

select 查询列表
from 表1 别名
left|right|full【outer】 join 表2 别名 on 连接条件
where 筛选条件
group by 分组列表
having 分组后的筛选
order by 排序列表
limit 子句;

(7)子查询

分类:

1、按出现位置
    select后面:
        仅仅支持标量子查询
    from后面:
        表子查询
    where或having后面:
        标量子查询
        列子查询
        行子查询
    exists后面:
        标量子查询
        列子查询
        行子查询
        表子查询

2、按结果集的行列
    标量子查询(单行子查询):结果集为一行一列
    列子查询(多行子查询):结果集为多行一列
    行子查询:结果集为多行多列
    表子查询:结果集为多行多列

(8)分页查询

1、语法:select 查询列表  from 表 limit 【offset,】size;

注意:
    offset代表的是起始的条目索引,默认从0卡死
    size代表的是显示的条目数

计算起始页面公式:

假如要显示的页数为page,每一页条目数为size
select 查询列表  from 表   limit (page-1)*size,size;

(9)联合查询

1、涉及关键词:union:合并、联合,将多次查询结果合并成一个结果

2、语法

查询语句1
union 【all】
查询语句2
union 【all】
...

3、特点:

要求多条查询语句的查询列数必须一致
要求多条查询语句的查询的各列类型、顺序最好一致
union 去重,union all包含重复项

(10)查询总结

语法 及执行顺序

select 查询列表    ⑦

from 表1 别名       ①

连接类型 join 表2   ②

on 连接条件         ③

where 筛选          ④

group by 分组列表   ⑤

having 筛选         ⑥

order by排序列表    ⑧

limit 起始条目索引,条目数;  ⑨

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值