sql server decimal 截取小数点后两位并去掉多余的0 sql截取小数点后两位函数手机号查询机主姓名「sql server decimal 截取小数点后两位并去掉多余的0 sql截取小数点后两位函数」
1、组合两个表
表1: Person
PersonId 是上表主键
表2: Address
AddressId 是上表主键
编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:
注意审题: 题目说:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息: FirstName, LastName, City, State 也就是说,地址信息(City, State)的查询结果是Null是OK的。但是,姓名(FirstName, LastName)必须有。 2) 为啥不用Where? 因为where的实质就是根据你给的条件(personID相等),选取两表的公共部分。但是,因为PERSON表不是所有人都有地址信息的,但是ADDRESS表只显示有地址信息的人,这样选取出来的就是有地址信息的人,漏掉了没有地址信息的人。所以大家注意,where的本质就是过滤。 3) 如何连接?应该用PERSON表左连接(left join)ADDRESS表,保留person表的所有信息
left join … on
结果:
2、查询重复
编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。
示例:
根据以上输入,你的查询应返回以下结果:
说明:所有电子邮箱都是小写字母。
一、查询
打开数据库
着重号 ` 用以标识字段,当关键字为字段时,以 着重号以区分.
意为表达 name 不是关键字,而是字段.
查询的 可以是 常量、表达式、函数
起别名
- 关键字 as
- 使用 空格
- 如想取的别名中含有特殊符号(空格、¥、#等),需将别名加上双引号
去重
reader表
- 关键字 DISTINCT
可以多字段,但是就没有意义了
identity
学生
老师
identity
学生
学生
学生
学生
老师
加号"+"的作用
拼接函数 CONCAT
胡峰学生
包朦穗学生
王文革学生
高文丽学生
郭鹏老师
显示表结构
Field Type Null Key Default Extra
readerid char(10) NO PRI (NULL)
readername varchar(10) NO (NULL)
identity varchar(10) YES (NULL)
gender varchar(10) YES (NULL)
varchar(10) YES (NULL)
school
tel varchar(11) YES (NULL)
IFNULL
- IFNULL(expr1,expr2)
判断expr1是否为空—> null, 如果为空,以 expr2 代替显示.
ifnull tel
暂未填写电话 (NULL)
1234 1234
暂未填写电话 (NULL)
暂未填写电话 (NULL)
暂未填写电话 (NULL)
ISNULL
判断如果为空,返回1,否则返回0.
iSnull tel
1 (NULL)
0 1234
1 (NULL)
1 (NULL)
0 110
二、条件查询
- 基本语法
- 条件运算符
- 逻辑运算符
表示取到 年龄小于 18 或者 大于 60 的
三种表示方法:
模糊查询
关键字
- like
- 通配符 % 和 _
转义字符
当我想查询的字段名包括 下划线 _ 时,我不想让它成为 通配符.
或者 使用关键字 ESCAPE 达到同样效果 , $ 可替换任意字符
表示标识 $ 为转义字符
- between and
- in
判断是否属于
下面两句可达到相同效果.
注意:列表中的值 类型需保持相同或兼容
- is null
- is not null
- 安全等于 <=>
同义
但是 与 where tel = null; 不同义
同义
但是不能写为 where tel is 10086; 语句报错.
Mysql服务的登录与退出
登录:
退出:
三、排序查询 ORDER BY
- 升序asc
- 降序desc
- 默认升序 即 asc可省
- 除limit子句外,order by都放在最后.
按字段排序
按表达式排序 或别名
readerid readername identity gender
school tel 表达式排序S1001 胡峰是的 学生 男 计算机学院 (NULL) 0
S1003 大王_ 学生 女 计算机学院 (NULL) 0
S1004 高文丽但是 学生 女 计算机学院 (NULL) 0
S1005 郭鹏 老师 男 信息学院 110 1100
S1002 包朦穗啊是的 学生 女 计算机学院 1234 12340
LENGTH()函数 获取长度
一个汉字3个字节,
按照名字长度排序
readerid readername identity gender
school tel 名字长度S1005 郭鹏 老师 男 信息学院 110 6
S1003 大王_ 学生 女 计算机学院 (NULL) 7
S1001 胡峰是的 学生 男 计算机学院 (NULL) 12
S1004 高文丽但是 学生 女 计算机学院 (NULL) 15
S1002 包朦穗啊是的 学生 女 计算机学院 1234 18
多字段排序,先写先排序
length() 长度
作用:获取参数值得字节数
utf-8 字符集
一个汉字占用3个字节
一个字母占用一个字节
例:统计type字段的长度
concat() 拼接
作用:拼接字符串
upper、lower 大小写转换
作用:大小写转换
例:将bookId字段转换为小写
substr、substring 切片
substr只是substring的简写,
注意:SQL中索引从1开始
函数间可嵌套使用
instr 查索引
返回子串第一次出现的索引,找不到则返回 0
例:
trim 除空格
去除空格输出
去除前后指定字符,注意,中间的无法去除
lpad 左填充
填充在左边
rpad 右填充
replace 替换
注意:将所有出现的 都会 替换
round 四舍五入
ceil与floor 向上取整与向下取整
truncate 截取
mod 取余
mod(a,b) == a-a/b*b
now()
获取当前时间
curdate
curtime
year
只 获取年份
month / monthname
datediff 日期差
计算两个日期之间相差的天数, MAX() 减去 MIN(),交换将会得到负值
时间格式转换 str_to_date
作用:识别 年月份
不同格式的话,SQL并不知道哪个是年,哪个是月,哪个是日,需 使用 str_to_date标识
日期转为字符 date-format
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t0icwfqN-1640141208497)(…/python/笔记/img/image-20211103234209833.png)]
if
case
类似switch…case…
判断 number 字段的值与when 中是否相等,相等显示 对应then 中的值
多重if
基本功能:作统计使用
- NULL都不参与
- 都支持与distinct关键字
- 和分组函数一同查询的字段有限制,group by
COUNT(字段) 计数
统计字段出现的次数,不会统计为 NULL 的
例:想查询出teble表 名字 中,带有 “王” 的,有多少个人
SUM(字段) 求和
合计字段之和,NULL不参与运算求和
例:薪资表中,想统计一共发了多少薪资(每个人薪资之和)
avg 平均
平均值会保留小数点后4位,NULL不参与运算求和
sum与avg一般只处理数值类型的
max / min
NULL不参与
基本语法
查询每个学院 number字段的和与平均值
having 关键字
添加分组后的筛选条件,—先查询,再进行having 筛选
放在最后
查询每个学院 number字段的和与平均值,且和大于100的
where关键字
—> 查询时,根据条件筛选
分组前筛选—where-----在group by前
分组后筛选----having—在group by后
若where与having都可,优先where效更高
需求:隐藏那个手机号中间4位
隐藏 密码中间两位
重庆版权声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com