> 技术文档 > SQL初学者入门指南:轻松掌握数据库基础

SQL初学者入门指南:轻松掌握数据库基础


1.数据库 database

        数据库就是用来批量存储和管理数据的软件,数据库产品众多,包括但不限于:

MySQL、Oracle、SQLServer、SQLite

        博主主要学习的是SQL,相对于上述软件来说SQL对于初学者还是很友好很适用;


简介:

        SQL(色扣)是IBM公司推出的一种数据库语言,数据库的学习主要是学习SQL语句。

SQLite的特点是轻量级,因此在本地数据存储中非常常用。

SQL: 关系型数据库的标准语言,分为三类:

  • DML 数据操作语言 (Data Manipulation Language

包括数据查询(DQL)、增加、删除和修改。

  • DDL 数据定义语言

对数据表进行定义与设计。

  • DCL 数据控制语言

用来控制用户的操作权限,在企业中会有专业人士负责。(作为一名初学者不必掌握)


2.环境配置                 (环境下载在文章末尾)

本次学习使用的环境为SQLiteSpy, 免安装,直接双击可以使用,内部集成了SQLite。

SQLite以文件的方式存储数据,数据库文件格式为.db或.db3

从现在开始,需要在windows下打开文件扩展名功能:

学习数据在,需要在SQLiteSpy程序中按照下图所示打开scott.db文件

可以使用excel对比数据库进行说明概念:

  1. SQLiteSpy对应的是excel软件

2 数据库文件对应的是excel表格文件

  1. 数据库tables 对应的是excel的工作表sheet

3.学习数据

学习数据包括四张表,这四张表来自于美国80年代为数据库学习者设计的内容。

在SQLiteSpy中观察一张表的内容可以直接双击表名。

3.1 emp表(雇员表 employee)

【注意】需要记住上表中的以下内容:

  • 表名——英汉互译
  • 字段(列名)——英汉互译
  • 岗位job的值——英译汉

3.2 dept表(部门表 department)

【注意】需要记住上表中的以下内容:

  • 表名——英汉互译
  • 字段(列名)——英汉互译

3.3 salgrade表(工资等级表salary)

【注意】需要记住上表中的以下内容:

  • 表名——英汉互译
  • 字段(列名)——英汉互译

3.4 bonus表(奖金表)

这是一张空表

4.简单查询

简单查询的结果中包含所有记录(行), 例如在emp表中,一共有14条记录。

简单查询唯一能做的就是控制查询结果中显示的字段(列), 语法格式如下:

为了更好地编写博主给大家提供了一个免费开源的文本编译器:notepad++,可调节格式大小和语句高亮提示,更有利于初学者的学习。

【例子】查询所有雇员的编号(empno)、姓名(ename)、职位(job)、基本工资(sal)。

可以直接在Notepad++中写SQL语句,可以给出语法高亮和提示的功能。

写完了之后赋值粘贴到SQLiteSpy中,点击快捷键F9或者鼠标点击Execute然后选第一个Execute SQL执行

【例子】查询所有雇员的职位有哪些。

上面的结果中包含重复数据,使用DISTINCT关键字可以消除重复项

注意:如果SELECT的是多列,DISTINCT消除重复只有所有列数据都相同的时候才可以消除否则无法消除。

例如:

5.限定查询

WHERE 语句是SQL中最常用的子句之一,用于从数据库表中筛选符合条件的记录。以下是WHERE语句的全面解析:

1. 基本语法

复制 sql

SELECT column1, column2, ...FROM table_nameWHERE condition;

2. 常用比较运算符

运算符 说明 示例 = 等于 WHERE age = 25 或 != 不等于 WHERE status \'active\' > 大于 WHERE salary > 5000 < 小于 WHERE score < 60 >= 大于等于 WHERE quantity >= 100 <= 小于等于 WHERE price <= 99.99 BETWEEN 在范围内 WHERE age BETWEEN 18 AND 30 LIKE 模式匹配 WHERE name LIKE \'张%\' IN 指定多个可能值 WHERE id IN (1, 3, 5) IS NULL 为空值 WHERE email IS NULL

3. 逻辑运算符

-- AND: 同时满足多个条件WHERE age > 18 AND gender = \'F\'-- OR: 满足任一条件WHERE status = \'active\' OR status = \'pending\'-- NOT: 否定条件WHERE NOT country = \'USA\'

4. 高级用法

通配符查询 (LIKE)

-- % 代表任意多个字符WHERE name LIKE \'张%\' -- 以\"张\"开头WHERE email LIKE \'%@gmail.com\' -- 以@gmail.com结尾-- _ 代表单个字符WHERE phone LIKE \'138____1234\' -- 138开头,1234结尾的11位号码

日期查询

-- 日期格式取决于数据库系统WHERE create_date > \'2023-01-01\' -- MySQL/SQL ServerWHERE create_date > TO_DATE(\'2023-01-01\', \'YYYY-MM-DD\') -- Oracle

子查询

WHERE department_id IN ( SELECT department_id FROM departments WHERE location = \'北京\')

6.关系运算

关系运算是最简单的运算符号:

> = <= != ==

【例子】查询工资高于3000的雇员信息(没说查什么信息,就是全查,全查可以用*)

注意:数据库中==可以替换成=,数据库中没有赋值这个概念; 单引号括起来表示字符串也就是文本。

5.2 取值范围运算

取值范围运算使用BETWEEN...AND...

可以筛选两个数字之间的范围区间,这个区间是一个闭区间,包含两端。

【例子】查询所有在1981年雇佣的雇员信息。

1981年1月1日~1981年12月31日

5.3 基数范围运算

主要通过IN实现,IN后面的数据不能是NULL。

【例子】查询出雇员编号为7369/7566/7839/8899的信息。

5.4 模糊查询

模糊查询使用LIKE关键字配合两个符号来进行标记:

  • _

匹配任意一个字符

  • %

匹配任意多个字符(0,1,2...n个)字符

【例子】查询出所有姓名以A开头的雇员信息。

5.5 空判断

在SQLiteSpy中,emp表的comm列,存在一些红色切无数据的情况。

  • IS NULL

判断是否为空

  • IS NOT NULL、NOT IS NULL

判断是否不为空

这表示数据内容为空,也即是NULL。

5.6 逻辑运算

逻辑运算与C语言相同,包括:

与操作: AND

或操作: OR

非操作(取反): NOT

【例子】查询出公司基本工资高于1300的销售信息。

  • 工资高于1300
  • 销售

链接: https://pan.baidu.com/s/1yPbtEDI6JBg7qere68CqiA?pwd=9xve 提取码: 9xve