概述
数据库学习笔记4
- 1、基本查询语法
- 2、指定查询字段
- 2.1 查询全部的行和列
- 2.2 查询指定的列
- 3、列别名的用法
- 4、去除重复列
- 5、where条件
- 5.1 where工作原理
- 5.2 搜索条件的组成
- 6、运算符
- 6.1 算术运算符
- 6.2 比较运算符
- 6.3 逻辑运算符
- 6.4 位运算符
- 7、空值
- 8、范围查询
- 9、模糊查询
- 10、聚合函数
- 11、MySQL常用函数
- 11.1 字符串函数
- 11.2 日期函数
- 11.3 数学函数
- 11.4 数据类型转换函数
- 11.4.1 整数转字符串
- 11.4.1 字符串转数字类型
- 11.5 分组查询
- 11.5.1 分组查询条件
- 11.6 where 与 having 的区别
1、基本查询语法
查询使用 select 语句,最简单的查询语句的格式可以表示如下。
语法:
select < 列名 | 表达式 | 函数 | 常量 > from < 表名 >
[where <查询条件表达式>]
[order by <排序的列名>[asc 或 desc]];
其中,where 条件是可选的,若不限制查询返回所有行的数据项。order by 是用来排序的。
2、指定查询字段
2.1 查询全部的行和列
把表中的所有行和列都列举出来比较简单,这时候可以使用 “ * ” 表示所有的列。
例如:
select * from student;
注意: 这种方式如果数据较多的时候,效率是比较低的。
2.2 查询指定的列
查询部分列需要列举不用的列名而查询部分行需要使用 where 子句进行条件限制。
例如:
select studenNo,studentName from sudent where address = '成都市锦江区';
3、列别名的用法
as 子句可以用来改变结果集中列的名称,也可以为组合或者计算出的列指定名称,还有一种情况是让标题列的信息更易懂,甚至是表都可以取一个别名,例如,把是 studentNo 列名查询后显示为“学生编号”。
例:
select studentNo as '学生编号',studentName as '学生姓名' from student where address = '成都市锦江区';
还有一种情况是使用表达式。例如,在查询出的各个学生编号的基础上 +100 。
例:
select studentNo + 100 as '新编号' ,studentName from student where address = '成都市锦江区';
4、去除重复列
在数据表中的数据存在重复的记录,如果只看不同的数据,那么可以使用 distinct 关键字。
例:
select distinc * from student;
5、where条件
5.1 where工作原理
在之前已多次用到 where ,那么它的工作原理是 根据条件对是数据进行逐条对比,where 条件为真时,就返回记录。
5.2 搜索条件的组成
搜索条件有4种方式:表达式、算术运算符、逻辑运算符、比较运算符。
6、运算符
运算符分为算术运算符、比较运算符、逻辑运算符、位运算符,通过它们,可以进行一系列的数据计算。
6.1 算术运算符
符号 | 说明 |
---|---|
+ | 加号,返回操作数之和 |
- | 减号,返回操作数之差 |
* | 乘号,操作数之积 |
/ | 除号,操作数之商 |
% | 取模,操作数相除后的余数 |
6.2 比较运算符
符号 | 说明 |
---|---|
= | 等于,相等于 Java 中的恒等于 |
<=> | 严格等于 |
> | 小于 |
< | 大于 |
<> 或 != | 不等于 |
>= | 大于等于 |
<= | 小于等于 |
is null | 若记录为null,结果为真 |
is not null | 若记录不为null,结果为真 |
between and | 范围在 a 到 b 之间,结果为真 |
like | SQL模式匹配,匹配相应格式,结果为真 |
in | 在指定的值的范围内,结果为真 |
6.3 逻辑运算符
符号 | 说明 |
---|---|
and 或 && | 逻辑与,两边操作数都为 |
or 或 || | 逻辑与,两边操作数都为 |
not 或 ! | 逻辑与,两边操作数都为 |
6.4 位运算符
符号 | 说明 |
---|---|
& | 按位与,1&1=1,0&1=0 |
| | 按位或,1|1=1,1|0=1 |
<< | 左移,将一个二进制数左移指定位数 |
>> | 右移,将一个二进制数右移指定位数 |
7、空值
null代表空值,没有值;它区别于 0 和空字符串,三者并不相同;他只能出现在定义为允许NULL值的字段;同时必须使用 is null 或 is not null 判断字段是否为空。
8、范围查询
between…and… 的语法
select <字段1>,<字段2>... from <表名> where <字段名> between <值1> and <值2>;
MySQL中的 between and 包含两端的值。
9、模糊查询
in的语法
select <字段1>,<字段2>... from <表名> where <字段名> in (值1,值2,...);
10、聚合函数
MySQL中的聚合函数用来对已有数据进行汇总,如求和、平均值、最大值、最小值等。
MySQL常用的聚合函数 | |
---|---|
符号 | 说明 |
sum() | 返回某字段的和 |
avg() | 返回某字段的平均值 |
max() | 返回某字段的最大值 |
min() | 返回某字段的最小值 |
count() | 返回某字段的行数 |
11、MySQL常用函数
11.1 字符串函数
函数 | 描述 | 使用实例 |
---|---|---|
length | 返回字符串所占的字节数 | select length(‘字符串’); |
char_length | 返回字符串所占的字符数 | select char_lengh(‘字符串’) |
positio (substr in str) | 返回子串substr在字符串str第一个出现的位置,如果substr不是在str里面,返回0 | select position(‘def’ in ‘abcdefg’); select positio(‘学堂’ in ‘老九学堂’); |
upper | lower | 转换大小写 | select lower(‘MySQL数据库’); |
ltrim | rtrim | 清除字符串左右空格 | select rtrim(ltrim(‘abc’)); |
left | right | 从字符串两边返回指定数目的字符 | select left(‘中华人民共和国’,3); |
replace | 字符串替换 | select replace(‘尼古拉斯凯奇’,‘凯奇’,‘赵四’); |
substring | 字符串截取(参数1:起始截取位置;[参数2:截取位数]) | select substring(‘尼古拉斯凯奇’,1,4); select substring(‘尼古拉斯凯奇’,5) |
reverse | 颠倒字符串 | select reverse(‘尼古拉斯赵四’); |
concat | 字符串拼接 | select concat(14,‘连胜’); |
11.2 日期函数
函数 | 描述 | 使用示例 |
---|---|---|
now | 获取系统当前日期 | select now(); |
adddate | date_add (date,interval | expr type) | 向日期添加指定的时间间隔 | select date_add(now(),interval 7 year); |
dayofyear | 返回date在一年中的天数,在1到366范围内 | select dayofyear(now()); |
dayofmonth | 返回date在月份中的天数,在1到31范围内 | select dayofmonth(now()); |
dayofweek | 返回date的星期索引(1=星期天,2=星期一…) | select dayofweek (now()); |
year | 返回年份 | select year(‘2019-07-15’); |
month | 返回日期中的月份值,1到12 | select month(‘2019-07-15’); |
day | 返回日期中的日期部分 | select day(‘2019-07-15’); |
week | 计算日期是本年的第几个星期,范围是0~53 | select week(‘2019-07-15’); |
hour | 返回小时数 | select hour(‘209-07-15’) |
minute | 返回分钟值 | select minute(‘209-07-15’) |
second | 返回秒钟值 | select second(‘209-07-15’) |
timestampdiff (unit,datetime_expr1,datetime_expr2) | 日期之差 unit的基本取值: year:年 month:月 day:天 hour:小时 minute:分钟 second:秒 week:周 microsecond:毫秒; datetime_expr2 - datetime_expr1 | select timestampdiff(year,now(),‘2019-07-15’); |
11.3 数学函数
函数 | 描述 | 使用示例 |
---|---|---|
abs | 取数值表达式的绝对值 | select abs(-83); |
ceiling | 取小于或等于指定数值、表达式的最小整数 | select ceiling(40.1); |
floor | 取小于或等于指定表达式的最小整数 | select floor(40.8); |
power | 取数值表达式的幂值 | select pow(4,5); |
rand(n) | 返回一个范围在0到1.0之间的随机浮点数。如果一个整数参数N被指定,它被当做种子值使用(用于产生一个可重复的数值) | select rand(5); |
round(x) round(x,y) | 将参数x四舍五入到最近的整数,然后返回。y的作用是将一个数字四舍五入到y个小数后返回 | select round(pi()); select round(pi(),2); |
11.4 数据类型转换函数
11.4.1 整数转字符串
语法:
concat(int,varcahr);
#示例
select concat(742,'');
11.4.1 字符串转数字类型
语法:
cast(value as type) 或 conver(value,type)
type的类型有:
- 二进制:同带binary前缀的效果:BINARY
- 字符型:可带参数:CHAR()
- 日期:DATE
- 时间:TIME
- 时间日期型:DATETIME
- 浮点数:DECIMAL
- 整数:SIGNED
- 无符号整数:UNSIGNED
#示例
#字符串转为整数
select cast('8848' as signed);
select convert('8848',signed);
#字符串转为浮点数
select cast('88.48' as decimal);
select convert('88.48',decimal);
11.5 分组查询
语法:
select * from 表名 group by 分组字段
11.5.1 分组查询条件
select gradeId count(*) from 表名
group by 分组字段[gradeId]
having 分组查询条件[count(*) > 2];
11.6 where 与 having 的区别
where条件表达式:作用于表或者视图,是表和视图的查询条件。
having条件表达式:作用于分组后的记录,用于选择符合条件的组。
having 和 where 子句可以在同一个select语句中一起使用,使用顺序为:where -> group by -> having
最后
以上就是陶醉向日葵为你收集整理的数据库学习笔记4的全部内容,希望文章能够帮你解决数据库学习笔记4所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复