IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 数据库(七)-----高级查询(四) -> 正文阅读

[大数据]数据库(七)-----高级查询(四)

目录

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

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

语法:upper(列名)
	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 时间函数

操作时间的函数
mysql更加支持四位数的年份
所以日期时间的格式是 yyyy-MM-dd HH:mm:ss
	y: year
	m: month
	d: day
	H: hour
	m: minute
	s: second

now(列名):获得当前时间的年月日 时分秒
year(列名): 获得时间的年份
month(列名):获得时间的月份
day(列名):获得时间的天数部分
hour(列名):获得时间的小时部分
minute(列名):....分钟部分
second(列名): 秒钟部分
案例:分别获得一个时间的年月日 时分秒
	select year(stujointime), month(stujointime), day(stujointime),
		hour(stujointime), minute(stujointime), second(stujointime) from studentinfo; 

time(列名):获得时间部分
date(列名):获得日期部分
	select time(stujointime), date(stujointime) from studentinfo;

curtime():获得当前日期时间的时间部分
curdate():获得当前日期时间的日期部分
	select curtime(), curdate();

adddate(列名, 天数):在指定的时间上往前或者往后推移指定天数
	天数是负数 则往前推移 如果是正数 则往后推移
	select adddate(stujointime, -1) from studentinfo;
adddate(列名,INTERVAL 数量 单位):在指定的时间上推移指定数量单位的时间
	单位:YEAR 年,MONTH 月,DAY 天,HOUR 小时,MINUTE 分钟,SECOND 秒钟,WEEK 周,YEAR_MONTH 年和月,DAY_HOUR 天和时,DAY_MINUTE 天和分钟,DAY_SECOND 天和秒钟,HOUR_MINUTE 小时和分钟,HOUR_SECOND 小时和秒钟,MINUTE_SECOND 分钟和秒钟

	多个单位的数量书写方式: 数量1和数量2之间可以使用任意符号
		"数量1-数量2"

data_add()这个函数和adddate(列名,INTERVAL 数量 单位) 使用方法一致

datediff(大的时间,小的时间)计算两个时间的差值 返回值是一个天数
	select datediff(now(), stujointime) as 时间差 from studentinfo;

dayofweek():获得当前时间在这一周中是第几天  星期天是一周的第一天 星期六是一周的最后一天
	所以 一周有7天 数字为7则表明是星期6 数字为1表明周日 
	4-> 周三
	6-> 周五

	select DAYOFWEEK(now()) as 第几天;

7.3 组合查询/并查询

price表
概念:把多个结构相同的查询语句查询的结果 放到一个结果集中显示
关键字:union/union all
union:把多个结果组合在一起之后 会去掉重复的数据
union all:会显示所有的数据 不管数据是否重复
例:基于products表。假如需要价格小于等于5的所有物品的一个列表,而且还想包括供应商1001和1002生产的所有物品(不考虑价格)。当然,可以利用WHERE子句来完成此工作,不过这次我们将使用UNION。
	select vend_id,prod_id,prod_price from products where prod_price <= 5
	union all
	select vend_id,prod_id,prod_price from products where vend_id in(1001,1002);

# 注意事项:
	1.如果组合查询中 组合了多个sql语句 那么分好一定要写在最后一条中
	2.两条sql语句之间 需要使用一个union关键字组合起来 2条就一个关键字 3条就2个关键字 以此类推...
	3.在组合查询中 结构一定是相同或者相似(数据类型) 如果结构不一致 那么不会报错 只会认为这个数据无效 可读性很差
	4.在组合查询中 只能在最后一条sql语句中 添加排序和分组

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

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

7.5 视图?

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

创建视图:
	create view 视图名 as 查询语句; 想到于把查询语句的结果储存到该视图中.

	create view 学生总分表 as
	select stuid, stuName, sum(examResult) as 总分 from studentinfo left join studentexam
	on stuid = estuid group by estuid;

	select * from 学生总分表;

# 注意事项:视图中的数据是根据表来进行变化的
# 视图的本意:不是用来修改数据的 而是用来查看数据的 视图的操作中 一般 只会用来做查询 
# 只牵扯到一个表的视图 可以被修改
# 如果修改了视图 那么表中的数据也会跟着变化
# 视图也是一个表 视图不允许重名(包括表名)

# 如果想修改视图的内容 只能先删除视图 后修改SQL语句在重新执行
	drop view if exists 学生部分信息表;
		if exists:判断当前的视图是否存在 如果存在 则删除成功 不存在也不会产生报错

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:22:43  更:2022-09-13 11:26:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:46:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码