1.3 SQL语句学习
1.3.1SQL基本概念
1.SQL由来
1)早期数据库有70多种,但数据库中的管理方式各不相同。每种数据库都有自己独特的管理方式,这就导致切换数据库使用会产生极大的学习成本,在早期,很多程序开发时,是以多数据场景设计的,程序设计难度也比较高,
2)推出SQL(结构化查询语句)是上世纪70年代IBM推出一种数据库操作标准
IBM并没有去推行SQL的使用,在早期,只有很少的数据库厂商支持SQL标准,他们都有自己的数据库操作标准
3)Oracle很早就开始使用IBM研发的SQL标准。
2.数据库分类
1)关系型数据库
到目前为主,大家知道是数据库是(Oracle,MySQL , SQLServer,pgsql)都是支持SQL标准的。-----》都是rdbms(关系型数据库管理系统)----》关系型数据库
而SQL 是关系型数据库的操作标准
传统数据库Oracle,MySQL , SQLServer
2)非关系型数据库
redis(内存型数据库)和mogodb(文档型数据库),这些非关系数据库的使用场景是区分于我们常说的传统数据库的(Oracle/MySQL/SQL server),这些非关系型数据库并不遵循SQL标准。又称为nosql数据库,后来更名为newsql数据库
3)从现在到以后,关系数据库一定不会被取代
1.3.2.学习SQL的方向
- SQL通用语法以及Oracle的语法为重点
11)我们将要学习的SQL标准是适用于关系型数据库(传统数据库)的,不同的传统数据库对应的SQL语法也会有不同。
2).我们以SQL通用语法以及Oracle的语法为学习重点。
2.在SQL标准中,将SQL操作分为三类
DML------(Data Manipulation Language)数据操作语言
DDL--------(Data Definition Language)数据定义语言
DDL---------(Data Control Language)数据控制语言
1)DML数据操作语言
A.含义
指代我们对数据库中数据的具体操作(增删改查)
-----》(CRUD)C-create增,R-Read 查,U-Update 改,D-Delete 删
B.DML的语法
Insert 插入数据
delete删除数据
update更新数据
select 查询数据
2).DDL数据定义语言
A.含义
指代我们对数据库中表,表空间,索引等对象的操作,不会导致数据改变
B.DDL的语法
create 创建
alter修改
drop 删除
C.例如
a)create spfile from pfile----》编辑修改文件
b)Alter database mount -----》启动数据库到mounted阶段
c)Alter database open-----》启动数据库到opened阶段
d)Alter system set memory_target=500M scope=spfile;
3).DCL 数据控制语言
A.含义
指代我们在数据库中对用户授权的相关操作(权限相关)
B.DCL的语法
Grant
Revoke
3.总结
1)上面提到的三类SQL语句,其中DML,DDL最重要,其中以DML为关键
2) 在DML中,SELECT为重点,查询操作是我们学习SQL语句的重点,并且查询操作会直接影响数据库性能。
3)提升数据库性能最直接的办法就是编写优秀的SQL语句
4.补充知识点
1)spfile与pfile的区别
(1)pfile是文本文件,可以使用文本编辑器进行编辑,而spfile是二进制文件,不能使用任何编辑器进行修改,但是可以使用strings查看文件的内容
(2)pfile里面是静态参数,不能在线修改,而spfile里面有动态参数,可以在线修改,而不用重启oracle;
2)数据库启动分三个阶段
A状态started
----数据库如果可以读到参数文件就到started阶段
B状态mounted
-----参数文件可以读到控制文件mounted阶段
C状态open
--------控制文件可以读到数据文件并且数据具有一致性open阶段
3)startup启动过程(一步全启动)
A. startup upgrade
----》升级的方式打开数据库----》走三步
启动实例,进行挂载,打开数据库
B. startup normal
-----》正常方式打开数据库-----《走三步
启动实例,进行挂载,打开数据库
startup 等同于startup normal ----》normal可省略,默认是normal
4)单步启动—对应三个阶段
Startup nomount -----》启动数据库到started阶段-----》第一步
Alter database mount -----》启动数据库到mounted阶段—》第二步
Alter database open-----》启动数据库到opened阶段----》第三步
Startup normal等同于 startup nomount +alter database mount+alter database open
1.3.3了解示例数据库中的数据表
当前我们学习SQL适用的是Oracle当中提供的scott用户,这个用户下存放了一些表,当中存放的一些数据,我们可以通过这些数据体验SQL的用法
1.认识scott用户的数据表
1)切换到scott用户下
2)查看所有表
A.语句格式:select * from tab;
B.功能描述:查看当前用户的能够使用的数据表
C.练习:
TNAME (表名) TABTYPE(表类型) CLUSTERID
BONUS(奖金表) TABLE
DEPT(部门表) TABLE
EMP(员工表) TABLE
SALGRADE(薪资表) TABLE
要使用的数据就存放在四张数据表中,现在大家可以将这里的数据表的结构想象成excel电子表格。
Bonus----》员工奖金表
Dept-----》部门信息表
Emp------》员工信息表
Salgrade—》薪资等级表
3)查看指定表数据
A.语句格式:select * from 表名;
上述四个数据表都可以通过select语句查看内容
B.功能描述:查看指定表的数据信息
C.练习1:查看emp表的数据
当字段多时,就会出现折行现象,我们可以调整linesize控制每行显示的字符
当行记录比较多时,就会出现分页的现象,默认每页显示的内容时有限的,我们需要通过调整pagesize,控制每页的显示行数
表由字段(表头)和行记录组成,当表的内容过多时,自动换到第二页显示pagesize
练习2:查看dept表中的信息数据
练习:查看bonus和salgrade表
这四个表都可以通过以上的select语句查看内容
但是,我们需要使用四张数据表中的数据,,因此必须要记住四张表的结构
4)查看指定表的表结构
A.语句格式:desc 表名;
B.功能描述:查看指定表的表结构
C.练习1:查看emp表的数据结构
在desc的结果中,name表示字段名,null表示该字段是否可以为空,type表示字段中存放的数据类型。
Name Null? Type
EMPNO NOT NULL NUMBER(4)----》表示最多4位数字从0000到9999
ENAME VARCHAR2(10)----》可变的字符数长度为10
JOB VARCHAR2(9)-----》可变的字符长度为9
MGR NUMBER(4) ----》表示最多4位数字
HIREDATE DATE-----》表示日期–年月日 time—表示时间
SAL NUMBER(7,2) 表示最多7位,保留2位,从00000.00到99999.99
COMM NUMBER(7,2) 表示最多4为数字
DEPTNO NUMBER(2) 表示最多2为数字
1.3.4了解示例数据库中的数据表字段
以上的数据表中的字段信息都需要记住
1.Emp表:存放员工信息
Emp数据表存在如下的字段
EMPNO -------》employee number -----》员工编号
ENAME -------》employee name-----》员工信息
Job -------》工作—》clerk雇员,salesman销售员,manager经理,
analyst分析员,president总统
MGR -------》manager----》上司
HIREDA------》雇佣日期—》17-DEC-80----》表示1980年12月17日入职
SAL ------》salary-----》员工薪资
COMM -----》commission----》佣金,绩效
DEPTNO-----》department number-----》部门编号
2.dept表:存放员工部门信息
Dept数据表存在如下的字段
DEPTNO-----》department number -----》部门编号10到40
DNAME -----》department name------》部门名称 4个部门
Accounting 会计 research 研究,科研 sales销售 operations操作部
LOC ------》location-----》公司地址 4个
3.salgrade表:存放薪资等级信息
salgrade数据表存在如下的字段
GRADE-----》 等级
LOSAL-----》 最低薪资----》该等级工资下限
HISAL-----》 最高薪资----》该等级工资上限
4.bonus表:存放员工奖金信息的表
Bonus表当前只存在表结构无数据,-no rows selected
bonus数据表存在如下的字段
ENAME------》employee name----》员工信息
JOB -----》工作
SAL -----》salary-----》工资
COMM -----》commission-----》奖金
5.dual表:虚拟表—》不存在的
6.主要使用表:emp和dept
使用的时候,主要操作集中在emp和dept数据表上