MySQL-MySQL数据查询-数据库02
MySQL-MySQL数据查询-数据库02
基本操作
查询所有
SELECT * FROM student
查询指定字段
SELECT name FROM student
给字段和表起别名
SELECT name AS 姓名 FROM student AS 学生表
组合字符串函数CONCAT
SELECT CONCAT(‘新名字’,name)AS 新名字 FROM student
去重 distinct
查询呢些同学参加了考试
SELECT * FROM result
SELECT studentNo FROM result
查询哪些同学参加考试并去重
SELECT DINSTINCT studentNo FROM result
其他
查询当前版本:
SELECT VERSION()
计算:
SELECT 100*3-1
查询自增步长
SELECT @@auto_increment_increment
学院成绩加1分
SELETCT StudentNo,StudentResult+1 from result
数据库中的表达式 文本值,列,null,函数,计算表达式,系统变量
select 表达式 from 表
where条件子句
作用:检索数据中符合条件的值
运算符 | 语法 | 描述 |
---|---|---|
and && | a and b a&&b | 逻辑与 |
or || | a or b | 逻辑非 |
not ! | not a | 逻辑非 |
查询考试成绩值95-100之间
SELECT studentNo,StudentResult FROM result WHERE studentResult >=95 and studentResult<=100
SELECT studentNo,StudentResult FROM result WHERE studentResult BETWEEN 95 and 100
查除了学号=2的学生之外所有的学生成绩
SELECT studentNo,StudentResult FROM result WHERE not studentNo=2;
SELECT studentNo,StudentResult FROM result WHERE studentNo!=2;
模糊查询:比较运算符
运算符 | 语法 | 描述 |
---|---|---|
is null | a is null | 为null,结果为真 |
is not null | a is not nul | 不为null,结果为真 |
BETWEEN | a between b and c | a 在b和c之间,结果为真 |
Like | a like b | SQL匹配,如果a匹配b,结果为真 |
in | a in(a1,a2,a3) | a在a1,a2,a3其中的某一个值中,结果为真 |
查询姓沈的同学
Like 结合%(代表0到任意个字符)和_(代表1个字符)
SELECT studentNo,name FROM student WHERE name like ‘沈%’;
查询姓沈的两个字名字的同学
SELECT studentNo,name FROM student WHERE name like ‘沈_’;
查询姓沈的三个字名字的同学
SELECT studentNo,name FROM student WHERE name like ‘沈__’;
查询名字当中有荣的同学
SELECT studentNo,name FROM student WHERE name like ‘%沈%’;
in是具体的值
查询学号在1,5,6的同学
SELECT studentNo,name FROM student WHERE studentNo in(1,5,6) ;
NOT NULL
查询邮件为空的同学
SELECT studentNo,name FROM student WHERE email not null or email= “”;
联表查询
join(连接的表) on 连接查询
where 等值查询
查询参加考试的同学(学号,姓名,,科目编号分数)
SELECT s.studentNo,s.name,SubjectNo,StudentResult
FROM student AS s
INNER JOIN result AS r
WHERE s.studentNo = r.StudentNo;
SELECT s.studentNo,s.name,SubjectNo,StudentResult
FROM student s
RIGHT JOIN result r
on s.studentNo = r.StudentNo;
操作 | 描述 |
---|---|
inner join | 如果表中有至少有一个匹配,就返回行 |
left join | 会从左表中返回所有的值,即使右表总没有匹配 |
right_join | 会从右表中返回所有的值,即使左表总没有匹配 |
分页和排序
排序(升序ASC 降序DESC)
ORDER BY 通过哪个字段排序,怎么排
百万数据,分页,
每页值展示5条苏剧
limit 起始值,页面大小
5个一页
limit(n-1)*pagesize,pagesize n为当前页
总页数=数据总数/pagesize
SELECT r.studentNo,s.name,r.SubjectNo,StudentResult,SubjectName
FROM student s
RIGHT JOIN result r
on s.studentNo = r.studentNo
inner join subject sub
on r.subjectNo =sub.subjectNo
order by studentNo
limit 2,2;
子查询
where(嵌套查询语句)
select distinct studentNo from result where studentResult >=90 and subjectNo=2 and studentNo in (select studentNo from result where studentResult >=90 and subjectNo=1) and studentNo in (select studentNo from result where studentResult >=90 and subjectNo=3);
由里及外
常用函数
数学
select ABS(-8)绝对值
select CEILING(9,4)向上取整
select RAND();
select sign(); 返回数字符号
字符串函数
select CHAR_LENGTH(‘hello’);–字符串长度
Select concat(“hello”,“world”) ;拼接字符串;
select insert("我爱Java“,1,2,"超级“);查询替换
select lower()转小写
select upper()转大写
select replace(“作用字符串”,“被替换”,“替换”); 替换字符串
select substring(“hello,word”,4,5);起始位置,长度,返回指定的子字符串
select reverse(“hi”);反转字符串
常用日期和时间函数
select current_time();获取当前时间
select curdate() 获取当前日期
select now();日期+时分秒
Select localtime();本地时间
Select concat(sysdate(),localtime());系统时间
select year(now())
select minite(now());
系统相关
Select system_user();获取当前用户
select user();
select version();
聚合函数
函数名称 | 描述 |
---|---|
count() | 计数 |
sum() | 求和 |
avg() | 平均数 |
MAX() | 最大数 |
MIN() | 最小数 |
计数
Select count(studentNo) from student;count(字段)忽略null值,不是主键的时候,效率最高
Select count(*) from student;不会忽略null,本质计算行数
Select count(1) from student;不会忽略null
select sub.subjectName,AVG(studentResult),SUM(studentResult),MAX(studentResult)
from result
r
inner join subject sub
On r.subjectNo = sub.subjectNo;
select studentNo
from result
group by studentNo
having MIN(studentResult)>=90;
MD5
加密
INSERT INTO student VALUES(5,“沈强”,16,null,null,null,MD5(‘123456’));校验
select * from student where name=“沈强” and pwd = MD5(“123456”);
select小结
select[all | distinct]
from table_name[as table_alias]
[left | right | inner join table_name]–联合查询
on --等值判断
where—指定结果需要满足的条件
group by --指定结果按照哪几个字段来分组
having — 过滤分组的记录必须满足的次要条件
order by — 排序
limit(1,5)----分页