美文网首页
SQL小笔记

SQL小笔记

作者: 周日上楼梯 | 来源:发表于2020-03-04 22:29 被阅读0次

用之前要连接好

打开一级目录:

USE xxxx;
关键词大写

选择列:

SELECT * 

OR SELECT xxxx
前者选择所有列 ,后者选择 特定列
SELECT DISTINCT 选择的列没有重复元素

从哪选:

FROM xxx 

指定按什么:

WHERE XXX = xxxx  (有点像IF)

按什么排序:

ORDER BY xxxxx
ORDER BY XXXXX DESC : means 倒序
ORDER BY XX, XXX, ,将按照两个条件排序

AND优先级比OR高

IN

可以合并多个OR条件判断

按特定字符检索:

WHERE XXX LIKE 'xx%':
%分号可以表示任意字符 所以也可以这样用 %xx%
用下划线表示固定一个字符,几个字符就连用几个

如果把 LIKE 换成 REGEXP :即正则表达式

则在字符前加^表示以该字符串开头的搜索,以$结尾的 表示以该字符串结尾的字符搜索
搜索多个字符的  可在中间加  |  表示 or 的 意思,多个条件检索

[]e   想搜索某个以e结尾但前缀不明的 字符串,可以用[]然后在括号内加上想检索的
几种情形   同理向后也可以
假如想搜索 a到h  可以用  a-h

-- ^ beginning
-- $ end
-- | logical or
-- [abcd]
-- [a-f]

WHERE XX IS NULL 可用来查询空值

LIMIT Num ,限制前多少行记录:

LIMIT num,num  前者是偏移量,后者是提取的数

常用顺序

SELECT
FROM
WHERE
ORDER BY
LIMIT

FROM xx

JOIN xxx ON xxx
将两个表链接在一起 其中ON后面是条件判断语句
在FROM XX ABCD可以赋予XX的别称ABCD这样 字符长度长的时候就可以缩写了
当然 JOIN后面也可以

用 LEFT JOIN 表示外部链接

RIGHT JOIN 表示内部链接

显式链接与隐式链接

显式
FROM JOIN ON
隐式
FROM 两个表,WHERE xxxx

引用相同列缩写版

SELECT
    o.order_id,
    c.first_name
FROM orders o
JOIN customers c
    -- ON o.customer_id = c.customer_id
    USING (customer_id)

自然链接

不建议使用,易发生错误

交叉链接

SELECT
c.first_name AS customer,
p.name AS product
FROM customers c
CROSS JOIN products p
ORDER BY c.first_name

or:
FROM customers c,products p
ORDER BY c.first_name

UNION

UNION能链接两个查询记录,第一个查询末尾需要加半分号;

插入,更新,删除

设计模式:
PK : primary key
NN : not NULL
AI : auto increment 自动递增

插入:
INSERT INTO xx表 (各个key)
VALUES(实际插入的值)

内置函数:
LAST_INSERT_ID () 返回最后一个插入行的ID

数据从一张表复制到另一张表中:
首先创建表:
CREATE TABLE XXX AS
SELECT * FROM

更新:
UPDATE 某table
SET 需要更改的值
WHERE 接限定条件,一般限定PK.

删除:

DELETE FROM XXX
WHERE XXXXX

aggregate functions

COUNT usually not going include null value
if want to get the total number ,you will have to use COUNT of star
COUNT(*)

MAX MIN AVG SUM
And we can write an expression in parentheis ,when mysql try to excute the query

SELECT

SELECT 'first half of 2019' AS date_range
and the first columns' name is date_Range first row name is 'First half of 2019'

记个思路

如果某次需要展示自创的行列 可以如上所示,但是这列名都必须相同,
行名可以不同,然后用UNION链接起来

GROUP

GROUP BY clause can present each part
and usually after WHERE and before ORDER BY

HAVING clause

WE can use Having Clause to filter data after Group By clause
WHERE clause 可以过滤select之外的条件 而 having clause 不可以

ROLLUP

GROUP BY XXX WITH ROLLUP 可以多一个汇总值
但是ROLLUP 是mysql特有的函数

子查询

WHERE 套子查询的时候 左边的条件要在括号里 SELECT

SELECT里加子查询才能过滤多行,不然只有一行过滤出来的数据

ALL keyword

可用在比较时,大于一个整体过滤值组 而不用先求出这些值组的最大值

ANY语句

ANY语句与子查询IN相同 ,
ANY,SOME 父查询中的结果集大于子查询中任意一个结果集中的值,则为真

EXISTS 语句

EXISTS返回的是BOOL值,而IN语句返回的是一个值集合,当数据量庞大的时候显然用EXSITS语句更好些
对比如下

        SELECT *
        FROM clients c
        WHERE client_id IN (
            SELECT DISTINCT client_id
            FROM invoices
        )

        SELECT *
        FROM clients c
        WHERE EXISTS (
            SELECT client_id
            FROM invoices
            WHERE client_id = c.client_id
            )

time format

需要经常查阅官方文档

DATE

DATE_ADD 和 DATE_SUB 可以加减时间
LIKE: SELECT DATE_ADD (NOW(),INTERVAL 1 DAY)

DATEDIFF FUNCTON 计算时间差 前面的时间差-后面的时间差
TIME_TO_SEC 时间转秒函数

IFNULL函数

可以重命名值为NULL 的列
IFNULL(xxxx,'xx') AS XXXXX

COALESCE函数

将null值替换为列第一个非null值

CONCAT

拼接函数名字段

IF 函数

IF(条件,TRUE,FALSE) AS XXX

CASE Operator

CASE
WHEN XXXXX THEN
WHEN XXXXX THEN
ELSE
END AS XXX

VIEW 创建视图

CREATE VIEW XXX AS
或者CREATE OR REPLACE VIEW

删除视图 DROP VIEW
在编码最后一句写 WITH CHECK OPTION可以保护视图

创建存储过程

DELIMITER CREATE PROCEDURE get_clients() BEGIN SELECT * FROM clients; END
DELIMITER ;

删除存储过程

DROP PROCEDURE IF EXISTS XXXX; 这样可以保证更新能力

异常命名

SIGNAL SQLSTATE 'number' SET MESSAGE_TEXT = ''

相关文章

  • SQL小笔记

    用之前要连接好 打开一级目录: 选择列: OR SELECT xxxx前者选择所有列 ,后者选择 特定列SELE...

  • SQL 笔记

    SQL 笔记 SQL 简介 SQL = Structured Query Language 总的来说,SQL语言定...

  • 2018-07-17

    sql笔记1 sql笔记2 case when then 比较字符串 left join 最近使用left joi...

  • mysql 操作的常用命令

    sql:SHOWVARIABLESLIKE'character%' mysql学习笔记-常用命令常用sql:SHO...

  • WebGoat 靶场笔记

    sql注入笔记1.String SQL injection SELECT * FROM user_data WHE...

  • SQL学习笔记day1

    SQL学习笔记day1 sql语句种类 DDL(Data Definition Language,数据定义语言):...

  • First week

    用于自己复习笔记,初学MARKDOWN(W3SCHOOL学习) SQL SQL 指结构化查询语言SQL 使我们有能...

  • Learn SQL| Codecademy第二节学习笔记

    1、Learn SQL| Codecademy第一节学习笔记 2、学习记录☞Learn SQL| Codecade...

  • 2018-02-09持续更新的SQL语言

    SQL学习笔记Structured Query Language: 对于SQL语言,有几个特点:1 永远第一个出现...

  • SQL 基础笔记

    本文为 SQL必知必会 的读后笔记 SELECT 语句 多条SQL语句必须以分号(;)分隔,建议加上 ...

网友评论

      本文标题:SQL小笔记

      本文链接:https://www.haomeiwen.com/subject/clmwlhtx.html