SQL学习

什么是SQL

  • SQL 指结构化查询语言
  • SQL 使我们有能力访问数据库
  • SQL 是一种 ANSI 的标准计算机语言(ANSI,美国国家标准化组织)

SQL能做什么

  • 基本:增删改查

SQL分类

可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。

  • 查询和更新指令构成了 SQL 的 DML 部分:

    • SELECT - 从数据库表中获取数据
    • UPDATE - 更新数据库表中的数据
    • DELETE - 从数据库表中删除数据
    • INSERT INTO - 向数据库表中插入数据
  • SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。SQL 中最重要的 DDL 语句:

    • CREATE DATABASE - 创建新数据库
    • ALTER DATABASE - 修改数据库
    • CREATE TABLE - 创建新表
    • ALTER TABLE - 变更(改变)数据库表
    • DROP TABLE - 删除表
    • CREATE INDEX - 创建索引(搜索键)
    • DROP INDEX - 删除索引

SQL SELECT

  • 选择某一列: SELECT 列名称 FROM 表名称
  • 选择所有列: SELECT * FROM 表名称

SQL SELECT DISTINCT

  • 返回所选列中不同的值:SELECT DISTINCT 列名称 FROM 表名称

SQL WHERE

  • 从指定列返回满足条件的值:SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
  • 例:SELECT * FROM Persons WHERE City=‘Beijing’,注意值如果是文本需要加单引号。

SQL AND & OR

  • AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来
  • 例:SELECT * FROM Persons WHERE FirstName=‘Thomas’ AND LastName=‘Carter’

SQL ORDER BY

  • ORDER BY 语句用于根据指定的列对结果集进行排序:SELECT 列名 FROM 表名 ORDER BY 要排序的列名
  • ORDER BY 语句默认按照升序对记录进行排序。如果按照降序对记录进行排序,可以使用 DESC 关键字。
  • 例:SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC

SQL INSERT INTO

  • INSERT INTO 语句用于向表格中插入新的行:INSERT INTO 表名称 VALUES (值1, 值2,…)
  • 也可以指定插入数据的列:INSERT INTO table_name (列1, 列2,…) VALUES (值1, 值2,…)
  • 例: INSERT INTO Persons (LastName, Address) VALUES (‘Wilson’, ‘Champs-Elysees’)

SQL UPDATE

  • Update 语句用于修改表中的数据:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
  • 例:UPDATE Person SET FirstName = ‘Fred’ WHERE LastName = ‘Wilson’

SQL DELETE

  • DELETE 语句用于删除表中的行:DELETE FROM 表名称 WHERE 列名称 = 值
  • 例:DELETE FROM Person WHERE LastName = ‘Wilson’
  • 删除所有行:DELETE * FROM table_nameDELETE FROM table_name

SQL TOP

  • TOP 子句用于规定要返回的记录的数目。对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。并非所有的数据库系统都支持 TOP 子句。
  • SELECT TOP number|percent column_name(s) FROM table_name
  • 例: 取Persons表中前两行的所有列:SELECT TOP 2 * FROM Persons
  • 例: 取Persons表中前50%行的所有列:SELECT TOP 50 PERCENT * FROM Persons

SQL LIKE

  • LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式:SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern
  • 从"Persons" 表中选取居住在以 “N” 开始的城市里的人:SELECT * FROM Persons
    WHERE City LIKE ‘N%’(% 用于定义通配符)

SQL 通配符

在这里插入图片描述

  • 例:从Persons表中提取City内不以A、L、N开头的那一行:SELECT * FROM Persons WHERE City LIKE ‘[!ALN]%’

SQL IN

  • 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’)

SQL BETWEEN

  • BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围:SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2
  • 例:以字母顺序显示介于 “Adams”(包括)和 “Carter”(不包括)之间的人:SELECT * FROM Persons WHERE LastName BETWEEN ‘Adams’ AND ‘Carter’

SQL Alias

  • 通过使用 SQL,可以为列名称和表名称指定别名(Alias)
  • 表的 SQL Alias 语法:SELECT column_name(s) FROM table_name AS alias_name
  • 列的 SQL Alias 语法: SELECT column_name AS alias_name FROM table_name

SQL JOIN

  • SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
  • Key:数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列(可以看成是一个索引),在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。(一个表中的Values用另一个表中的Key)
  • 例:SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders WHERE Persons.Id_P = Orders.Id_P

SQL INNER JOIN

  • 从table_1和table_2中选择指定列组成结果集:SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name
  • 例:SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName

SQL LEFT JOIN

  • LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行:SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name

SQL RIGHT JOIN

  • RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行:SELECT column_name(s) FROM table_name1 RIGHT JOIN table_name2 ON table_name1.column_name=table_name2.column_name

SQL FULL JOIN

  • 只要其中某个表存在匹配,FULL JOIN 关键字就会返回行:SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 ON table_name1.column_name=table_name2.column_name

SQL UNION

  • UNION 操作符用于合并两个或多个 SELECT 语句的结果集:==SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2 ==
  • 注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
  • UNION ALL 会列出所有值(包括重复的值)

SQL 函数

  • SQL拥有很多可以用于计数和计算的内建函数
  • 语法:SELECT function(列) FROM 表
  • SQL中基本的函数类型有:Aggregate函数和Scalar函数
  • SQL AVG():
    • AVG函数返回数值列的平均值。NULL值不包括在计算中。
  • SQL COUNT():
    • COUNT() 函数返回匹配指定条件的行数。
    • SELECT COUNT(column_name) FROM table_name:COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入)。
    • SELECT COUNT(*) FROM table_name:COUNT(*) 函数返回表中的记录数。
    • SELECT COUNT(DISTINCT column_name) FROM table_name:COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目。
  • SQL FIRST():
    • SELECT FIRST(column_name) FROM table_name:FIRST() 函数返回指定的字段中第一个记录的值。
  • SQL LAST():
    • 同上
  • SQL MAX():
    • SELECT MAX(column_name) FROM table_name:MAX 函数返回一列中的最大值。NULL 值不包括在计算中。
  • SQL MIN():
    • 同上
  • SQL SUM():
    • SELECT SUM(column_name) FROM table_name:SUM 函数返回数值列的总数(总额)。
  • SQL GROUP BY:
    • GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。
    • SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值