数据库
1. 数据库简介
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库;随着信息技术和市场的发展,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。
常用的数据库有如下分类:
2. DBMS
数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称 DBMS。大部分 DBMS 提供数据定义语言DDL (Data Definition Language)和数据操作语言DML ,供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。
根据存储模型可将数据库划分为关系型数据库和非关系型数据库。关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
3. SQL语言介绍
SQL语言为数据库语言,命令分类操作:
4. 表结构
数据库中表是从属于用户的,是一种逻辑表(概念表)。
表由表名、字段(名称+类型+约束)、记录 组成。与 java相对应:
5. 三范式
在设计数据库时,存在行业的标准,这个标准也称为条件,即范式 Normal Form。一般遵循三个条件即可,也就是”三范式”(3NF)。
- 1NF:列不可再分,字段的原子性
- 2NF:添加主键(数据量多,频繁操作的,需要定义主键)
- 3NF:拆分表,消除传递依赖,建立主外键关系
SQL语言
在执行SQL语句时,所用的例子为Oracle自带的SCOTT用户表。
1. 查询语句select
查询语句select的语法如下:
select *|查询的数据1,查询的数据2,...|表达式|字符串|整数 from 数据源;
注:
- *:一条数据的所有字段
- *不能与其他字段在select后面同时存在
- 一个select查询语句,就能够查到一个结果集
select * from emp;--查询emp表的所有数据
select ename from emp;--查询emp表中字段名为ename的数据
select ename, empno, mgr, sal from emp;--查询emp表中字段名为ename, empno, mgr, sal的数据
2. 去重
去重(distinct):当结果集中存在完全重复的数据,可以对结果集中的数据做去重。
注:distinct只能对结果集中完全相同的数据(两条数据的所有字段值都相同)做去重。
select distinct deptno from emp;--可以去重,因为部门编号有重复
select distinct empno,deptno from emp;--无法去重,因为员工编号不相同
3. 别名
别名即为数据源或结果集中的每一个列|字段起别名,语法如下:
select 字段名1 别名,字段名2 (as) 别名 from 数据源 别名;--给字段起别名as可加可不加,给数据源起别名不可加as
select ename 员工姓名,sal as 员工薪资 from emp e;
注:别名如果想要原封不动的显示需要添加"",即当别名中出现特殊符号比如空格|别名是小写英文想要显示为小写不想默认为大写,需要添加""。
select ename "员工 姓名",sal "salary" from emp;
4. 字符串
使用’ '可表示字符串,是一种数据的类型。字符串的拼接使用||作为连接符。
select '员工-'||ename from emp;
5. 伪列
伪列即select后面可以查询,但是表中没有真实存在的字段。可以是表达式,整数,字符串等。
select 123*456 from emp;
select 10 from emp;
select '哈哈哈' from emp;
select 123*456,'嘻嘻',10,20 from emp;
6. 虚表
虚表(dual)没有数据,只有一个字段。
select * from dual;
7. sysdate
使用sysdate可查询当前日期。
select sysdate from dual;
8. nvl函数
字段的默认值为null,有时需要对数据进行运算,此时需要使用nvl函数,具体语法如下:
nvl(参数1,参数2);--当参数1的值为null,nvl的结果为参数2,当参数1不为null,结果就为参数1
---查询所有员工的薪资,奖金,本月每一个人的奖金+100
select ename,empno,sal,comm 原奖金,nvl(comm,0)+100 现奖金 from emp;
注:null值与数字进行运算,结果还为null;null值与字符串做运算,结果为字符串。