数据的查询

1.使用select 语句进行查询

#基本查询
select 列名  from  表名  where 条件
#where条件是可选的,如果不限制,那么就查询所有的数据

2.查询所有的数据行和列

select * from  表名

3.查询空值

#查询email邮箱为空
select studentName from  student where email is null;

4.常用的函数

(一)聚合函数

函数名作用
avg()返回某字段的平均值
count()返回某字段的行数,记录行数
max()求最大值
min()求最小值
sum()求总和

(二)常用的字符串函数

函数名作用举例
concat()连接字符串

select  concat('My','SQL'); 

返回:MySQL

Insert ()替换字符串

select insert('这是MySQl数据库',3,10,'MySQL');

返回:这是MySQL

lower()转小写

select lower('MYSQL');

返回:mysql

upper()转大写

select upper('mysql');

返回:MYSQL

substring()返回字符串的长度

select substring('JavaMySQLOracle',5,5);

返回:MySQL

(三)常用时间日期函数

函数名作用举例
curdate()获取当前时间

select curdate();

返回;2018-11-14

curtime()获取当前日期

select curtime();

返回:16:46:23

now()获得当前日期和时间

select now();

返回:2018-11-14 16:47:47

week()获得日期date是一年中的第几周

select week(now());

返回:45

year()返回日期的date的年份

select year(now());

返回:2018

hour()返回时间time的小时值

select hour(now());

返回:16

minute()获得时间的分钟值

select minute(now());

返回:50

datediff(str1,str2)返回日期参数l两个数之间的天数

select datadiff(now(),'2008-8-8');

返回:3750

adddate(date,n)计算日期参数date加上n天后打的日期

select adddate(now(),5);

返回:2018-11-14 16:53:45

(四)数学函数

函数名作用举例
ceil()向上取整

select (2.4);

返回;3

floor()向下取整

select floor(2.6);

返回:2

rand()返回0~1之间的随机数

select rand();

返回:0.3368414084770171

5.order by 子句排序查询

#对查询结果进行排序
select  studentNO as 学号, studentResult as 考试成绩 from  student 
where studentResult>60
order by studentResult desc;

6.Limit分页查询

#语法
select  列名 from 表名 where 条件 Limit 0,5;

#其中0代表起始位置,也就是索引,5代表要显示多少条数据

7.多表连接查询

(一)内连接查询

内连接查询是最常用,最典型的连接查询,特别是两表之间经常用到!!!

内连接查询:得到的结果是表于表之间共同的列!

#两表之间内连接查询
SELECT s.gradeId AS 年级编号,s.StudentName AS 学生姓名  FROM student AS s
INNER JOIN grade AS g
ON g.gradeID=s.gradeID;

(二)外连接查询:左外连接,右外连接

左外连接:以左表为基表,返回左表的数据,右表没有匹配上的以null填充。

#左外连接查询
select studentName,subjectNo,studentReuslt  from student as s
left  join result as r
on r.studentNo=s.studentNo;

右外连接:以右表为基表,返回右表的数据,左表没有匹配上的以null填充。

#右外连接查询
select studentName,subjectNo,studentReuslt  from student as s
right join result as r
on r.studentNo=s.studentNo;

8.常用的一些函数汇总

#--------------------------------------------------------------
#---------------------------数学函数---------------------------
#--------------------------------------------------------------
SELECT ABS (-8);	    #绝对值
SELECT CEILING (9.8); 	#大于等于我的最小的整数
SELECT FLOOR (9.3);	    #小于等于我的最大的整数
SELECT RAND ();		    #返回0~1之间的随机数
SELECT  RAND (10); 	    #以某个数作为种子,每次生成重复数字
SELECT  SIGN(0);	    #符号函数,所有的正数返回1,负数返回-1,0返回0

#---------------------------------------------------------------
#------------------------字符串函数-----------------------------
#--------------------------------------------------------------
SELECT CHAR_LENGTH ('好好学习');	#返回字符串的长度
SELECT CONCAT('我','爱','java');	#合并字符串
SELECT INSERT('我爱你java',1,3,'很爱');#替换字符串,从某个位置开始,替换某个长度 ***
SELECT INSERT('我爱你java',10,3,'很爱');#如果起始位置超过字符串的长度,返回原字符串 ***
SELECT LOWER('I LOVE YOU');	#变小写
SELECT UPPER('i love you');	#变大写
SELECT LEFT('北京欢迎你',2);	#从左边截取2个
SELECT RIGHT('北京欢迎你',3);	#从右边截取3个
SELECT REPLACE('北京欢迎你,你好','你','你们'); #替换  ***
SELECT SUBSTR('北京欢迎您',1,3); #截取,从哪个位置开始,截取到哪个位置  ***
SELECT REVERSE('北京欢迎你');    #反转字符串 


#--------------------------------------------------------------
#-----------------------------日期函数-------------------------
#--------------------------------------------------------------
#获得当前的日期
SELECT CURRENT_DATE();
#获得当前的日期前和时间
SELECT  NOW();
SELECT LOCALTIME();
SELECT SYSDATE();
#获得日期中的某个部分
SELECT YEAR(NOW());	    #年
SELECT MONTH(NOW());	#月
SELECT DAY(NOW());		#日
SELECT HOUR(NOW());	    #时
SELECT MINUTE(NOW());	#分
SELECT SECOND(NOW());	#秒

#系统信息函数
SELECT VERSION();
SELECT USER();


#根据出生日期,求出年龄----精准到天
SELECT TIMESTAMPDIFF(YEAR,bornDate,CURDATE()) AS 年龄,bornDate AS 出生日期 FROM student;
#根据出生日期,求出年龄---接近实际周岁
SELECT ROUND(DATEDIFF(CURDATE(),bornDate)/365.2422) AS 年龄,bornDate AS 出生日期 FROM student;


#查询姓李的同学,改成历
SELECT REPLACE(studentName,'李','历')  AS 新名字
FROM student WHERE studentName LIKE '李%'


 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值