mysql数据库(根据廖雪峰老师文档)自学后总结的笔记

主键:
主键是关系表中记录的唯一标识。主键的选取非常重要:主键不要带有业务含义(指: 身份证号,email这些看似唯一的字段 ),而应该使用BIGINT自增或者GUID类型。主键也不应该允许 NULL
可以使用多个列作为联合主键,但联合主键并不常用。
 
外键:
关系数据库通过外键可以实现一对多、多对多和一对一的关系。外键既可以通过数据库来约束,也可以不设置约束,仅依靠应用程序的逻辑来保证。
 
索引:
通过对数据库表创建索引,可以提高查询速度。
通过创建唯一索引,可以保证某一列的值具有唯一性。
数据库索引对于用户和应用程序来说都是透明的。
 
查询:
使用SELECT查询的基本语句 SELECT * FROM <表名> 可以查询一个表的所有行和所有列的数据。
SELECT查询的结果是一个二维表。
 
条件查询:
语法: SELECT * FROM < 表名 > WHERE < 条件表达式 >
通过 WHERE 条件查询,可以筛选出符合指定条件的记录,而不是整个表的所有记录。
AND 与:条件表达式可以用 <条件1> AND <条件2> 表达满足条件1并且满足条件2
OR   或: 第二种条件是 <条件1> OR <条件2> ,表示满足条件1或者满足条件2
NOT 非: 第三种条件是 NOT <条件> ,表示“不符合该条件”的记录
如果不加括号,条件运算按照 NOT AND OR 的优先级进行,即 NOT 优先级最高,其次是 AND ,最后是 OR 。加上括号可以改变优先级。
BETWEEN(区间): WHERE score BETWEEN 60 AND 90;
 

常用的条件表达式

条件
表达式举例1
表达式举例2
说明
使用=判断相等
score = 80
name = 'abc'
字符串需要用单引号括起来
使用>判断大于
score > 80
name > 'abc'
字符串比较根据ASCII码,中文字符比较根据数据库设置
使用>=判断大于或相等
score >= 80
name >= 'abc'
 
使用<判断小于
score < 80
name <= 'abc'
 
使用<=判断小于或相等
score <= 80
name <= 'abc'
 
使用<>判断不相等
score <> 80
name <> 'abc'
 
使用LIKE判断相似
name LIKE 'ab%'
name LIKE '%bc%'
%表示任意字符,例如'ab%'将匹配'ab','abc','abcd'
 
投影查询:
如果我们只希望返回某些列的数据,而不是所有列的数据,我们可以用 SELECT 列1, 列2, 列3 FROM ...<表名> ,让结果集仅包含指定列。这种操作称为投影查询。
例:SELECT id, score points, name FROM students;
使用 SELECT * 表示查询表的所有列,使用 SELECT 列1, 列2, 列3 则可以仅返回指定列,这种操作称为投影。
SELECT 语句可以对结果集的列进行重命名。
 
排序:
ORDER BY 子句:从低到高
列: SELECT id, name, gender, score FROM students ORDER BY score;(按照分数排序)
倒序( 在末尾 加上 DESC 表示“倒序”):
SELECT id, name, gender, score FROM students ORDER BY score DESC ;
如果 score 列有相同的数据,要进一步排序,可以继续添加列名。
例,使用 ORDER BY score DESC, gender 表示先按 score 列倒序,如果有相同分数的,再按 gender 列排序:
SELECT id, name, gender, score FROM students ORDER BY score DESC, gender;
 
默认的排序规则是 ASC :“升序”,即从小到大。 ASC 可以省略,即 ORDER BY score ASC ORDER BY score 效果一样
 
--查询一班成绩的按照倒序排序(两个条件,先限制条件为一班,再把一班学生的成绩按照倒序排序)
SELECT id,name,gender,score  from students where class_id=1 ORDER BY score desc;
使用ORDER BY可以对结果集进行排序;
可以对多列进行升序、倒序排序。
 
 
分页(数据过多时采用分页查询):
分页实际上就是从结果集中“截取”出第M~N条记录。这个查询可以通过 LIMIT <M> OFFSET <N> 子句实现
OFFSET 超过了查询的最大数量并不会报错,而是得到一个空的结果集。
 

注意:

OFFSET是可选的,如果只写LIMIT 15,那么相当于LIMIT 15 OFFSET 0
在MySQL中,LIMIT 15 OFFSET 30还可以简写成LIMIT 30, 15
使用LIMIT <M> OFFSET <N>分页时,随着N越来越大,查询效率也会越来越低。
 
使用LIMIT <M> OFFSET <N>可以对结果集进行分页,每次查询返回结果集的一部分;
分页查询需要先确定每页的数量和当前页数,然后确定LIMITOFFSET的值。
 
聚合查询:
 
COUNT(*): 表示查询所有列的行数,要注意聚合的计算结果虽然是一个数字,但查询的结果仍然是一个二维表,只是这个二维表只有一行一列,并且列名是 COUNT(*)
 
COUNT(*) COUNT(id) 实际上是一样的效果,可以使用where 进行条件查询:
-- 使用聚合查询并设置WHERE条件:
SELECT COUNT(*) boys FROM students WHERE gender = 'M';
函数
说明
SUM
计算某一列的合计值,该列必须为数值类型
AVG
计算某一列的平均值,该列必须为数值类型
MAX
计算某一列的最大值
MIN
计算某一列的最小值
COUNT
计算某一列的总和
聚合分组查询:
按class_id分组
例子:SELECT class_id, COUNT(*) num FROM students GROUP BY class_id;
一定不能少“,”逗号
使用SQL提供的聚合查询,我们可以方便地计算总数、合计值、平均值、最大值和最小值;
聚合查询也可以添加WHERE条件。
 
多表查询:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lucky me.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值