SQL

SQL 简介

August 17, 2022
SQL
SQL, RDBMS

SQL 简介 # SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。 SQL 是什么? # SQL 指结构化查询语言,全称是 Structured Query Language。 SQL 让您可以访问和处理数据库,包括数据插入、查询、更新和删除。 SQL 在1986年成为 ANSI(American National Standards Institute 美国国家标准化组织)的一项标准,在 1987 年成为国际标准化组织(ISO)标准。 SQL 能做什么? # SQL 面向数据库执行查询 SQL 可从数据库取回数据 QL 可在数据库中插入新的记录 QL 可更新数据库中的数据 QL 可从数据库删除记录 QL 可创建新数据库 QL 可在数据库中创建新表 QL 可在数据库中创建存储过程 QL 可在数据库中创建视图 QL 可以设置表、存储过程和视图的权限 SQL 是一种标准 - 但是… # 虽然 SQL 是一门 ANSI(American National Standards Institute 美国国家标准化组织)标准的计算机语言,但是仍然存在着多种不同版本的 SQL 语言。 然而,为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的命令(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。 ...

SQL SELECT TOP, LIMIT, ROWNUM 子句

August 18, 2022
SQL, TOP, LIMIT, ROWNUM

SQL SELECT TOP 子句 # SELECT TOP 子句用于规定要返回的记录的数目。 SELECT TOP 子句对于拥有数千条记录的大型表来说,是非常有用的。 注意:并非所有的数据库系统都支持 SELECT TOP 语句。 MySQL 支持 LIMIT 语句来选取指定的条数数据, Oracle 可以使用 ROWNUM 来选取。 SQL Server / MS Access 语法 # SELECT TOP number|percent column_name(s) FROM table_name; MySQL 语法 # SELECT column_name(s) FROM table_name LIMIT number; 实例 SELECT * FROM Persons LIMIT 5; Oracle 语法 # SELECT column_name(s) FROM table_name WHERE ROWNUM <= number; 实例 SELECT * FROM Persons WHERE ROWNUM <=5; MySQL SELECT LIMIT 实例 # MariaDB [learnsql]> select * from domains limit 5; +----+----------+------------+------------+------------+ | ID | ICP | DomainName | RegDate | EndDate | +----+----------+------------+------------+------------+ | 4 | namesilo | getos. ...

SQL LIKE 操作符

August 18, 2022
SQL, LIKE

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。 SQL LIKE 操作符 # LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。 SQL LIKE 语法 # SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern; SQL LIKE 操作符实例 # 下面的 SQL 语句选取 domainname 以字母 “p” 开始的所有记录: MariaDB [learnsql]> select * from domains where domainname like 'p%'; +----+-----------+------------+------------+------------+ | ID | ICP | DomainName | RegDate | EndDate | +----+-----------+------------+------------+------------+ | 14 | namesilo | pornie.in | 2016/3/10 | 2023/3/10 | | 25 | namesilo | pornie. ...

SQL 通配符

August 20, 2022
SQL, wildcards, 通配符

SQL 通配符 # 通配符可用于替代字符串中的任何其他字符。 在 SQL 中,通配符与 SQL LIKE 操作符一起使用。 SQL 通配符用于搜索表中的数据。 在 SQL 中,可使用以下通配符: |通配符 | 描述 | # | % | 替代 0 个或多个字符 | | _ | 替代一个字符 | | [charlist] | 字符列中的任何单一字符 | | [^charlist]或[!charlist] | 不在字符列中的任何单一字符 | 使用 SQL % 通配符 # 下面的 SQL 语句选取 domainname 以字母 “a” 开始的所有网站: MariaDB [learnsql]> select * from domains where domainname like 'a%'; +----+-----------+------------+------------+------------+ | ID | ICP | DomainName | RegDate | EndDate | +----+-----------+------------+------------+------------+ | 15 | namesilo | aosp. ...

SQL IN 操作符

August 20, 2022
SQL, IN

SQL IN 操作符 # IN 操作符 # IN 操作符允许您在 WHERE 子句中规定多个值。 SQL IN 语法 # SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...); IN 操作符实例 # 下面的 SQL 语句选取 icp 为 “google” 或 “dnspod.cn” 的所有网站: MariaDB [learnsql]> select * from domains where icp in ('google','dnspod.cn'); +----+-----------+--------------+------------+------------+ | ID | ICP | DomainName | RegDate | EndDate | +----+-----------+--------------+------------+------------+ | 22 | google | suopo.net | 2020/6/17 | 2023/6/17 | | 43 | dnspod. ...

SQL BETWEEN 操作符

August 20, 2022
SQL, bwtween

SQL BETWEEN 操作符 # BETWEEN 操作符用于选取介于两个值之间的数据范围内的值。 BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。 SQL BETWEEN 语法 # SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2; BETWEEN 操作符实例 # 下面的 SQL 语句选取 id 介于 10 和 20 之间的所有记录: MariaDB [learnsql]> select * from domains where id between 10 and 20; +----+----------+---------------+-----------+-----------+ | ID | ICP | DomainName | RegDate | EndDate | +----+----------+---------------+-----------+-----------+ | 12 | namesilo | blbl.dev | 2020/1/17 | 2023/1/17 | | 13 | namesilo | raspi. ...

SQL 别名

August 21, 2022
SQL, alias, 别名

SQL 别名 # 通过使用 SQL,可以为表名称或列名称指定别名。 基本上,创建别名是为了让列名称的可读性更强。 列的 SQL 别名语法 # SELECT column_name AS alias_name FROM table_name; 表的 SQL 别名语法 # SELECT column_name(s) FROM table_name AS alias_name; 列的别名实例 # 下面的 SQL 语句指定了两个别名,一个是 domainname 列的别名,一个是 icp 列的别名。提示:如果列名称包含空格,要求使用双引号或方括号: MariaDB [learnsql]> select domainname as n, icp as i from domains; +---------------+-----------+ | n | i | +---------------+-----------+ | getos.org | namesilo | | dotbbq.com | wanwang | | lyq.wiki | wanwang | | les. ...

SQL 连接(JOIN)

August 21, 2022
SQL, JOIN, 连接

SQL JOIN # SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。 最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN)。 SQL INNER JOIN 从多个表中返回满足 JOIN 条件的所有行。 JOIN演示 # sqlite> select domains.id,domains.domainname,logs.google,logs.baidu from domains inner join logs on domains.id=logs.id; ID DomainName google baidu -- ---------------- ------ ----- 1 aisoc.cn 1003 2075 2 ado.ink 1770 1660 3 nrdoc.com 1496 2621 4 getos.org 1864 2745 5 litiaotiao.cn 1574 2295 6 dotbbq.com 2927 2448 7 lyq.wiki 2543 395 8 les.moe 1166 350 9 regex. ...

SQL INNER JOIN 关键字

August 28, 2022
SQL, JOIN, 连接, INNER JOIN, INNER

SQL INNER JOIN 关键字 # INNER JOIN 关键字在表中存在至少一个匹配时返回行。 SQL INNER JOIN 语法 # SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name=table2.column_name; 或: SELECT column_name(s) FROM table1 JOIN table2 ON table1.column_name=table2.column_name; 注释:INNER JOIN 与 JOIN 是相同的。 SQL INNER JOIN 实例 # MariaDB [learnsql]> select domains.id,domains.domainname,logs.baidu,logs.google from domains inner join logs on domains.id=logs.id order by logs.google; +----+---------------+--------+--------+ | id | domainname | baidu | google | +----+---------------+--------+--------+ | 47 | manjushri. ...

SQL LEFT JOIN 关键字

August 28, 2022
SQL, JOIN, 连接, LEFT JOIN, LEFT

SQL LEFT JOIN 关键字 # LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。 SQL LEFT JOIN 语法 # SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name; 或: SELECT column_name(s) FROM table1 LEFT OUTER JOIN table2 ON table1.column_name=table2.column_name; 注释:在某些数据库中,LEFT JOIN 称为 LEFT OUTER JOIN。 SQL LEFT JOIN 实例 # 下面的 SQL 语句将返回所有网站及他们的访问量(如果有的话)。 以下实例中我们把 domains 作为左表,logs 作为右表: MariaDB [learnsql]> select domains.domainname,logs.google from domains left join logs on domains.id=logs.id; +---------------+--------+ | domainname | google | +---------------+--------+ | getos. ...