一、数据库
数据的仓库
电脑储存数据的介质有硬盘和内存
内存:程序在运行的过程中产生的数据储存在内存中
硬盘:数据会持久化储存在硬盘上的文件系统中
在没有数据库的时候,数据可以储存在普通的文件中,例如提txt、excel使用普通的文件储存数据,存储数据量比较小,不方便增删改查等操作,所以数据应运而生。
二、Oracle数据库
数据库分为关系型数据库和非关系型数据库
关系型数据库:Oracle(甲骨文)、SqlServer(微软)、MySQL(被甲骨文收购)
菲关系型数据库:redis
DBA(角色):database Adminstrator
三、SQL
SQL —> structured query language (结构化查询语言)
SQL也是一门编程语言,站门用于对数据库进行操作的
对于开发人员来说,学习数据库就是学习SQL语句
表的组成:表、字段、行、列
编号 | 姓名 | 年龄 | 表的字段 |
---|---|---|---|
1 | May | 23 | 一行数据 |
hr用户下自带了一张员工表 (一定是在hr用户下)
表名:employees
employees表内容如下:
四、SQL语句
简单查询
1.查询所有列
select * from employees
----练习阶段可以写成*,实际开发时,不推荐使用,因为在底层 * 会转化成表中的列名,效率比较低
2.查询部分列
语法: select 列名1,列名2 from 表名
例:
select first_name from employees
3.进行运算操作
----进行 +、 - 、 * 、/ (不能进行%取余操作)
例:对所有员工的工资增加1000
select salary + 1000 from emplyees
4.起别名
----可以给查询结果的列起别名,as关键字可以省略
----给表起别名,写代码会有联想提示,在后面子查询中使用别名有利于分清表的信息
--查询结果别名的使用
select employee_id as 编号 from employees
select employee_id 编号 from employees
--给表起别名的使用
select t1.employee_id from employees t1
5.字符串拼接
----两个字符串之间用||连接
例:将first_name、last_name 连接在一起
select first_name || '' ||last_name from employees
6.去重操作
----关键词:distinct
select distinct salary from employees
条件查询
1.等值/不等值 查询
----关键词:where
注意:语法中不区分大小写,但是字符串内容区分大小写
例:查询first_name 为/不为 Steven的员工
--查询first_name为Steven的员工
select * from employees where first_name = 'Steven'
--查询first_name不为Steven的员工
select * from employees where first_name != 'Steven'
2.多条件查询 and(与) or(或)
例:查询first_name为Steven并且工资大于10000的员工
select * from employees where first_name = 'Steven' and salary >= 10000
3.区间查询(between…and…)
例:查询工资在10000 - 15000 之间的所有员工
select * from employees where salary between 10000 and 15000
4.空值查询 is null (查询为null) / is not null(查询值不为null)
例:查询有没有提成的员工
-- 需求:查询没有提成的员工
select * from employees where commission_pct is null
-- 需求:查询有提成的员工
select * from employees where commission_pct is not null
5.枚举查询
----列名 in(值1,值2,值3)
例:查询员工的部门编号为60 或者 70 的员工信息
--in( , )
select * from employees where department_id in (60,70)
-- 等同于between
select * from employees where department_id = 60 or department_id = 70
6.模糊查询
两种通配符 ‘ _ ’ ’ % ’
% 可匹配多个字符,_ 匹配任意一个字符
例:查询名字中含有 v 的
--查询v开头的
select * from employees where first_name like 'v%'
--查询v结尾的
select * from employees where first_name like '%v'
--查询中间有v的
select * from employees where first_name like '%v%'
--查询v开头有四个字母组成的名字
select * from employees where first_name like 'v___'
7.case then
语法:case when 条件1 then ‘显示数据’ (类似于java中的if 、 else if 、else) when 条件2 then ‘显示数据’ else ‘显示数据’ end as 别名
例:如果工资大于10000为A, 工资大于等于6000为B,否则为C
select employee_id,first_name,salary,
case when salary >= 10000 then 'A'
when salary >= 6000 then 'B'
else 'C'
end as 级别
from employees