vlambda博客
学习文章列表

今日学习 | MySQL语法30讲复盘

Sabrina求知笔记

邮箱|[email protected]

今日学习 | MySQL语法30讲复盘

今日贴士STAR法则

STAR法则是情境(situation)、任务(task)、行动(action)、结果(result)四项的缩写。STAR法则是一种常常被面试官使用的工具,用来收集面试者与工作相关的具体信息和能力。STAR法则比起传统的面试手法来说,可以更精确地预测面试者未来的工作表现。 



最近想投一个鹅厂短视频推荐策略的数据产品实习生,需要熟练SQL进行数据分析。因此学习了@MoshHamedani的SQL进阶教程,目前能检索、插入、更新、删除数据。

01

News

SQL 语法总结 I

NO.1 基础语句

USE 子句调动数据库= 双击

需要以分号结束;

    因为MySQL不分大小写,因此规定,只大写关键字;

    以' '或" "代表字符串;

1| USE sql_store;


SELECT * FROM

*代表全体列,可手动单选;FROM 后面接表名

-- 双横线代表注释

    1.LIMIT n = 只取前n行

LIMIT m,n = 跳过m行取n行

    #LIMIT永远放在语句最后


    2.+-*/运算符计算属性值

%代表取模运算,<> !=为不等于

       布尔运算中AND有最高优先级,可用()改变顺序


3.SELECT……AS…… 

    给派生属性取名


4.SELECT DISTINCT

    得到删去重复数据的列表   


WHERE 子句筛选属性

    1.可用年份字符串进行比较

1| WHERE birthdate > '1990-01-01'


    2.WHERE NOT ()

用排除法得到结果


    3.WHERE (NOT)IN(a,b,c..)子句

取值可选()内的筛选

        BETWEEN ... AND ... 筛选中间值


    4.WHERE ... LIKE '...'

    %任意长度占位符

        _一个字符占位符


    5.REGEXP '' 正则运算

     ^以字符开头

        $以字符结尾

        'a|b' | = OR

        '[a-h]d' [] = 单字符出现


    6.WHERE ... IS NULL

 筛选空值


ORDER BY

    以某属性为序,属性后DESC为降序

    1| SELECT.. FROM..

    2| WHERE..

    3| ORDER BY.. 

    顺序不可颠倒



左右滑动查看练习代码

今日学习 | MySQL语法30讲复盘
今日学习 | MySQL语法30讲复盘
今日学习 | MySQL语法30讲复盘
今日学习 | MySQL语法30讲复盘
今日学习 | MySQL语法30讲复盘
今日学习 | MySQL语法30讲复盘
今日学习 | MySQL语法30讲复盘
今日学习 | MySQL语法30讲复盘
今日学习 | MySQL语法30讲复盘
今日学习 | MySQL语法30讲复盘



NO.2 内外连接

当需要将多张表格连接在一起共同展示结果时,通过JOIN语句连接,后跟连接两张表对应的共同属性

·当表格之间的属性名相同时,使用JOIN..USING()..子句

·属性名不相同时,使用 JOIN..ON..子句


INNER JOIN 内连接

1.显式连接 Explicity Syntax

    SELECT... FROM...后接表名可简化

(INNER) JOIN...后接表名可简化

        ON...接表1名.联系属性名 = 表2名.联系属性名

    *当一个表格有两个属性构成主码时,ON后要写两个等式,并用AND连接

 

   1| FROM orders o

   2| JOIN customers c

   3|     ON o.customer_id = c.customer_id


   1| FROM orders o

   2| JOIN customers c

   3|     USING (customer_id)



    2.隐式连接 Implicity Syntax

    SELECT... FROM 表a, 表b

    WHERE...接表1名.联系属性名 = 表2名.联系属性名

   1| FROM orders o, customers c

   2| WHERE o.customer_id = c.customer_id

 

    #尽量少用隐式连接,容易出现笛卡尔积


LEFT JOIN 左连接

 INNER JOIN 默认只取两张表中对应且不为空值的项

    有时,需要的一条记录在表格1有值,对应表格2的属性为空值,则使用LEFT JOIN

    韦恩图如下:

今日学习 | MySQL语法30讲复盘

图源水印

NATURAL JOIN 语句

简单来说,是为了省略ON子句

当为了缩短查询时,让MySQL自动选择相同名字的属性,可使用NATURAL JOIN语句,由于不可控,不建议用


   1| SELECT *

   2| FROM orders o

   3|     NATURAL JOIN customers c


CROSS JOIN语句

SELECT..FROM 后接两张表的隐式连接,执行结果与CROSS JOIN...WHERE...相同


如果不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,不建议用

 

  1| SELECT *

   2| FROM customers c, orders o

   3|     ORDER BY c.first_name



   1| SELECT *

   2| FROM customers c

   3| CROSS JOIN orders o

   4|     ORDER BY c.first_name


UNION子句

UNION子句能连接不同表格的记录,结果的列名为第一个第一个SELECT语句的列名


   1| SELECT name AS full_name

   2| FROM shippers

   3| UNION

   4| SELECT first_name

   5| FROM customers


左右滑动查看练习代码

今日学习 | MySQL语法30讲复盘

内连接

今日学习 | MySQL语法30讲复盘

多表连接

今日学习 | MySQL语法30讲复盘

多表外连接

今日学习 | MySQL语法30讲复盘

USING子句

今日学习 | MySQL语法30讲复盘

USING子句




慧慧的求知笔记
国内985本硕设计,研二,无实习经历,目标是2022年秋招进大厂
1篇原创内容
Official Account