数据库学习笔记4

1、基本查询语法

查询使用 select 语句,最简单的查询语句的格式可以表示如下。
语法:

select < 列名 | 表达式 | 函数 | 常量 > from < 表名 >
[where <查询条件表达式>]
[order by <排序的列名>[ascdesc]];

其中,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 之间,结果为真
likeSQL模式匹配,匹配相应格式,结果为真
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里面,返回0select 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到12select month(‘2019-07-15’);
day返回日期中的日期部分select day(‘2019-07-15’);
week计算日期是本年的第几个星期,范围是0~53select 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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值