- 在sql语句中是禁止使用IN,它是使所有的索引都失效
- #查询所有学生信息(所有列,效率低)
- SELECT * FROM student;
- #查询指定列(学号 姓名)
- SELECT studentno,studentname FROM student;
- #为列取别名(as,也可以省略)
- SELECT studentno AS 学号,studentname AS 姓名 FROM student;
- SELECT studentno 学号,studentname 姓名 FROM student;
- #使用as也可以为表取别名
- SELECT studentno 学号,studentname 姓名 FROM student ASs;
- SELECT studentno 学号,studentname 姓名 FROM student s;
- #使用as,为查询结果取一个新名字
- SELECT CONCAT('姓名:',studentname) AS 新姓名 FROMstudent;
- #查看哪些同学参加了考试(学号)-- 去除重复项(distinct,默认all)
- SELECT DISTINCT studentno FROM result;
- #select查询中可以使用表达式
- SELECT @@auto_increment_increment
- SELECT VERSION();
- SELECT 100*3-1 AS 计算结果;
- #学员考试成绩集体提分1分
- SELECT studentno,studentresult+1 AS '提分后' FROM result;
- 案例 查询在80-90分之间的所有成绩记录
- */
- SELECT *
- FROM result
- WHERE StudentResult >= 80 AND StudentResult <= 9
- SELECT * FROM subject WHERE ClassHour BETWEEN 110 AND 120;
- #等同于:
- SELECT * FROM subject WHERE ClassHour >= 110 AND ClassHour <=120;
- #查询包含“数学”的所有课程
- SELECT * FROM subject WHERE SubjectName LIKE "%数学%";
- #查询所有姓名为“李**”三个字的学生信息
- SELECT StudentNo,StudentName FROM student WHERE StudentName
- LIKE "李__";
- SELECT * FROM subject where ClassHour = 100 OR ClassHour =110 OR ClassHour = 120; #普通组处理方式
- SELECT * FROM subject where ClassHour IN ( 100, 110,120 );#使用IN进行查询方式,更为简洁,效率更高
- 案例 查找地址不为空的学生信息
- */
- SELECT *
- FROM student
- WHERE Address IS NOT NULL;
- #要求:从subject和grade数据表查询课程名称和所属年级 名称
- #非等值连接查询
- SELECT SubjectName,GradeName FROM subject,grade;
- #等值查询
- SELECT SubjectName,GradeName FROM subject,grade WHERE subject.GradeID= grade.GradeID;
- #查询课程表
- #LEFT JOIN 左连接
- SELECT SubjectName,ClassHour,GradeName FROM subject as s left join grade asg ON g.GradeID = S.GradeID;
- #RIGHT JOIN 右连接
- SELECT SubjectName,ClassHour,GradeName FROM subject as s Right join gradeas g ON g.GradeID = S.GradeID;
- create table if not exists category(
- categoryId int(10) unsigned not null auto_increment,
- pid int(10) not null,
- categoryName varchar(32) not null,
- primary key(categoryId)
- );
- insert into category values
- (2,1,"美术设计"),
- (3,1,"软件开发"),
- (4,3,"数据库基础"),
- (5,2,"Photoshop基础"),
- (6,2,"色彩搭配学"),
- (7,3,"PHP基础"),
- (8,3,"一起学JAVA");
- SELECT c1.categoryName AS "父栏目名称",c2.categoryNameAS "子栏目名称"
- FROM category AS c1,category AS c2
- WHERE c1.categoryId = c2.pid;
- #多表联合查询首先考虑等值连接
- #凡是可以使用内连接的实现的都可以使用等值连接实现
- #外连接不可以使用等值连接实现
- 重启数据库服务后,table:1 2 3 ; tab2:7 8 9
- 同样适用delete from 清空表数据,重启数据服务后,对于INNODB的表,自增列从初始值重新开始
- 而MYISAM类型的表,自增列依然从上一个自增数据基础上开始
- DQL Data query language
- select
- 1.ALL
- DISTINCT 去除重复数据
- select * from user;
- 2.取别名
- 关键字 AS 可以省略的
- 字段取别名
- 表取别名
- select u.* from user u;
- 3.where 条件子句
- 逻辑操作符
- and or not && || !
- 比较操作符
- > >= < <= = != between and 相当于(>= <=)
- 4.模糊查询
- like
- 通配符
- % 匹配 0-n个字符
- _ 匹配任意一个字符
- 逻辑操作符
- 5.多表联合查询
- 1.分两表三表三表以上
- 2.优先考虑等值连接
- 3.内连接 inner join 简写成 join on使用using来替代
- 4.自连接
- 将一张表当成两张表来使用
- 5.子查询
- 分步实现
- 上一步查询结果是下一步查询的条件
- 6.排序
- order by asc desc
- 7.分页 (前几名)
- limit
- m 偏移量
- n 显示条数
- 偏移量 = (当前页码-1)*显示条数
- limit
- 8.分组(各科目的平均分 总分 最高分 最低分)
- 对查询出来的数据进行分组
- group by
- 按照什么条件进行分组,一定要先查询后使用
- 9.having 条件子句
- 分组之后还要加上条件就是用使用having添加条件
- 10.聚合函数
- sum()
- avg()
- count(1)
- max()
- min()
数据库SQL 数据库查询语言
最新推荐文章于 2024-09-25 17:39:03 发布
本文介绍了SQL中的基本查询语句,包括使用IN操作、别名的使用、不同类型的连接(如等值连接、LEFTJOIN和RIGHTJOIN),以及模糊查询、多表联合查询、分组、聚合函数等,旨在帮助读者理解和提升SQL查询效率。
摘要由CSDN通过智能技术生成