SQL语法基础篇(二)

注:摘自极客时间《SQL必知必会》,纯属个人学习笔记总结

上一篇

04丨使用DDL创建数据库&数据表时需要注意什么?

  • 思考
  1. 了解 DDL 的基础语法,它如何定义数据库和数据表;
  2. 使用 DDL 定义数据表时,都有哪些约束性;
  3. 使用 DDL 设计数据库时,都有哪些重要原则。
  • DDL的基础语法及设计工具
    DDL 的英文全称是 Data Definition Language,中文是数据定义语言。它定义了数据库的结构和数据表的结构。
    常用的功能是增删改,分别对应的命令是 CREATE、DROP 和 ALTER
    (1).对数据库进行定义
    创建:CREATE DATABASES 数据库名称
    删除:DROP DATABASES 数据库名称
    (2).对表进行定义
    创建:create table 表名称
    (3).创建表结构
    CREATE TABLE player ( player_id int(11) NOT NULL AUTO_INCREMENT, player_name varchar(255) NOT NULL) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
    (4).修改表结构
    添加字段:ALTER TABLE player ADD (age int(11));
    修改字段名:ALTER TABLE player RENAME COLUMN age to player_age
    修改字段数据类型:ALTER TABLE player MODIFY (player_age float(3,1));
    删除字段:ALTER TABLE player DROP COLUMN player_age;
  • “三少一多原则”
    1.数据表的个数越少越好
    RDBMS 的核心在于对实体和联系的定义,也就是 E-R 图(Entity Relationship Diagram),数据表越少,证明实体和联系设计得越简洁,既方便理解又方便操作。
    2.数据表中的字段个数越少越好
    字段个数越多,数据冗余的可能性越大。设置字段个数少的前提是各个字段相互独立,而不是某个字段的取值可以由其他字段计算出来。当然字段个数少是相对的,我们通常会在数据冗余和检索效率中进行平衡。
    3.数据表中联合主键的字段个数越少越好
    设置主键是为了确定唯一性,当一个字段无法确定唯一性的时候,就需要采用联合主键的方式(也就是用多个字段来定义一个主键)。联合主键中的字段越多,占用的索引空间越大,不仅会加大理解难度,还会增加运行时间和索引空间,因此联合主键的字段个数越少越好。
    4.使用主键和外键越多越好
    数据库的设计实际上就是定义各种表,以及各种字段之间的关系。这些关系越多,证明这些实体之间的冗余度越低,利用度越高。这样做的好处在于不仅保证了数据表之间的独立性,还能提升相互之间的关联使用率。
  • 总结
    在这里插入图片描述

05丨检索数据:你还在SELECT * 么?

  • 思考
  1. SELECT 查询的基础语法;
  2. 如何排序检索数据;
  3. 什么情况下用SELECT*,如何提升 SELECT 查询效率?
  • SELECT 查询的基础语法
    王者荣耀实战数据表下载
    (1).查询列:SELECT name FROM heros
    (2).起别名:SELECT name AS n, hp_max AS hm, mp_max AS mm, attack_max AS am, defense_max AS dm FROM heros
    (3).查询常数:SELECT '王者荣耀' as platform, name FROM heros
    (4).去除重复行:SELECT DISTINCT attack_range FROM heros
    (5).排序索引数据:SELECT name, hp_max FROM heros ORDER BY hp_max DESC (注:默认ASC递增;DESC递减)
    (6).约束返回结果数量:SELECT name, hp_max FROM heros ORDER BY hp_max DESC LIMIT 5
  • 关键字顺序和执行顺序
    1、FROM子句组装数据
    2、WHERE子句进行条件筛选
    3、GROUP BY分组
    4、使用聚集函数进行计算;
    5、HAVING筛选分组;
    6、计算所有的表达式;
    7、SELECT 的字段;
    8、ORDER BY排序
    9、LIMIT筛选
  • 总结
    在这里插入图片描述

06丨数据过滤:SQL数据过滤都有哪些方法?

  • 思考
  1. 学会使用 WHERE 子句,如何使用比较运算符对字段的数值进行比较筛选;
  2. 如何使用逻辑运算符,进行多条件的过滤;
  3. 学会使用通配符对数据条件进行复杂过滤。
  • 比较运算符
    在这里插入图片描述
    (1).查询所有生命值在5399到6811之间的英雄:
    SELECT name, hp_max FROM heros WHERE hp_max BETWEEN 5399 AND 6811
    (2).对 heros 表中的 hp_max字段进行空值检查:
    SELECT name, hp_max FROM heros WHERE hp_max IS NULL
  • 逻辑运算符
    在这里插入图片描述
    (1).最大生命值大于 6000,最大法力大于 1700 的英雄,然后按照最大生命值和最大法力值之和从高到低进行排序:
    SELECT name, hp_max, mp_max FROM heros WHERE hp_max > 6000 AND mp_max > 1700 ORDER BY (hp_max+mp_max) DESC
    (2).查询主要定位或者次要定位是法师或是射手的英雄,同时英雄的上线时间不在 2016-01-01 到 2017-01-01 之间:
FROM heros 
WHERE (role_main IN ('法师', '射手') OR role_assist IN ('法师', '射手')) 
AND DATE(birthdate) NOT BETWEEN '2016-01-01' AND '2017-01-01'
ORDER BY (hp_max + mp_max) DESC

(3).使用通配符进行过滤:
SELECT name FROM heros WHERE name LIKE '_% 太 %'

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值