联系客服
客服二维码

联系客服获取更多资料

微信号:LingLab1

客服电话:010-82185409

意见反馈
关注我们
关注公众号

关注公众号

linglab语言实验室

回到顶部
零基础可以入门的数据库SQL讲义,进来学习

561 阅读 2021-07-05 10:02:13 上传

以下文章来源于 语料数据库

 

在这个大数据的时代, 相信“数据库”再也不是陌生的词汇,它已经广泛出现在我们生活的方方面面。在学校图书馆借阅书籍,在自习室预定座位,背后都有数据库的支持。

 

SQL 是一种最常见的数据库语言, 能够有效提升数据管理和问询的效率。废话不多说,今天,就让我们从零开始,了解和应用 SQL, 并为以后对数据库管理和开发的学习打下基础吧。

 

 

为了使用 SQL, 我们需要某种工具来编写语句,这里我用的是SQLite DB Browser,界面如下图。

 

 

1.

什么是 SQL?

什么是 SQL

SQL 是“结构化查询语言(Structured Query Language)”的缩写,是一个关系数据库语言。SQL 语句有几个构成要素。

 

首先是语句

在 SQL 中,通过输入语句可以在数据库中获取更改信息,其中空格空行不会影响 SQL 语句的意义,因此在使用者通常会添加一些空格或空行进行分区,来使代码更加清晰易懂。

 

子句是 SQL 语句的基本组成部分, 其中关键字告诉数据库要进行什么操作,字段名告诉数据库在哪里查找,以及查找什么,谓词用来明确进行操作的具体信息,包含值或条件的谓词,通常叫做表达式(比如“ 成绩 = ‘100’ ”)。

 

一般情况下, SQL 语句是不区分大小写的。操作时为了清楚辨关键字和字段,会将关键词字母全大写(比如“SELECT”、“FROM”)。一个语句的结尾会放一个分号,来表示一个语句的结束。

 

2.

如何从数据库中获取数据?

 

1)SELECT 语句

1)SELECT 语句

查询数据库使用的 SQL 语句是 SELECT 语句。

 

语法:SELECT 列名称 FROM 表名称

列名称是指你想要获取哪一列的数据,表名称是指希望从哪个表中获取数据。(e.g. SELECT 性别 FROM 表一)

 

如想获取两个字段的信息, 比如“性别”和“年龄”, 我们需要在两个字段中间, 添加英文的逗号,来请求多个字段。(e.g. SELECT 性别 FROM 表一)

 

如想获取所有的字段信息, 可以使用通配符,也就是, 来表示表中所有的字段。(e.g. SELECT * FROM 表一)

 

SELECT 是一个友好的查询数据的方式,因为它不会改变数据库中任何的信息,在使用时不需有任何担心和顾虑

2)WHERE 语句

2)WHERE 语句

SELECT 语句能够获取表中的某一列或者多个列中的所有信息,然而通常我们并不需要获取整列的信息,而是希望只筛选出有用的信息。这时,WHERE 子句就可以来设置查询条件

 

比如,我们想查询: 表一中满足性别是“女”的记录信息。输入"SELECT * FROM 人员 WHERE 性别 ='女'”。注意使用英文单引号。这样就筛选出了 “性别”这一列的值为'女'的数据。

 

需要注意的是, 如果列名称中包含了特殊字符, 需要添加双引号。(比如, 某一列名为: 乙肝Y/N, 我们想筛选出乙肝患者, 则需要这样输入子句: WHERE “乙肝Y/N” = 'Y')。

 

另外需要注意的是, WHERE 这类子句需要按照顺序工作,因此如果把 WHERE 子句, 放在 FROM 语句前面,将有错误提示。

3)为语句添加多个条件

3)为语句添加多个条件

在一个以上的条件下进行数据筛选时,通常使用AND 或者 OR运算符。这些运算符可以在WHERE 子句中,把多个条件结合起来。

 

比如,我们想在表一中查找: 性别为“女”的每个人的姓名 ,以及谁患乙肝。我们可以输入:

SELECT 姓名 

FROM 表一

WHERE 性别=‘女’ AND “乙肝(Y/N)” = ‘Y‘ ;

 

这里的“=”也可以用“IS”来代替,结果是一样的。同样,“!=”也可以用“IS NOT“来代替。

 

需要注意的是,有 AND 条件时, 会优先匹配“AND”左右两边的条件, 再匹配“OR”的条件。因此,我们需要视情况添加圆括号来限定条件执行的顺序。

 

比如,我们希望筛选出来自苏和沪的乙肝患者姓名,输入: 

SELECT 姓名

FROM 表一

WHERE 户籍 = ’苏‘ OR 户籍 = ’沪‘ AND “乙肝(Y/N)” = ‘Y‘

 

这样,在WHERE子句中会先匹配AND左右两边的条件,而得到非期望的查询结果。因此,需要加圆括号来限定:

WHERE (户籍 = ’苏‘ OR 户籍 = ’沪‘) AND “乙肝(Y/N)” = ‘Y‘

4)LIKE 运算符

4)LIKE 运算符

LIKE 运算符通常与%(通配符)一起使用,来匹配通配符指定模式的文本值。

 

假设需要查找的文本为“k”

WHERE 列名 like ‘%k’ ——查找以“k”为结尾的任意值; 

WHERE 列名 like ‘k%’ ——查找以“k”为开头的任意值; 

WHERE 列名 like ‘%k%’ ——查找包含“k”的任意值。

 

比如,想查找表一中, 哪些人姓“刘”。那么可以输入:

SELECT姓名 

FROM 表一 

WHERE 姓名 LIKE '刘%' ;

5)LIMIT子句

5)LIMIT子句
 

通常我们会根据实际需求, 希望能够针对这个结果,限制返回的数量。LIMIT可以限制返回的行数

 

比如在上述条件下,我们只想返回前十行数据:

SELECT姓名 

FROM 表一 

WHERE 姓名 LIKE '刘%'

LIMIT 10 ;

 

如果想实现特定范围,比如以第 4 行为参考点, 统计从第 5 行开始的 5 行数据,就要用到 LIMIT OFFSET,语法:

LIMIT 数字1, OFFSET 数字2

其中,数字1 指取多少行数据, 数字2 指跳过多少行数据。

 

SQLite中,还可以省略“OFFSET”。在LIMIT后直接传入两个数字参数。第一个参数表示跳过多少行;第二个参数表示取多少行的数据。

6)ORDER BY 子句

6)ORDER BY 子句

查询语句获取到的数据,通常并不是按照想要的顺序显示的。因此需要结合 ORDER BY 语句,对结果进行排序

 

语法:  ORDER BY 列名称 

意思是按照指定的列的值进行排序。

 

默认的情况下, ORDER BY 是按照升序排列。

ORDER BY 列名称 ASC ——升序

ORDER BY 列名称 DESC ——降序

 

比如,我们想从表一中, 获取“姓名”和“户籍”的数据信息,并且希望“户籍”按照升序进行排序的,即从“NULL”然后是“A”, 一直到最后是“Z”,那么输入:

SELECT 姓名, 户籍
 

FROM 表一

ORDER BY 户籍;

 

如果希望降序,那就在后面加上DESC: 

ORDER BY 户籍 DESC

这样的结果就是,“Z”在最上面, 然后往下直到“A”,最后是“NULL”

7)其他数据信息查找

7)其他数据信息查找

一般使用 SELECT 语句, 获得的数据都比较多,因此会进一步筛选一些数据。

 

LENGTH 函数

比如,想进一步查看人员名字的长度,那么需要使用 LENGTH 函数,能够返回文本字段中值的长度。

 

SELECT 名, LENGTH(名)

FROM 表一;

 

这样,我们就可以看到,“上官婉儿”有4个字符长,“李明”是2个字符长。

 

DISTINCT 函数

再比如,表一名单中有500行记录,可能有很多重名的, 如果只想列出不同的值。那么可以使用 DISTINCT 函数, 来返回唯一不同的值。

 

SELECT DISTINCT(名)

FROM 表一;

 

这样,显示的都是不重名的名字列表,每一个名字都是唯一项。

 

COUNT 函数

如果想根据指定的条件,来计算有多少记录符合条件,那么可以使用 COUNT 函数,返回匹配指定条件的行数。

 

向 COUNT 函数传入一个列名称,其会返回这一列的总行数。其结合 WHERE 函数, 能快速得出有多少符合条件的行。

 

比如,我们希望从数据库中查询, 表一中有多少人户籍为“沪”,输入:

 

SELECT COUNT(*)
 

FROM 表一
 

WHERE 户籍 = ’沪‘;

 

因为 COUNT 函数直接给出匹配条件的行数,因此我们不再需要指定一个特定的字段,只需关心返回的数值即可。

点赞
收藏
表情
图片
附件