前言
1977年提出了关系型
数据库,大型的数据库产品有oracle、db2和Sybase;中型的右SqlServer和
mysql;小型的代表为access。
正文
数据库的常用术语:dbms是数据库管理
系统; dbms是关系型数据库管理系统和dba是数据库管理员的意识
oracle的安装
安装过程简单略过。安装好之后有个数据库实例sid,即库名。
1) 连接数据库之前记得开启oracleXXX(SID)TNSListener服务和oracleServiceXXX(SID)这两个服务。 oracleXXX(SID)TNSListener服务,是客户端监听器 oracleServiceXXX(SID)这两个服务是数据库的服务器服务。
常使用PlSqlDev.exe等执行sql语句工具。 conn命令用于连接数据库实例。
注: oracle数据库默认提供Scott/tiger作为测试和学习使用。 默认提供常用的emp,dept等测试表。可以使用desc 表名 来查看表结构。
操作数据
1.数据的存储方式(索引文件比数据文件更重要)
仪表的形式存储数据,是采用二维表。行是记录,列是字段。
2.操作数据库使用SQL(structure query language) 结构化查询语言。
目前使用的是1999年指定的国际标准。数据库厂商通用(sql99)
3.根据sql的功能不同分成:
DQL:(数据查询语言,select)用来完成对数据库中的数据查询。
DDL(数据定义语言,create,drop,truncate截断表)操作表结构。
DML(数据库操作语言,insert,delete,update)操作数据
TCL(事务控制语言,transient control language)commit/rollback/savepoint 操作事务
4.简单的查询语句: select [distinct] 字段名称,子都每次 from 表名 --关键字和字段大小写不区分。
注:
1).oracle 默认提供scott账户 此账户下有默认的表用于学习和测试使用。 2).在plsql工具上,常使用的命令 : set pagesize 2 数值;--设置每行显示的列数。 column 字段名 format a9--显示该字段给予9个字长,针对于字符串 column 字段名 format 9999 --用4为字段表示数字。 / 表示执行存于缓存中的上次命令。
5.查询过程中取别名 as关键字 select 字段名 别名 form 表名;--as可以省略,别名与字段名分开
6.连接字段 || select 字段1||字段2 from emp;
7.查询时虽字段进行算数运算 +* - /
select ename ,sal*12 from emp; 1)null与任何数据进行操作都为空
8.desc 表名 查询表结构
显示字段、字段的类型以及长度和约束
9.oracle中常用的数据类型
1)number(n)
数字类型,不区分浮点数,n表示长度。
2)number(n,m)
表示总共有n位,小数位为m
3)varchar2 字符串
4)date 日期类型
条件查询语句
select 字段一,字段二 from 表名 where 限定条件
1.采用比较运算符过滤结果 > ,<,=,<>,!=
2.逻辑运算符 and,or ,not 一般与in 和一起使用
select * form emp where sal>100 and comm>100;
3.between 较小的数 and 较大的数
4.值的绑定 &变量名 动态传值
select * from emp where sal between &no1 and &no2
select * from emp where job='&name';--如果不加单引号,可以在输入时加单引号。
5.in 常与not结合使用
select * * from emp where sal in(1500,3000);
7.is null 和is not null
select * from emp where comm is null;
8.like 模糊查询 效率低,一般会全表扫描。建议不要将%放于查询条件的最前面
通配符%,是匹配任意个的字符;通配符_是匹配一个字符。
select * from emp where ename like 'A\_%' escape '\';--escape是用于声明转义字符。如果字段值包含有通配符,那么可以使用escape来设定转义字符。
9.distinct 关键字用于除去重复记录,只能紧随select 之后
select distinct deptno from emp;
10.查询排序 order by 默认为自然顺序。
select * from emp order by 1;--按照第一个字段排序,还要注意的是年份是按照大小来排序的。
单行函数
返回结果一行,输入参数也是一个记录。
字符函数
dual 虚表,它是一行一列,没有任何数据,常常用于测试。它是oracle特有的用于做函数测试的。
1.upper(参数) 将目标字符串转换成大写形式
select * from emp where ename=upper(‘&name’);
2.lower(参数)将目标字符串以小写的形式显示
3.length(参数)获取当前字符串的长度
4.substr(mu(目标字符串,截取的起始位置,截取的长度)
select substr('hello',1,2) from dual ;--小标从1开始
5.initcap(参数) 使当前的字符串的单词的首字母大写
select initcap('hello zhangkunnan') from dual;
6.concat 连接字符串
数字函数
1.round(参数) 四舍五入
2.ceil() --向上取整
3.floor() --向下取整
4.trunc(number,l) --截取小数位;
当l为正数时,表示截取小数点右边的位数;l为负数时,表示过滤小数点左边的位数。当l不写的时候,效果与l=0一样。
日期函数
1.sysdate .获取当前系统时间
column sysdate for a20;==设置字段显示格式
2.next_day(参考日期,字符/数字) 下一个星期几的日期
selectnext_day(sysdate,1); from dual--下一个星期天得日期
select next_day('星期日') from dual ;--前提是要oracle的字符集支持中文
第二个参数为数字,在中英文环境都可以执行。
3.add_months() 在月份上进行加减
select add_months(sysdate,3) from dual;
4.months_between(终止时间,即使时间) 两个时间的月份差
5.last_may() ;获取日期的当月的最后一天的日期
select last_day(sysdate) from dual;
转换函数
1.to_date(字符串,日期格式)函数,将字符串转换成日期类型。
select * from emp where hiredate =to_date('1980-12-17','yyyy-mm-dd');
2.to_char(日期,显示日期的格式)函数,将日期或其他类型转换成字符串
select * from emp where to_char(hiredate,'yyyy-mm-dd')='1980-12-17';
se