数据的查询

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 '李%'


猜你喜欢

转载自blog.csdn.net/JAVA52Lin/article/details/84068918