数据库

SELECT语句其实并不要求一定要有FROM子句

执行SELECT 1来测试数据库连接。

条件查询的语法
SELECT * FROM <表名> WHERE <条件表达式>
条件表达式可以用:
<条件1> AND <条件2>
<条件1> OR <条件2>
NOT <条件>  如:NOT class_id = 2 等价于 class_id <> 2

要组合三个或者更多的条件,就需要用小括号()表示如何进行条件运算。

分数在80以下或者90以上,并且是男生
SELECT * FROM students WHERE (score < 80 OR score > 90) AND gender = 'M';

如果不加括号:NOT优先级最高,其次是AND,最后是OR。

排序
SELECT id, name, gender, score FROM students ORDER BY score DESC;
  • DESC表示“倒序”,从高到底
  • 默认的排序规则是ASC:“升序”,即从小到大。ASC可以省略
  • 如果有WHERE子句,那么ORDER BY子句要放到WHERE子句后面
  • 如果score列有相同的数据,要进一步排序,可以继续添加列名。例如,使用ORDER BY score DESC, gender,表示先按score列倒序,如果有相同分数的,再按gender列排序
修改数据
INSERT INTO <表名> (字段1, 字段2, ...) VALUES (1,2, ...);
UPDATE <表名> SET 字段1=1, 字段2=2, ... WHERE ...;
DELETE FROM <表名> WHERE ...;
分页查询
LIMIT <M> OFFSET <N>

如:
结果集从0号记录开始,最多取3SELECT *
FROM <表名>
ORDER BY <字段> DESC
LIMIT 3 OFFSET 0;
  • LIMIT 3表示的意思是“最多3条记录”
  • 首先要确定每页需要显示的结果数量pageSize(这里是3),然后根据当前页的索引pageIndex(从1开始),确定LIMIT和OFFSET应该设定的值:
    • LIMIT总是设定为pageSize;
    • OFFSET计算公式为pageSize * (pageIndex - 1)
聚合&分组
函数说明
COUNT查询列的行数
SUM计算某一列的合计值,该列必须为数值类型
AVG计算某一列的平均值,该列必须为数值类型
MAX计算某一列的最大值
MIN计算某一列的最小值
SELECT <字段1>, <字段2>,... COUNT(*) FROM <表名> GROUP BY <字段1>, <字段2>, ...
多表查询
SELECT * FROM <表名1> <别名1>, <表名2> <别名2>
连接查询

INNER JOIN查询的写法:

  • 先确定主表,仍然使用FROM <表1>的语法;
  • 再确定需要连接的表,使用INNER JOIN <表2>的语法;
  • 然后确定连接条件,使用ON <条件...>,这里的条件是s.class_id = c.id,表示students表的class_id列与classes表的id列相同的行需要连接;
  • 可选:加上WHERE子句、ORDER BY等子句。
SELECT ... FROM tableA ??? JOIN tableB ON tableA.column1 = tableB.column2

SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score
FROM students s
INNER JOIN classes c
ON s.class_id = c.id;

把tableA看作左表,把tableB看成右表

  • INNER JOIN是选出两张表都存在的记录:
    在这里插入图片描述
  • LEFT OUTER JOIN是选出左表存在的记录:
    在这里插入图片描述
  • RIGHT OUTER JOIN是选出右表存在的记录:
    在这里插入图片描述
  • FULL OUTER JOIN则是选出左右表都存在的记录:
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值