数据库SQL 数据库查询语言

本文介绍了SQL中的基本查询语句,包括使用IN操作、别名的使用、不同类型的连接(如等值连接、LEFTJOIN和RIGHTJOIN),以及模糊查询、多表联合查询、分组、聚合函数等,旨在帮助读者理解和提升SQL查询效率。
摘要由CSDN通过智能技术生成
  • 在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)*显示条数
  • 8.分组(各科目的平均分 总分 最高分 最低分)
    • 对查询出来的数据进行分组
    • group by
    • 按照什么条件进行分组,一定要先查询后使用
  • 9.having 条件子句
    • 分组之后还要加上条件就是用使用having添加条件
  • 10.聚合函数
    • sum()
    • avg()
    • count(1)
    • max()
    • min()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值