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对比数据库进行说明概念:
- SQLiteSpy对应的是excel软件
2 数据库文件对应的是excel表格文件
- 数据库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_name
WHERE 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 Server
WHERE 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