马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
在当今数字化时代,SQL 语言犹如一座桥梁,精密连接着我们与海量数据。它拥有高出 40 年的发展历程,从诞生之初到现在,已经深度融入到我们生存的方方面面。我们日常的每一笔消费记载、网站网络的每一条用户信息、社交平台上发送的每一条消息,其背后的数据存储都离不开数据库及相关产品,而 SQL 就是操控这些数据库的核心语言。在互联网行业,SQL 更是生产研发等岗位的必备技能,掌握它就等于掌握了开启高效工作之门的钥匙。接下来,就让我们深入探索 SQL 的天下。
一、SQL 概述
(一)SQL 是什么
SQL,即结构化查询语言(Structured Query Language),是专门用于访问和处理惩罚数据库的标准盘算机语言,同时也是 ANSI(美国国家标准学会)承认的标准语言。SQL 具有强盛的兼容性,能够与诸如 MS Access、DB2、Oracle、MS SQL Server、Sybase 等多种数据库程序协同运作 。然而,由于数据库市场的多元化,出现了众多不同版本的 SQL 语言。尽管版本各异,但为了依照 ANSI 标准,它们都必要以相似的方式支持 SELECT、UPDATE、DELETE、INSERT、WHERE 等关键语句,这些关键语句构成了 SQL 学习的基石。
(二)SQL 的类型
SQL 重要分为两个核心部分:数据利用语言(DML)和数据定义语言(DDL)。数据利用语言涵盖数据查询语言(DQL)和狭义的数据利用语言。DQL 负责从数据库中检索数据,而数据利用语言用于对数据进行插入、更新和删除等利用。数据定义语言则专注于数据库对象的创建、修改和删除,例如创建数据库、表、视图等 。
(三)学习 SQL 的意义
SQL 在数据库系统的利用中扮演着至关紧张的角色。借助 SQL 语句,我们不仅能够轻松地从数据库中获取数据、插入新的记载、更新现有数据以及删除无用记载,还可以创建全新的数据库、表、存储过程和视图。别的,SQL 还赋予了我们设置表、存储过程和视图权限的本领,从而确保数据的安全性和完整性。
(四)数据库的概念
简单来说,数据库就像是一个专门存放数据的容器,这就好比家中用来存放食物的冰箱。我们在日常生存中利用余额宝检察账户收益,这一过程就是从数据库中读取数据的现实应用。关系型数据库管理系统(RDBMS)是最为常见的数据库类型,像 MS SQL Server、IBM DB2、Oracle、MySQL 和 Microsoft Access 等都属于这一范畴。在 RDBMS 中,数据存储在由列和行组成的表中,这些表相互关联,构成了复杂的数据结构。
二、SQL 底子语言学习
一个数据库通常包罗一个或多个表,每个表都有一个独特的名称,用于标识其用途,表中包罗带有数据的记载,这些记载以行的情势存在。以名为 “Persons” 的表为例,它包罗三条记载,分别对应三个人,同时拥有五个列,分别记载了职员的编号、姓氏、名字、地址和所在城市。下面,我们将详细先容怎样创建这样的表以及对表中的数据进行各种利用。
(一)CREATE TABLE:创建表
CREATE TABLE 语句是在数据库中创建新表的关键工具。其语法结构如下:
- CREATE TABLE 表名称
- (
- 列名称1 数据类型,
- 列名称2 数据类型,
- 列名称3 数据类型,
- ....
- );
复制代码 数据类型在表的创建中起着决定性作用,它规定了列能够容纳的数据情势。在 SQL 中,常用的数据类型如下:
数据类型描述integer(size), int(size), smallint(size), tinyint(size)仅能容纳整数,括号内的参数用于规定命字的最大位数decimal(size, d), numeric(size, d)可以容纳带有小数的数字,“size” 参数规定了数字的最大位数,“d” 参数规定了小数点右侧的最大位数char(size)用于容纳固定长度的字符串,此中可包罗字母、数字以及特别字符,括号中的 “size” 规定了字符串的长度varchar(size)用于容纳可变长度的字符串,同样可包罗字母、数字以及特别字符,括号中的 “size” 规定了字符串的最大长度date(yyyymmdd)专门用于容纳日期数据 例如,我们要创建名为 “Persons” 的表,包罗 “Id_P”“LastName”“FirstName”“Address” 和 “City” 这 5 个列,具体的 SQL 语句如下:
- CREATE TABLE Persons
- (
- Id_P int,
- LastName varchar(255),
- FirstName varchar(255),
- Address varchar(255),
- City varchar(255)
- );
复制代码 在这个例子中,“Id_P” 列的数据类型被定义为 int,用于存储整数;其余 4 列的数据类型均为 varchar,且最大长度设定为 255 个字符,用于存储可变长度的字符串。创建完成后的空表,可以通过 INSERT INTO 语句来写入数据。
(二)INSERT:插入数据
INSERT INTO 语句重要用于向表格中插入新的行,它有两种常见的语法情势:
- INSERT INTO 表名称 VALUES (值1, 值2,....);
- INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....);
复制代码 以下是向 “Persons” 表插入记载的示例:
- INSERT INTO Persons VALUES (1, 'Gates', 'Bill', 'Xuanwumen 10', 'Beijing');
复制代码 这条语句将一条完整的记载插入到 “Persons” 表中,包括职员的各项信息。
2. 在指定的列中插入数据:
- INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees');
复制代码
此语句仅在 “LastName” 和 “Address” 这两列中插入数据,其他列的值将根据表的定义采用默认值或允许为空。
插入数据乐成后,我们可以利用 SELECT 语句来查询这些数据,以验证插入利用是否正确。
(三)SELECT:查询数据
SELECT 语句是 SQL 中用于从表中检索数据的核心工具,其查询效果会存储在一个效果表中,这个效果表也被称为效果集。SELECT 语句有两种常用的语法情势:
- SELECT * FROM 表名称;
- SELECT 列名称 FROM 表名称;
复制代码 必要注意的是,SQL 语句不区分大小写,因此 “SELECT” 和 “select” 在功能上是等效的。例如,我们要查询 “Persons” 表中的全部数据,可以利用以下语句:
这里的星号 “*” 是一个通配符,表现选取表中的全部列。如果我们只必要获取 “LastName” 和 “FirstName” 这两列的内容,可以利用如下语句:
- SELECT LastName, FirstName FROM Persons;
复制代码 通过这种方式,我们能够有针对性地从表中获取所需的数据。
(四)DISTINCT:去除重复值
当表中存在多行重复数据时,DISTINCT 关键字可以帮助我们去除重复值,只显示唯一不同的值。其语法如下:
- SELECT DISTINCT 列名称 FROM 表名称;
复制代码 例如,我们要从 “Persons” 表的 “LASTNAME” 列中选取全部的值,利用普通的 SELECT 语句:
- SELECT LASTNAME FROM Persons;
复制代码
可能会发现效果会合某些值(如 “Wilson”)被列出了多次。若要仅选取唯一不同的值,就必要利用 SELECT DISTINCT 语句:
- SELECT DISTINCT LASTNAME FROM Persons;
复制代码 实行这条语句后,效果会合将只显示一个 “Wilson”,乐成去除了重复值。
(五)WHERE:条件过滤
WHERE 子句用于在 SELECT 语句中筛选出符合特定条件的数据,其语法如下:
- SELECT 列名称 FROM 表名称 WHERE 列 运算符 值;
复制代码 在 WHERE 子句中,可以利用以下运算符来构建筛选条件:
利用符描述=等于<> 或!=不等于>大于<小于>=大于等于<=小于等于BETWEEN在某个范围内LIKE搜索某种模式 必要注意的是,在某些 SQL 版本中,“<>” 和 “!=” 都表现不等于。例如,如果我们只想选取居住在城市 “Beijing” 中的职员信息,SQL 语句如下:
- SELECT * FROM Persons WHERE City='Beijing';
复制代码 这里必要注意,SQL 通常利用单引号来环绕文本值(大多数数据库系统也继承双引号),但如果是数值,则不必要利用引号。
(六)AND & OR:运算符
AND 和 OR 运算符用于在 WHERE 子句中组合多个条件,从而实现更复杂的数据筛选。具体规则如下:
- AND 运算符:只有当第一个条件和第二个条件同时建立时,AND 运算符才会显示一条记载。
- OR 运算符:只要第一个条件和第二个条件中有一个建立,OR 运算符就会显示一条记载。
它们的语法示例如下:
- -- AND运算符示例
- SELECT * FROM 表名称 WHERE 列 运算符 值 AND 列 运算符 值;
- -- OR运算符示例
- SELECT * FROM 表名称 WHERE 列 运算符 值 OR 列 运算符 值;
复制代码 为了演示这两个运算符的利用,我们先向 “Persons” 表中添加几条记载:
- INSERT INTO Persons VALUES (2, 'Adams', 'John', 'Oxford Street', 'London');
- INSERT INTO Persons VALUES (3, 'Bush', 'George', 'Fifth Avenue', 'New York');
- INSERT INTO Persons VALUES (4, 'Carter', 'Thomas', 'Changan Street', 'Beijing');
- INSERT INTO Persons VALUES (5, 'Carter', 'William', 'Xuanwumen 10', 'Beijing');
- SELECT * FROM Persons;
复制代码 然后,利用 AND 运算符来查找全部姓为 “Carter” 并且名为 “Thomas” 的人:
- SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter';
复制代码 利用 OR 运算符来查找全部姓为 “Carter” 或者名为 “Thomas” 的人:
- SELECT * FROM Persons WHERE firstname='Thomas' OR lastname='Carter';
复制代码 我们还可以将 AND 和 OR 运算符结合利用(通过圆括号来构建复杂的表达式),例如:
- SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William') AND LastName='Carter';
复制代码 (七)ORDER BY:排序
ORDER BY 语句用于根据指定的列对查询效果集进行排序。默认情况下,它按照升序对记载进行排序,如果必要按照降序排序,则可以利用 DESC 关键字。其语法如下:
- SELECT * FROM 表名称 ORDER BY 列1,列2 DESC;
复制代码 此中,默认排序方式为 ASC(升序),DESC 表现降序。以下是一些示例:
- SELECT * FROM Persons ORDER BY LASTNAME;
复制代码 在这种情况下,空值(NULL)默认会排序在有值行之后。
2. 按照数字顺序显示 “ID_P”,并以字母顺序显示 “LASTNAME” 名称:
- SELECT * FROM Persons ORDER BY ID_P,LASTNAME;
复制代码- SELECT * FROM Persons ORDER BY ID_P DESC;
复制代码 必要注意的是,当第一列中有雷同的值时,第二列会按照升序分列。即使第一列中存在空值,这种排序规则依然实用。
(八)UPDATE:更新数据
UPDATE 语句用于修改表中的数据,其语法如下:
- UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值;
复制代码 例如,假设 “Persons” 表中有许多字段为 null 的数据,我们要为 “LASTNAME” 是 “Wilson” 的人添加 “FIRSTNAME”,可以利用以下语句:
- UPDATE Persons SET FirstName = 'Fred' WHERE LastName = 'Wilson';
复制代码 如果要更新某一行中的多少列,比如将 “LASTNAME” 是 “Wilson” 的人的 “ID_P” 更新为 6,“city” 更新为 “London”,语句如下:
- UPDATE Persons SET ID_P = 6,city= 'London' WHERE LastName = 'Wilson';
复制代码 (九)DELETE:删除数据
DELETE 语句用于删除表中的行,其语法如下:
- DELETE FROM 表名称 WHERE 列名称 = 值;
复制代码 例如,要删除 “Persons” 表中 “LastName” 为 “Fred Wilson” 的行,可以利用以下语句:
- DELETE FROM Persons WHERE LastName = 'Wilson';
复制代码 如果要在不删除表结构的情况下删除全部行,即保留表的结构、属性和索引,可以利用以下语句:
(十)TRUNCATE TABLE:清除表数据
如果我们仅仅希望删除表内的数据,而保留表本身的结构,可以利用 TRUNCATE TABLE 命令。其语法如下:
例如,要删除名为 “Persons” 的表中的全部数据,语句如下:
(十一)DROP TABLE:删除表
DROP TABLE 语句用于彻底删除表,包括表的结构、属性以及索引。其语法如下:
例如,要删除名为 “Persons” 的表,语句如下:
实行第一次删除利用时,表 “persons” 会被乐成删除。再次实行删除利用时,会报错提示找不到该表,这表明表已被彻底删除。
三、SQL 高级语言学习
(一)LIKE:查找雷同值
LIKE 利用符在 WHERE 子句中用于搜索列中的指定模式,其语法如下:
- SELECT 列名/(*) FROM 表名称 WHERE 列名称 LIKE 值;
复制代码 此中,“%” 是通配符,用于匹配恣意数量的字符。例如,假设我们向 “Persons” 表插入以下数据:
- INSERT INTO Persons VALUES (1, 'Gates', 'Bill', 'Xuanwumen 10', 'Beijing');
- INSERT INTO Persons VALUES (2, 'Adams', 'John', 'Oxford Street', 'London'); INSERT INTO Persons VALUES (3, 'Bush', 'George', 'Fifth Avenue', 'New York'); INSERT INTO Persons VALUES (4, 'Carter', 'Thomas', 'Changan Street', 'Beijing'); INSERT INTO Persons VALUES (5, 'Carter', 'William', 'Xuanwumen 10', 'Beijing'); select * from persons;
复制代码- SELECT * FROM Persons WHERE City LIKE 'N%';
复制代码- SELECT * FROM Persons WHERE City LIKE '%g';
复制代码- SELECT * FROM Persons WHERE City LIKE '%on%';
复制代码
- 选取居住在不包罗 “lon” 的城市里的人(利用 NOT 关键字):
- SELECT * FROM Persons WHERE City NOT LIKE '%on%';
复制代码 (二)IN:锁定多个值
IN 利用符允许在 WHERE 子句中指定多个值,其语法如下:
- SELECT 列名/(*) FROM 表名称 WHERE 列名称 IN (值1,值2,值3);
复制代码 例如,要从 “Persons” 表中选取姓氏为 “Adams” 和 “Carter” 的人,可以利用以下语句:
- SELECT * FROM Persons WHERE LastName IN ('Adams','Carter');
复制代码 (三)BETWEEN:选取区间数据
BETWEEN … AND 利用符用于选取介于两个值之间的数据范围,这些值可以是数值、文本或者日期。其语法如下:
- SELECT 列名/(*) FROM 表名称 WHERE 列名称 BETWEEN 值1 AND 值2;
复制代码 例如:
- 查询以字母顺序显示介于 “Adams”(包括)和 “Carter”(不包括)之间的人:
- SELECT * FROM Persons WHERE LastName BETWEEN 'Adams' AND 'Carter';
复制代码- SELECT * FROM Persons WHERE LastName NOT BETWEEN 'Adams' AND 'Carter';
复制代码 必要注意的是,不同的数据库对 BETWEEN…AND 利用符的处理惩罚方式可能存在差异。有些数据库列出的范围不包括边界值,有些包括边界值,还有些只包括部分边界值。因此,在现实利用时,必要根据所利用的数据库来确定其具体行为。
(四)AS:别名
在 SQL 中,AS 关键字用于为列名称和表名称指定别名,这有助于使查询程序更加易读和易写。其语法分为表别名和列别名两种情势:
- -- 表别名语法
- SELECT 列名称/(*) FROM 表名称 AS 别名;
- -- 列别名语法
- SELECT 列名称 as 别名 FROM 表名称;
复制代码 例如:
- SELECT p.LastName, p.FirstName
- FROM Persons p
- WHERE p.LastName='Adams' AND p.FirstName='John';
复制代码 这里将 “Persons” 表别名为 “p”,在查询中可以通过 “p” 来引用该表的列。
2. 利用列名别名:
- SELECT LastName "Family", FirstName "Name" FROM Persons;
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |