SQL 01-简介 标准命令 基本语法 运算符 表达式

SQL(结构化查询语言)是用于访问和操作数据库中的数据的标准数据库编程语言。
SQL是关系数据库系统的标准语言。所有关系数据库管理系统(RDMS),如MySQL、MS Access、Oracle、Sybase、Informix、Postgres和SQL Server都使用SQL作为它们的标准数据库语言。

SQL标准命令

DDL(数据定义语言)
数据定义语言用于改变数据库结构,包括创建、更改和删除数据库对象。用于操纵表结构的数据定义语言命令有:

  • CREATE TABLE–创建(在数据库中创建新表、表视图或其他对象)
  • ALTER TABLE– 更改 (修改现有的数据库对象,如表)
  • DROP TABLE– 删除 (删除数据库中的整个表、表或其他对象的视图)

DML(数据操纵语言)
数据操纵语言用于检索、插入和修改数据,数据操纵语言是最常见的SQL命令。

  • INSERT– 插入 (创建记录)
  • DELETE– 删除 (删除记录)
  • UPDATE– 修改(修改记录)
  • SELECT – 检索 (从一个或多个表检索某些记录)

DCL(数据控制语言)
数据控制语言为用户提供权限控制命令。

  • GRANT– 授予权限
  • REVOKE– 撤销已授予的权限

SQL语法规则

  • SQL语句总是以关键字开始,如SELECT、INSERT、UPDATE、DELETE、DROP、CREATE。
  • SQL语句以分号结尾。
  • SQL不区分大小写,意味着update与UPDATE相同。

SQL Select(选择) 语法

SELECT 语法用于从数据库中选择数据。
返回的数据存储在结果表中,称为结果集。
基本语法:SELECT和FROM
 在任何SQL查询语句中都:SELECT和FROM他们必须按顺序排列。SELECT指示要查看哪些列,FROM标识它们所在的表。

SQL SELECT 语法如下所示:

SELECT column1, column2, ...
FROM table_name;

这里,column1,column2,…是要从中选择数据的表的字段名称。如果要选择表中可用的所有字段,请使用以下语法:

SELECT * FROM table_name;

在这里插入图片描述
SELECT 检索一列
 下面的 SQL 语句从 “Customers” 表中选取 “City” 列:

SELECT City FROM Customers; 

SELECT 检索多列
 下面的 SQL 语句从 “Customers” 表中选取 “CustomerName” 和 “City” 列:

SELECT CustomerName, City FROM Customers;

注意:这两个列名在查询中用逗号分隔。每当选择多个列时,它们必须用逗号分隔,但最后一列名称之后不能添加逗号。

SELECT * 实例 - 检索所有列
 下面的 SQL 语句从 “Customers” 表中选取所有列:

SELECT * FROM Customers;

如果要选择表中的所有列,则可以使用 * 而不需要把所有列名罗列查询。

SQL SELECT DISTINCT(选择不同) 语法

SQL SELECT DISTINCT 语法
 SELECT DISTINCT语法用于仅返回不同的(different)值。在一张表内,一列通常包含许多重复的值; 有时你只想列出不同的(different)值。

SELECT DISTINCT语句用于仅返回不同的(different)值。

SQL SELECT DISTINCT语法如下所示:

SELECT DISTINCT column1, column2, ...
FROM table_name;

在这里插入图片描述
以下SQL语句仅从"Customers" 表中的 “Country” 列中选择DISTINCT值:

SELECT DISTINCT Country FROM Customers;

在这里插入图片描述

SQL WHERE Clause(查询子句)

SQL WHERE 子句
 WHERE 子句用于过滤记录。
 WHERE 子句用于提取满足指定标准的记录。
SQL WHERE 语法

SELECT column1, column2, ...
FROM table_name
WHERE condition;

注意: WHERE子句不仅用于SELECT语法,还用于UPDATE,DELETE语法等!

WHERE子句可以与以下类型的SQL语句一起使用:

  • UPDATE
  • DELETE
  • UPDATE语句
UPDATE "table_name"
SET "column_1" = [new value]
WHERE "condition";

DELETE语句:

DELETE FROM "table_name"
WHERE "condition";

在这里插入图片描述
以下SQL语句从"Customers"表中选择其国家为"Mexico"的所有客户:

SELECT * FROM Customers
WHERE Country='Mexico';

也可以使用OR运算符的查询子句:

SELECT * FROM Customers
WHERE Country='Mexico' OR PostalCode='05021';

WHERE 子句中的运算符
在这里插入图片描述

SQL AND, OR and NOT(与,或不是运算符)

SQL AND & OR 运算符
 AND&OR运算符用于根据一个以上的条件过滤记录,即用于组合多个条件以缩小SQL语句中的数据。

WHERE子句可以与AND,OR和NOT运算符结合使用。

AND和OR运算符用于根据多个条件筛选记录:

  • 如果由AND分隔的所有条件为TRUE,则AND运算符显示记录。
  • 如果使用AND运算符组合N个条件。对于SQL语句执行的操作(无论是事务还是查询),所有由AND分隔的条件都必须为TRUE。
  • 如果由OR分隔的任何条件为真,则OR运算符显示记录。
  • 如果使用OR运算符组合N个条件。对于SQL语句执行的操作(无论是事务还是查询),OR分隔的任何一个条件都必须为TRUE。
  • 如果条件不为TRUE,则NOT运算符显示记录。

AND语法

SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;

OR语法

SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;

NOT语法

SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;

在这里插入图片描述
AND 运算符实例
以下SQL语句从 “Customers” 表中选择其国家为 “Germany” 、其城市为"Berlin" 的所有客户:

SELECT * FROM Customers
WHERE Country='Germany'
AND City='Berlin';

OR 运算符实例
 以下SQL语句选择城市为“Berlin”或“München”的“Customers”的所有字段:

SELECT * FROM Customers
WHERE City='Berlin' OR City='München';

NOT 运算符实例
 以下SQL语句选择国家不是 "Germany"的"Customers"的所有字段:

SELECT * FROM Customers
WHERE NOT Country='Germany';

结合 AND & OR
还可以组合AND和OR(使用括号来组成成复杂的表达式)。

以下SQL语句从国家 “Germany” 且城市为"Berlin" 或"München"的"Customers" 表中选择所有客户:

SELECT * FROM Customers
WHERE Country='Germany'
AND (City='Berlin' OR City='München');

结合AND,OR和NOT
也可以结合AND,OR和NOT运算符。

以下SQL语句选择国家是“德国”的“客户”的所有字段,城市必须是“柏林”或“慕尼黑”(用括号形成复杂表达式):

SELECT * FROM Customers
WHERE Country='Germany' AND (City='Berlin' OR City='München');

以下SQL语句选择来自"Customers" 的国家不是 “Germany” 且不是 "USA"的所有字段:

SELECT * FROM Customers
WHERE NOT Country='Germany' AND NOT Country='USA';

SQL ORDER BY Keyword(按关键字排序)

SQL ORDER BY 关键字
ORDER BY 关键字用于按升序或降序对结果集进行排序。
ORDER BY 关键字默认情况下按升序排序记录。
如果需要按降序对记录进行排序,可以使用DESC关键字。

SQL ORDER BY 语法

SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;

可以在ORDER BY子句中使用多个列,但要确保用于对该列进行排序的列应该在列表中。

在这里插入图片描述
ORDER BY 实例
下面的 SQL 语句从 “Customers” 表中选取所有客户,并按照 “Country” 列排序:

SELECT * FROM Customers
ORDER BY Country;

ORDER BY DESC 实例
下面的 SQL 语句从 “Customers” 表中选取所有客户,并按照 “Country” 列降序排序:

SELECT * FROM Customers
ORDER BY Country DESC;

ORDER BY 多列 实例1
下面的 SQL 语句从 “Customers” 表中选取所有客户,并按照 “Country” 和 “CustomerName” 列排序:

SELECT * FROM Customers
ORDER BY Country, CustomerName;

ORDER BY 多列 实例2
 以下SQL语句从"Customers" 表中选择所有客户,按 “Country” 升序排列,并按 “CustomerName” 列降序排列:

SELECT * FROM Customers
ORDER BY Country ASC, CustomerName DESC;

SQL INSERT INTO 语句(在表中插入)

SQL INSERT INTO 语句

INSERT INTO 语句用于向表中插入新的数据行。

SQL INSERT INTO 语法
INSERT INTO 语句可以用两种形式编写。

第一个表单没有指定要插入数据的列的名称,只提供要插入的值,即可添加一行新的数据:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

第二种,如果要为表中的所有列添加值,则不需要在SQL查询中指定列名称。但是,请确保值的顺序与表中的列顺序相同。INSERT INTO语法如下所示:

INSERT INTO table_name
VALUES (value1, value2, value3, ...);

在这里插入图片描述
假设我们想在"Customers"表中插入一个新行。
我们可以使用以下SQL语句:

INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal','Tom B. Erichsen','Skagen 21','Stavanger','4006','Norway');

注意:CustomerID列是一个自动递增字段,在将新记录插入到表中时自动生成。

仅在指定的列中插入数据
我们还可以只在指定的列中插入数据。
以下SQL语句插入一个新行,但只在“CustomerName”、“City”和“Countryn”列中插入数据(CustomerID字段将自动更新):

INSERT INTO Customers (CustomerName, City, Country)
VALUES ('Cardinal', 'Stavanger', 'Norway');


SQL NULL Values(空值)

什么是SQL NULL值?
SQL 中,NULL 用于表示缺失的值。数据表中的 NULL 值表示该值所处的字段为空。

具有NULL值的字段是没有值的字段。

如果表中的字段是可选的,则可以插入新记录或更新记录而不向该字段添加值。然后,该字段将被保存为NULL值。

值为 NULL 的字段没有值。尤其要明白的是,NULL 值与 0 或者包含空白(spaces)的字段是不同的。

注意:理解NULL值与零值或包含空格的字段不同是非常重要的。具有NULL值的字段是在记录创建期间留空的字段!

如何测试NULL值?
使用比较运算符(例如=,<或<>)来测试NULL值是不可行的。

我们将不得不使用IS NULL和IS NOT NULL运算符。

IS NULL语法

SELECT column_names
FROM table_name
WHERE column_name IS NULL;

IS NOT NULL语法

SELECT column_names
FROM table_name
WHERE column_name IS NOT NULL;

在这里插入图片描述
以下SQL语句使用IS NULL运算符来列出所有没有地址的人员:

SELECT LastName, FirstName, Address FROM Persons
WHERE Address IS NULL;

在这里插入图片描述

IS NOT NULL运算符
以下SQL语句使用IS NOT NULL运算符来列出所有具有地址的人员:

SELECT LastName, FirstName, Address FROM Persons
WHERE Address IS NOT NULL;

创建表的时候,NULL 的基本语法如下:

 CREATE TABLE CUSTOMERS(
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25) ,
   SALARY   DECIMAL (18, 2),       
   PRIMARY KEY (ID)
);

这里,NOT NULL表示对于给定列,必须按照其数据类型明确赋值。有两列并没有使用 NOT NULL 来限定,也就是说这些列可以为 NULL。
值为 NULL 的字段是在记录创建的过程中留空的字段。

NULL 值会给选取数据带来麻烦。不过,因为 NULL 和其他任何值作比较,其结果总是未知的,所以含有 NULL 的记录不会包含在最终结果里面。

必须使用 IS NULL 或者 IS NOT NULL 来检测某个字段是否为 NULL。

SQL UPDATE 语句(更新表中的记录)

SQL UPDATE 语句

  • UPDATE 语句用于更新表中已存在的记录。
  • 还可以使用AND或OR运算符组合多个条件。

SQL UPDATE 语法
 具有WHERE子句的UPDATE查询的基本语法如下所示:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

注意
更新表中的记录时要小心!
要注意SQL UPDATE 语句中的 WHERE 子句!
WHERE子句指定哪些记录需要更新。如果省略WHERE子句,所有记录都将更新!

SQL Delete 语句(删除表中的记录)

SQL DELETE 语句
 DELETE语句用于删除表中现有记录。

SQL DELETE 语法

DELETE FROM table_name
WHERE condition;

注意
删除表格中的记录时要小心!
注意SQL DELETE 语句中的 WHERE 子句!
WHERE子句指定需要删除哪些记录。如果省略了WHERE子句,表中所有记录都将被删除!

删除所有数据
可以删除表中的所有行,而不需要删除该表。这意味着表的结构、属性和索引将保持不变:

DELETE FROM table_name;

或者

DELETE * FROM table_name;

注意:在没有备份的情况下,删除记录要格外小心!因为你删除了不能重复!

SQL 运算符

SQL 运算符
运算符是保留字或主要用于SQL语句的WHERE子句中的字符,用于执行操作,例如:比较和算术运算。 这些运算符用于指定SQL语句中的条件,并用作语句中多个条件的连词。

常见运算符有以下几种:

  • 算术运算符
  • 比较运算符
  • 逻辑运算符
  • 否定条件运算符
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

SQL 表达式

SQL 表达式
表达式是计算值的一个或多个值、运算符和SQL函数的组合。这些SQL表达式类似于公式,它们是用查询语言编写的。

还可以使用它们查询数据库中的特定数据集。

句法
 考虑SELECT语句的基本语法,如下所示:

SELECT column1, column2, columnN 
FROM table_name 
WHERE [CONDITION|EXPRESSION];

有不同类型的sql表达式,如下所示:

  • 布尔型
  • 数值型
  • 日期
    布尔表达式
     SQL布尔表达式基于匹配单个值获取数据。
    在这里插入图片描述

数值表达式
 数值表达式用于在任何查询中执行任何数学运算。

句法:

SELECT numerical_expression as  OPERATION_NAME
[FROM table_name
WHERE CONDITION] ;

这里,数值表达式用于数学表达式或任何公式。下面是一个简单的示例,展示了SQLNDigitic表达式的用法:
在这里插入图片描述
有几个内置函数,如avg()、sum()、count()等,用于对表或特定表列执行所谓的聚合数据计算。
在这里插入图片描述
日期表达式
 日期表达式返回当前系统日期和时间值:
 在这里插入图片描述
 另一个日期表达式如下所示:
 在这里插入图片描述

SQL 选择数据库 USE语句

SQL 选择数据库 USE语句
 当SQL Schema中有多个数据库时,在开始操作之前,需要选择一个执行所有操作的数据库。

SQL USE语句用于选择SQL架构中的任何现有数据库。

句法
 USE语句的基本语法如下所示 :

USE DatabaseName;

数据库名称在RDBMS中必须是唯一的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章