SQL_基础教程

课程1: Basic SQL(发音sei ku)

课程来源:https://classroom.udacity.com/courses/ud198

ERD

(Entry relationship diagram) 实体关系图
这些图可帮助您可视化所分析的数据,包括:

  1. 表的名称。
  2. 每个表中的列。
  3. 表一起工作的方式。
    SQL_基础教程_第1张图片

SQL

(Structured Query Language)
企业使用数据库的原因:
1 确保数据的完整性
2 可以快速访问数据
3 数据易于分享

SQL的关键是理解语句。一些声明包括:

  1. CREATE TABLE是在数据库中创建新表的语句。
  2. DROP TABLE是删除数据库中的表的语句。
  3. SELECT允许您读取和显示数据。这称为查询。

每个查询中使用:SELECT … FROM…。

  1. SELECT指示要为其提供数据的列。
  2. FROM指定要从中选择表的列。注意,该表中的列需要存在。
    如果要提供表中所有列的数据,请使用“ *”,例如 SELECT * FROM orders;

SELECT 格式化查询

SQL查询不区分大小写

通用的做法是将表名和列名保留小写的同时,大写命令字.这样可以使查询更易于阅读,而在编写更复杂的查询时,查询将变得更加重要.

在表名和变量名中避免空格

表名和变量名中通常使用下划线并在列名称中避免空格

在查询中使用空格

SQL查询会忽略空格,因此可以根据需要在代码之间添加尽可能多的空格和空白行,查询结果是相同的.例如:

SELECT account_id
FROM orders

分号

最好的做法是在每个语句的末尾加上分号,如果环境允许,也可以一次运行多个查询。

LIMIT

LIMIT可以让你看到的一个表的前几行语句。这比加载整个数据集要快得多。
LIMIT命令始终是一个查询的最后一部分, 例如:

SELECT *
FROM orders
LIMIT 10;

ORDER BY

ORDER BY语句允许我们对我们造成任何列使用的数据进行排序
使用ORDER BY只会对查询结果产生临时影响
DESC可以在ORDER BY语句的列之后添加按降序排序,因为默认情况是按升序排序(ASC)。
降序(descending)
使用ORDER BY要注意排序多个字段时的顺序问题.例如, 以下两个查询

SELECT id, account_id, total_amt_usd
FROM orders
ORDER BY account_id, total_amt_usd DESC;
SELECT id, account_id, total_amt_usd
FROM orders
ORDER BY total_amt_usd DESC, account_id;

在查询1中,将每个帐户ID的所有订单分组在一起,然后在每个分组中,订单的显示顺序为最大订单量到最小订单量。在查询2中,由于首先按总金额排序,因此订单从最大到最小显示,而不管它们来自哪个account_id。然后,将它们按照account_id排序。

WHERE

可以将WHERE命令视为过滤数据
包括 >, < , >=, <=, =, != 6种
WHERE语句还可以用非数字数据使用。我们可以在此处使用=and !=运算符。这里需要确保对文本数据使用单引号

派生列(derived column)

创建由现有列组合而成的新列称为派生列。通常,您想使用AS关键字为新列指定名称或“别名” 。
此派生列及其别名通常只是临时的,仅在查询期间存在。例如:

SELECT id, (standard_amt_usd/total_amt_usd)*100 AS std_percent, total_amt_usd
FROM orders
LIMIT 10;

在这里,我们将标准纸面美元金额除以总订单量,以找到该订单的标准纸面百分比,并使用AS关键字将此新列命名为“ std_percent
可以使用的算术运算符为: +, -, *, / 4种
如果是除法, 注意数据中的至少一个值在您的公式中创建了零除的情况.

逻辑运算符

  1. LIKE
    这使您可以进行类似的操作使用WHERE和=,但是当你的情况可能不知道究竟你在找什么。
  2. IN
    这使您可以执行与使用WHERE和相似的操作=,但要针对多个条件。
  3. NOT
    与IN和LIKE一起使用,以选择在特定条件下NOT LIKE或NOT IN所有状态的所有行。
  4. AND和BETWEEN之
    组合,您可以在必须满足所有组合条件的情况下组合操作。
  5. OR
    这允许您组合其中至少有一个组合条件为真的操作。

LIKE

通配符(wildcard)
% 代表一个或任意数量的字符
使用LIKE需要区分大小写

例如: name字段中以C开始的记录

SELECT name
FROM accounts
WHERE name LIKE 'C%';

name字段包含one的记录

SELECT name
FROM accounts
WHERE name LIKE '%one%';

name字段以s结尾的记录

SELECT name
FROM accounts
WHERE name LIKE '%s';

IN

可以检查同一查询中一个列值中对应的一个或多个数据.
文本可以使用单引号或双引号, 如果文本中带有``, 则可能需要使用双引号
例如:

SELECT *
FROM web_events
WHERE channel IN ('organic', 'adwords');

AND和BETWEEN

WHERE column >= 6 AND column <= 10
等价

WHERE column BETWEEN 6 AND 10
BETWEEN 包含两边的端点值
注意使用BETWEEN获取日期,!虽然BETWEEN通常包括端点,但它假设日期时间为00:00:00(即午夜)例如:
获取2016年的数据,右侧端点设置为“ 2017-01-01”

SELECT *
FROM web_events
WHERE channel IN (‘organic’, ‘adwords’) AND occurred_at BETWEEN ‘2016-01-01’ AND '2017-01-01’ORDER BY occurred_at DESC;

OR

OR经常可能需要使用括号来确保要执行的逻辑已正确执行

SELECT *
FROM accounts
WHERE (name LIKE ‘C%’ OR name LIKE ‘W%’)
AND (primary_poc LIKE ‘%ana%’ OR primary_poc LIKE ‘%Ana%’)
AND primary_poc NOT LIKE ‘%eana%’;

小结

Statement How to Use It Other Details
SELECT SELECT Col1, Col2, … Provide the columns you want
FROM FROM Table Provide the table where the columns exist
LIMIT LIMIT 10 Limits based number of rows returned
ORDER BY ORDER BY Col Orders table based on the column. Used with DESC.
WHERE WHERE Col > 5 A conditional statement to filter your results
LIKE WHERE Col LIKE ‘%me%’ Only pulls rows where column has ‘me’ within the text
IN WHERE Col IN (‘Y’, ‘N’) A filter for only rows with column of ‘Y’ or ‘N’
NOT WHERE Col NOT IN (‘Y’, ‘N’) NOT is frequently used with LIKE and IN
AND WHERE Col1 > 5 AND Col2 < 3 Filter rows where two or more conditions must be true
OR WHERE Col1 > 5 OR Col2 < 3 Filter rows where at least one condition must be true
BETWEEN WHERE Col BETWEEN 3 AND 5 Often easier syntax than using an AND

一个总体的例子:

SELECT col1, col2
FROM table1
WHERE col3  > 5 AND col4 LIKE '%os%'ORDER BY col5
LIMIT 10;

你可能感兴趣的:(#,MySQL数据库_命令详解,mysql,sql,数据库,sqlite,mongodb)