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语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的语句。如下在MySQL 数据库中编写SQL语句:
SELECT userName FROM User;
SELECT userAge FROM User;
查询结果如下:
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;
查询结果如下:
从一个表中查询多个列的数据 ,语法如下:
SELECT 列名称1,列名称2 FROM 表名称
2.2、SELECT * 语句
SELECT * 语法:
其中星号(*)表示选取所有列的快捷方式 。
SELECT * FROM 表名称
上述SQL语句表示获取表中所有列的数据
案例如下:
从用户表中获取所有列的所有数据
SELECT * FROM User
查询到的结果如下图所示:
3、SELECT DISTINCT (去重)语句
3.1、定义
在表中,可能会包含重复值,我们有时候需要去重,这时候就可以用到DISTINCT关键字
3.2、语法:
SELECT DISTINCT 列名称 FROM 表名称
3.3、示例:
获取Person表中去重以后的数据,示例如下:
Person表中存储的数据:
查询的SQL语句:
SELECT DISTINCT name FROM Person
最终返回的结果数据
4、SQL 中的WHERE (条件判断)子句
4.1、定义
WHERE 子句用于规定选择的标准。如果需要有条件的选择数据,那么可以将WHERE 子句添加到SELECT 语句中。
4.2、语法:
SELECT 列名称 FROM 表名称 WHERE 列名称 运算符 值
下面的运算符可以在WHERE 子句中使用:
操作符 | 描述 |
= | 等于 |
<> | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
注意:在某些版本的SQL中,不等于操作符可以写成 !=
4.3、示例:
User表中的原始数据
查询用户表中的所有列所有数据,如果部门id = '1'(如果是运维部),那么获取
也可以理解为是获取运维部的所有人员数据,语句如下:
SELECT * FROM User WHERE departmentId='1'
最终查询到的数据如下:
注意:在写SQL语句时,使用String类型的数据时,需要用单引号进行包裹(大部分数据库系统也支持双引号),如果是数值,请不要使用引号。
5、SQL 中的AND 和OR 运算符
5.1、定义:
AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤。
AND和 OR 运算符可以在 WHERE 语句中把两个或多个条件结合起来,如果第一个条件和第二个条件成立,则AND 运算符显示一条数据,如果第一个条件和第二个条件中只要有一个成立,则OR 运算符显示一条记录 。
其实AND 就类似于 并且(&&)运算符,而 OR 就类似于或者(||) 运算符。
5.2、AND 运算符示例:
查询用户表,如果当前用户是超级管理员,并且是运维部的,那么获取出来
User表的所有数据:
查询语句:
SELECT * FROM User WHERE isSuperAdministrator='1' AND departmentName='运维部'
查询到的结果数据:
5.3、OR 运算符示例:
查询用户表,如果部门id等于2,或者部门名称为工程部,那么获取出来
User表:
SQL语句:
SELECT * FROM User WHERE departmentId='2' OR departmentName='工程部'
查询的结果数据:
5.4、AND和OR 运算符结合使用示例:
我们可以将AND和OR运算符结合起来一起使用,使用圆括号来组成复杂的表达式
如果当前的用户的部门id等于2,或者是工程部,并且是超级管理员,那么查询出来
User表数据:
SQL查询语句:
SELECT * FROM User WHERE (departmentId='2' OR departmentName='工程部') AND isSuperAdministrator='1'
查询到的结果数据:
6、SQL 中的ORDER BY(排序) 子句
6.1、定义:
ORDER BY 语句用于对结果集进行排序
6.2、特点:
- ORDER BY 语句用于根据指定的列对结果集进行排序。
- ORDER BY 语句默认按照升序对记录进行排序,如果使用降序排列,那么需要DESC 关键字
6.3、示例1:
以部门id的升序顺序显示用户表数据
User表数据:
SQL语句:
SELECT * FROM User ORDER BY departmentId
结果数据:
6.4、示例2:
以部门id升序顺序排序显示,并且以是否是超级管理员升序顺序排序显示
SQL 语句
SELECT * FROM User ORDER BY departmentId,isSuperAdministrator
查询到的结果数据:
6.5、示例3:
以逆序顺序对部门id进行排序
SQL 语句:
SELECT * FROM User ORDER BY departmentId DESC
结果数据:
6.6、示例4:
对公司表中的公司名称进行逆序排列,并且将公司编号为null的数据排列在最后
Company 表数据:
SQL 语句
SELECT * FORM Company ORDER BY companyName DESC, companyNumber ASC
注意:ASC 是一个SQL语句,表示升序,当排序列含空值时,排序列含空值的原组最后显示。
查询到的数据如下:
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语句插入一行新数据
INSERT INTO Company VALUES(6,'HUAWEI',1010)
执行结果:
注意:执行完插入的SQL语句以后,需要关闭当前Company表视图,然后刷新当前的Company表,重新打开该表,数据才会刷新。
7.3、在指定的列中插入数据:
Company表原始数据:
SQL语句:
INSERT INTO Company (companyName) VALUES ('MI')
执行结果:
8、SQL 中的UPDATE(修改) 语句
8.1、定义
UPDATE 语句用于修改表中的数据
8.2、语法
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
8.3、更新某一行中的某一列数据示例
将公司名称为MI的公司编号修改为1032
Company 公司表原始数据如下:
SQL 语句
UPDATE Company SET companyNumber = 1032 WHERE companyName = 'MI'
修改结果如下:
8.4、更新某一行中的若干列数据示例
实现将MI公司的编号从1032改为1038,并且添加公司地址数据
Company公司表原始数据如下:
SQL 语句如下:
UPDATE Company SET companyNumber = 1038 , companyAddress = '湖北宜昌' WHERE companyName = 'MI'
执行结果如下:
9、SQL 中的DELETE(删除) 语句
9.1、定义
DELETE 语句用于删除表中的行
9.2、语法
DELETE FROM 表名称 WHERE 列名称 = 值
9.3、删除某行示例
在公司表中,如果公司名称是MI,那么删除这行数据
Company公司表原始数据如下:
SQL语句:
DELETE Company FROM WHERE companyName = 'MI'
结果数据:
9.4、删除所有行示例
删除所有行的数据,但是不删除表,并且保留表结构、属性和索引都是完整。
Company公司表中的原始数据
SQL语句
DELETE FROM Company
结果: