SQL是什么?

         SQL是用于访问和处理数据库的标准计算机语言。通过SQL语句可以查询、获取、插入、更新、删除数据库中的数据,同时也可以通过SQL语句创建数据库、创建表、创建视图,可以设置表、存储过程和视图的权限。

         SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 、MySQL以及其他数据库系统。

         不幸地是,存在着很多不同版本的 SQL 语言,但是为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。

注意

① 除了 SQL 标准之外,大部分 SQL 数据库程序都拥有它们自己的私有扩展!

② SQL 对大小写不敏感

1、SQL语法

SQL语句示例:

下面的语句表示从User表中查询userName字段的数据

SELECT userName FROM User

查询结束数据如下:

SQL新手入门_sql语句

SQL 语句后面的分号

某些数据库要求在每条SQL命令的末端使用分号,分号是在数据库系统中分隔每条SQL语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的语句。如下在MySQL 数据库中编写SQL语句:

SELECT userName FROM User;
SELECT userAge FROM User;

查询结果如下:

SQL新手入门_数据库_02

 SQL新手入门_mysql_03

SQL DML和DDL

可以把SQL分为两个部门:数据操作语言(DML)和数据定义语言(DDL)。

数据操作语言(DML):

SQL(结构化查询语言)是用于执行查询的语句。但是SQL语言也都包含了更新、插入、删除的语法,如下所示:

  • SELECT 表示从数据库中获取数据
  • UPDATE 表示更新数据库中表的数据
  • DELETE 表示从数据库中删除数据
  • INSERT INTO 表示从数据库中插入数据

数据定义语言(DDL):

SQL数据定义语言(DDL)可以创建数据库、表,修改数据库、表等等,也可以定义索引(键),规定表之间的链接,以及施加表之间的约束,如下示例:

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

2、SELECT 和 SELECT * 语句

2.1、SELECT 语句

SELECT 语句用于从表中选择数据。

SQL SELECT 语法:

从一个表中查询一列数据如下语句

SELECT 列名称 FROM 表名称

案例如下:

查询User表中查询userName 列的所有数据

SELECT userName FROM User;

 查询结果如下: 

SQL新手入门_mysql_04

从一个表中查询多个列的数据 ,语法如下:

SELECT 列名称1,列名称2 FROM 表名称

2.2、SELECT * 语句

SELECT * 语法:

其中星号(*)表示选取所有列的快捷方式 。

SELECT * FROM 表名称

上述SQL语句表示获取表中所有列的数据

案例如下:

从用户表中获取所有列的所有数据

SELECT * FROM User

查询到的结果如下图所示:

SQL新手入门_数据库_05

3、SELECT DISTINCT (去重)语句

3.1、定义

在表中,可能会包含重复值,我们有时候需要去重,这时候就可以用到DISTINCT关键字

3.2、语法:

SELECT DISTINCT 列名称 FROM 表名称

3.3、示例:

获取Person表中去重以后的数据,示例如下:

Person表中存储的数据:

SQL新手入门_mysql_06

 查询的SQL语句:

SELECT DISTINCT name FROM Person

最终返回的结果数据

SQL新手入门_sql语句_07

4、SQL 中的WHERE (条件判断)子句

4.1、定义

WHERE 子句用于规定选择的标准。如果需要有条件的选择数据,那么可以将WHERE 子句添加到SELECT 语句中。

4.2、语法:

SELECT 列名称 FROM 表名称 WHERE 列名称 运算符 值

下面的运算符可以在WHERE 子句中使用:

操作符

描述

=

等于

<>

不等于

>

大于

<

小于

>=

大于等于

<=

小于等于

BETWEEN

在某个范围内

LIKE

搜索某种模式

 注意:在某些版本的SQL中,不等于操作符可以写成  !=

4.3、示例:

User表中的原始数据

SQL新手入门_sql语句_08

查询用户表中的所有列所有数据,如果部门id = '1'(如果是运维部),那么获取

也可以理解为是获取运维部的所有人员数据,语句如下:

SELECT * FROM User WHERE departmentId='1'

最终查询到的数据如下:

SQL新手入门_数据库_09

注意:在写SQL语句时,使用String类型的数据时,需要用单引号进行包裹(大部分数据库系统也支持双引号),如果是数值,请不要使用引号。

5、SQL 中的AND 和OR 运算符

5.1、定义:

AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤。

AND和 OR 运算符可以在 WHERE 语句中把两个或多个条件结合起来,如果第一个条件和第二个条件成立,则AND 运算符显示一条数据,如果第一个条件和第二个条件中只要有一个成立,则OR 运算符显示一条记录 。

其实AND 就类似于 并且(&&)运算符,而 OR 就类似于或者(||) 运算符。

5.2、AND 运算符示例:

查询用户表,如果当前用户是超级管理员,并且是运维部的,那么获取出来

User表的所有数据:

SQL新手入门_sql语句_10       

 查询语句:

SELECT * FROM User WHERE isSuperAdministrator='1' AND departmentName='运维部'

查询到的结果数据:

SQL新手入门_mysql_11

5.3、OR 运算符示例:

查询用户表,如果部门id等于2,或者部门名称为工程部,那么获取出来

User表:

SQL新手入门_数据库_12

 SQL语句:

SELECT * FROM User WHERE departmentId='2' OR departmentName='工程部'

查询的结果数据:

SQL新手入门_sql语句_13

5.4、AND和OR 运算符结合使用示例:

我们可以将AND和OR运算符结合起来一起使用,使用圆括号来组成复杂的表达式

如果当前的用户的部门id等于2,或者是工程部,并且是超级管理员,那么查询出来

User表数据:

SQL新手入门_数据库_14

SQL查询语句:

SELECT * FROM User WHERE (departmentId='2' OR departmentName='工程部') AND isSuperAdministrator='1'

查询到的结果数据: 

SQL新手入门_数据库_15

6、SQL 中的ORDER BY(排序) 子句

6.1、定义:

ORDER BY 语句用于对结果集进行排序

6.2、特点:

  1. ORDER BY 语句用于根据指定的列对结果集进行排序。
  2. ORDER BY 语句默认按照升序对记录进行排序,如果使用降序排列,那么需要DESC 关键字

6.3、示例1:

以部门id的升序顺序显示用户表数据

User表数据: 

SQL新手入门_sql_16

SQL语句:

SELECT * FROM User ORDER BY departmentId

结果数据:

SQL新手入门_sql_17

6.4、示例2:

以部门id升序顺序排序显示,并且以是否是超级管理员升序顺序排序显示

SQL 语句

SELECT * FROM User ORDER BY departmentId,isSuperAdministrator

查询到的结果数据: 

SQL新手入门_数据_18

6.5、示例3:

以逆序顺序对部门id进行排序

SQL 语句:

SELECT * FROM User ORDER BY departmentId DESC

结果数据:

SQL新手入门_mysql_19

6.6、示例4:

对公司表中的公司名称进行逆序排列,并且将公司编号为null的数据排列在最后

Company 表数据: 

SQL新手入门_mysql_20

SQL 语句

SELECT * FORM Company ORDER BY companyName DESC, companyNumber ASC

注意:ASC 是一个SQL语句,表示升序,当排序列含空值时,排序列含空值的原组最后显示。

查询到的数据如下:

SQL新手入门_mysql_21

7、SQL 中的INSERT INTO(插入) 语句

INSERT INTO 语句用于向表格中插入新的行

7.1、语法:

INSERT INTO 表名称 VALUES (值1,值2......)

7.2、我们也可以指定所要插入数据的列:

INSERT TO 表名称 (列名称1,列名称2,......) VALUES (值1,值2,......)

7.3、插入新的行示例:

Company公司表原始数据:
SQL新手入门_mysql_22

 通过SQL语句插入一行新数据

INSERT INTO Company VALUES(6,'HUAWEI',1010)

执行结果:

SQL新手入门_数据库_23

 SQL新手入门_mysql_24

 注意:执行完插入的SQL语句以后,需要关闭当前Company表视图,然后刷新当前的Company表,重新打开该表,数据才会刷新。

7.3、在指定的列中插入数据:

 Company表原始数据:

SQL新手入门_数据_25

SQL语句:

INSERT INTO Company (companyName) VALUES ('MI')

执行结果:

SQL新手入门_sql语句_26

SQL新手入门_sql语句_27

8、SQL 中的UPDATE(修改) 语句

8.1、定义

UPDATE 语句用于修改表中的数据

8.2、语法

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

8.3、更新某一行中的某一列数据示例

将公司名称为MI的公司编号修改为1032

Company 公司表原始数据如下:

SQL新手入门_数据库_28

SQL 语句

UPDATE Company SET companyNumber = 1032 WHERE companyName = 'MI'

 修改结果如下:

SQL新手入门_数据库_29

SQL新手入门_sql_30

8.4、更新某一行中的若干列数据示例

实现将MI公司的编号从1032改为1038,并且添加公司地址数据

Company公司表原始数据如下:

SQL新手入门_数据库_31

SQL 语句如下:

UPDATE Company SET companyNumber = 1038 , companyAddress = '湖北宜昌' WHERE companyName = 'MI'

执行结果如下:

SQL新手入门_sql_32

SQL新手入门_数据库_33

 9、SQL 中的DELETE(删除) 语句

9.1、定义

DELETE 语句用于删除表中的行

9.2、语法

DELETE FROM 表名称 WHERE 列名称 = 值

9.3、删除某行示例

在公司表中,如果公司名称是MI,那么删除这行数据

Company公司表原始数据如下:

SQL新手入门_数据_34

SQL语句:

DELETE Company FROM WHERE companyName = 'MI'

结果数据:

SQL新手入门_sql语句_35

SQL新手入门_sql语句_36

9.4、删除所有行示例

删除所有行的数据,但是不删除表,并且保留表结构、属性和索引都是完整。

Company公司表中的原始数据 

SQL新手入门_sql语句_37

SQL语句

DELETE FROM Company

结果:

SQL新手入门_sql语句_38

SQL新手入门_sql语句_39