2021-06-11

sql整理笔记

  1. select语句用于从表中选取数据,结果被存储在一个结果表中(称为结果集)
    语法:
    select 列表名 from 表名称
    select * from 表名称

  2. select distinct语句列出不同的distinct的值,用于返回唯一不同的值
    SELECT DISTINCT 列名称 FROM 表名称

  3. wehere 子句添加到select语句
    SELECT 列名称 FROM 表名称 WHERE 列 运算符值

  4. AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤
    AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
    如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
    如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
    使用 AND 来显示所有姓为 “Carter” 并且名为 “Thomas” 的人:
    SELECT * FROM Persons WHERE FirstName=‘Thomas’ AND LastName=‘Carter’
    使用 OR 来显示所有姓为 “Carter” 或者名为 “Thomas” 的人:
    SELECT * FROM Persons WHERE firstname=‘Thomas’ OR lastname=‘Carter’
    也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式):
    SELECT * FROM Persons WHERE (FirstName=‘Thomas’ OR FirstName=‘William’)
    AND LastName=‘Carter’

  5. order by 语句用于对结果集进行排序
    ORDER BY 语句用于根据指定的列对结果集进行排序。
    ORDER BY 语句默认按照升序对记录进行排序。
    如果按照降序对记录进行排序,可以使用 DESC 关键字。

以字母顺序显示公司名称:
SELECT Company, OrderNumber FROM Orders ORDER BY Company
以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):
SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber
以逆字母顺序显示公司名称:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC
以逆字母顺序显示公司名称,并以数字顺序显示顺序号:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC

  1. insert into语句 用于想表格中插入新的行
    INSERT INTO 表名称 VALUES (值1, 值2,…)
    INSERT INTO Persons VALUES (‘Gates’, ‘Bill’, ‘Xuanwumen 10’, ‘Beijing’)
    指定所要插入数据的列:
    INSERT INTO table_name (列1, 列2,…) VALUES (值1, 值2,…)
    INSERT INTO Persons (LastName, Address) VALUES (‘Wilson’, ‘Champs-Elysees’)

  2. update语句 用于修改表中的数据
    UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

  3. delete语句 用于删除表中的行
    DELETE FROM 表名称 WHERE 列名称 = 值
    删除所有行:
    可以在不删除表的情况下删除所有的行
    DELETE FROM table_name 或者 DELETE * FROM table_name

  4. top子句
    TOP 子句用于规定要返回的记录的数目。
    对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。
    注释:并非所有的数据库系统都支持 TOP 子句。
    sql server语法:
    SELECT TOP number|percent column_name(s) FROM table_name
    mysql语法:
    SELECT column_name(s) FROM table_name LIMIT number
    例如:查询前两条数据:
    select top 2 * from Persons

  5. like操作符 用于在where子句中搜索列中的指定模式
    SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern
    通过not 关键字,可以从表中选取不包含not like里面的数据

  6. 通配符
    LIKE ‘[!ALN]%’ 选取不以ALN开头的
    LIKE ‘[ALN]%’ 选取以ALN开头的

  7. in操作符允许我们在where子句中规定多个值
    SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,…)
    表中选取姓氏为 Adams 和 Carter 的人:
    SELECT * FROM Persons WHERE LastName IN (‘Adams’,‘Carter’)

  8. between…and 会选取介于两个值之间的数据范围(值可以是数值,文本或者日期)
    如需以字母顺序显示介于 “Adams”(包括)和 “Carter”(不包括)之间的人,请使用下面的 SQL:
    SELECT * FROM Persons WHERE LastName BETWEEN ‘Adams’ AND ‘Carter’
    如需使用上面的例子显示范围之外的人,请使用 NOT 操作符:
    SELECT * FROM Persons WHERE LastName NOT BETWEEN ‘Adams’ AND ‘Carter’

  9. alias语法 为列名称和表名称指定别名
    表的语法: SELECT column_name(s) FROM table_name AS alias_name
    使用别名的语法:
    SELECT po.OrderID, p.LastName, p.FirstName
    FROM Persons AS p, Product_Orders AS po
    WHERE p.LastName=‘Adams’ AND p.FirstName=‘John’
    不适用别名的语法:
    SELECT Product_Orders.OrderID, Persons.LastName, Persons.FirstName
    FROM Persons, Product_Orders
    WHERE Persons.LastName=‘Adams’ AND Persons.FirstName=‘John’

列的语法: SELECT column_name AS alias_name FROM table_name
使用列表别名的用法:
SELECT LastName AS Family, FirstName AS Name FROM Persons

  1. join用于根据两个或者多个表中的列之间的关系,从这些表中查询数据
    SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
    FROM Persons, Orders
    WHERE Persons.Id_P = Orders.Id_P
    使用join
    SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
    FROM Persons
    INNER JOIN Orders
    ON Persons.Id_P = Orders.Id_P
    ORDER BY Persons.LastName

  2. left join
    A表 学号 姓名
    B表 学号 成绩
    A表有 学号1 张三 学号2 李四 学号3 王五
    B表有 学号1 50分 学号3 60分
    select A.姓名,B.成绩 from A left join B on A.学号=B.学号
    结果就是
    张三 50分
    李四 (空)
    王五 60分

总结:
A inner join B 取交集。
A left join B 取 A 全部,B 没有对应的值为 null。
A right join B 取 B 全部 A 没有对应的值为 null。
A full outer join B 取并集,彼此没有对应的值为 null。
对应条件在 on 后面填写。

count (表达式)–分组里非空记录数
count (表达式)–分组里非空记录数
count(*)–所有记录
count(1)–所有记录
count(case job = ‘CLERK’ then 2 end )–CLERK 人数
count(comm)–有奖金的人数
count(distinct job)–distinct(去重),共有多少种工作

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值