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 等值查询

img

查询参加考试的同学(学号,姓名,,科目编号分数)

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)----分页

猜你喜欢

转载自blog.csdn.net/rr18758236029/article/details/108516005