当前位置:   article > 正文

数据库(七)-----高级查询(四)_数据库高级查询

数据库高级查询

目录

7.1 文本处理函数

7.1.1 upper

 7.1.2 lower

7.1.3 substring

 7.1.4 length

7.1.5 left

 7.1.6 right

 7.2 时间函数

7.3 组合查询/并查询

7.4 关系型数据库的三大范式

7.5 视图 


7.1 文本处理函数

作用:这些函数是为了处理文本使用的

7.1.1 upper

只针对于英文字母 把英文字母转换成大写

  1. 语法:upper(列名)
  2. select upper(列名) as 大写 from 表名;

 7.1.2 lower

只针对于英文字母 把英文字母转换成小写

select lower(列名) as 小写 from 表名;

7.1.3 substring

substring(列名, 开始位置): 从开始位置截取到末尾 包含第三个字符

select substring(列名, 开始截取的位置) as 截取 from 表名;

substring(列名, 开始位置, 长度):从开始位置开始 截取指定长度的字符 

select substring(列名, 开始截取的位置, 长度) as 截取 from 表名;

 7.1.4 length

length(列名):返回当前列下所有数据的长度

select length(列名) as 长度 from 表名;

locate(要查找的字符, 列名): 要查找的字符去指定列中 查找第一次出现的位置 如果找到则返回对应的位置 如果没有则返回0

select locate('8', teachertel) as `index` from  teacherinfo;

 # `:撇点  因为index是mysql中的关键字 但是如果你想使用这个关键字当成一个普通的名字 则使用撇点包裹起来 就会被认为是一个普通的名字

locate(要查找的字符, 列名, 开始位置):从指定的开始位置开始 去查找字符 找到则返回对应的位置 如果没有则返回0

7.1.5 left

left(列名, 长度):从左往右截取指定长度的字符

select left(列名, 要截取的长度) as 截取后 from 表名;

 7.1.6 right

right(列名, 长度):从右往左截取指定长度的字符

select right(列名, 要截取的长度) as 截取后 from 表名;

 7.2 时间函数

  1. 操作时间的函数
  2. mysql更加支持四位数的年份
  3. 所以日期时间的格式是 yyyy-MM-dd HH:mm:ss
  4. y: year
  5. m: month
  6. d: day
  7. H: hour
  8. m: minute
  9. s: second
  10. now(列名):获得当前时间的年月日 时分秒
  11. year(列名): 获得时间的年份
  12. month(列名):获得时间的月份
  13. day(列名):获得时间的天数部分
  14. hour(列名):获得时间的小时部分
  15. minute(列名):....分钟部分
  16. second(列名): 秒钟部分
  1. 案例:分别获得一个时间的年月日 时分秒
  2. select year(stujointime), month(stujointime), day(stujointime),
  3. hour(stujointime), minute(stujointime), second(stujointime) from studentinfo;

  1. time(列名):获得时间部分
  2. date(列名):获得日期部分
  3. select time(stujointime), date(stujointime) from studentinfo;
  4. curtime():获得当前日期时间的时间部分
  5. curdate():获得当前日期时间的日期部分
  6. select curtime(), curdate();
  7. adddate(列名, 天数):在指定的时间上往前或者往后推移指定天数
  8. 天数是负数 则往前推移 如果是正数 则往后推移
  9. select adddate(stujointime, -1) from studentinfo;
  10. adddate(列名,INTERVAL 数量 单位):在指定的时间上推移指定数量单位的时间
  11. 单位:YEAR 年,MONTH 月,DAY 天,HOUR 小时,MINUTE 分钟,SECOND 秒钟,WEEK 周,YEAR_MONTH 年和月,DAY_HOUR 天和时,DAY_MINUTE 天和分钟,DAY_SECOND 天和秒钟,HOUR_MINUTE 小时和分钟,HOUR_SECOND 小时和秒钟,MINUTE_SECOND 分钟和秒钟
  12. 多个单位的数量书写方式: 数量1和数量2之间可以使用任意符号
  13. "数量1-数量2"
  14. data_add()这个函数和adddate(列名,INTERVAL 数量 单位) 使用方法一致
  15. datediff(大的时间,小的时间)计算两个时间的差值 返回值是一个天数
  16. select datediff(now(), stujointime) as 时间差 from studentinfo;
  17. dayofweek():获得当前时间在这一周中是第几天 星期天是一周的第一天 星期六是一周的最后一天
  18. 所以 一周有7天 数字为7则表明是星期6 数字为1表明周日
  19. 4-> 周三
  20. 6-> 周五
  21. select DAYOFWEEK(now()) as 第几天;

7.3 组合查询/并查询

price表
  1. 概念:把多个结构相同的查询语句查询的结果 放到一个结果集中显示
  2. 关键字:union/union all
  3. union:把多个结果组合在一起之后 会去掉重复的数据
  4. union all:会显示所有的数据 不管数据是否重复
  5. 例:基于products表。假如需要价格小于等于5的所有物品的一个列表,而且还想包括供应商10011002生产的所有物品(不考虑价格)。当然,可以利用WHERE子句来完成此工作,不过这次我们将使用UNION
  6. select vend_id,prod_id,prod_price from products where prod_price <= 5
  7. union all
  8. select vend_id,prod_id,prod_price from products where vend_id in(1001,1002);
  9. # 注意事项:
  10. 1.如果组合查询中 组合了多个sql语句 那么分好一定要写在最后一条中
  11. 2.两条sql语句之间 需要使用一个union关键字组合起来 2条就一个关键字 3条就2个关键字 以此类推...
  12. 3.在组合查询中 结构一定是相同或者相似(数据类型) 如果结构不一致 那么不会报错 只会认为这个数据无效 可读性很差
  13. 4.在组合查询中 只能在最后一条sql语句中 添加排序和分组

7.4 关系型数据库的三大范式

范式一:表中的每一条数据 都是不可分割的一条数据  一个单元格只能存放一个数据
范式二:要求数据库表中的每个实例或行必须可以被惟一地区分。 你在创建表的时候 一定要给每一个表添加一个唯一的标识列 主键列
范式三:要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。不是相同类别或者性质的数据 不要放到一个表中。

7.5 视图 

是一种查询的优化     作用:可以简化复杂的查询

  1. 创建视图:
  2. create view 视图名 as 查询语句; 想到于把查询语句的结果储存到该视图中.
  3. create view 学生总分表 as
  4. select stuid, stuName, sum(examResult) as 总分 from studentinfo left join studentexam
  5. on stuid = estuid group by estuid;
  6. select * from 学生总分表;
  7. # 注意事项:视图中的数据是根据表来进行变化的
  8. # 视图的本意:不是用来修改数据的 而是用来查看数据的 视图的操作中 一般 只会用来做查询
  9. # 只牵扯到一个表的视图 可以被修改
  10. # 如果修改了视图 那么表中的数据也会跟着变化
  11. # 视图也是一个表 视图不允许重名(包括表名)
  12. # 如果想修改视图的内容 只能先删除视图 后修改SQL语句在重新执行
  13. drop view if exists 学生部分信息表;
  14. if exists:判断当前的视图是否存在 如果存在 则删除成功 不存在也不会产生报错

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/703781
推荐阅读
相关标签
  

闽ICP备14008679号