Oracle 数据库(2)

Dual系统表介绍

数据类型:
数据是信息数字表现形式,信息的加工处理是以大量的结构化数据为载体进行的,数据库管理系统的核心是数据库,数据库的主要对象是表,表是结构化数据存储的地方.
Oracle系统也提供了大量的数据类型主要包括两大类:
用户自定义的数据类型
内置的数据类型
A、字符型
字符数据类型可以用于声明包含了多个字母数字数据的字段。
固定长度的字符类型
char:用于存储固定长度的字符,一旦声明长度固定(不论你存储的实际大小,但是大小绝对不能大于声明的长度)长度不足时,采用空格补充。1B的默认大小,最大尺寸为2000B。

Nchar与char的解析是一样的不过,ncarh存储的是Unicode字符数据。

可变长度的字符类型
varchar与char类似,但是它是用于存储可变的字符串,而char用于存储固定的字符串。
Nvarchar与varchar解析是一样的,不过nvarchar用于存储的数据位双字节的数据。
日期型
date 短日期格式(1990-10-10)
Timestamp长日期格式(1990-10-10 10:10:10)
数字型
Number(2),代表:声明一个2位数字的整数。
Number(3,2)代表:声明为3数字位,并且小数后有2位。

文本型-lob数据类型
Blob:可以存储图像,音频文件及视频等文件。
Clob:字符格式的大型对象,oracle数据unicode格式的编码
Bfile:用于存储二进制格式的文件。
--------------------------------------------------------------------------------------------------------------rowid 伪劣类型:用于在oracle内部保存表中的每条记录的物理地址。


创建表

插入语句:
向表中插入一条新的(全字段)记录
SQL> insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values(1111,'test','test','7369',to_date('1992-12-12','yyyy-mm-dd'),100,100,20);
1 row inserted
或者写成
SQL> insert into emp values(2222,'test','test','7369',to_date('1992-12-12','yyyy-mm-dd'),100,100,20);
1 row inserted
都过查询即可看到结果
SQL> select * from emp;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH CLERK 7902 1980-12-17 800.00 20
……….//省略部分
1111 test test 7369 1992-12-12 100.00 100.00 20
2222 test test 7369 1992-12-12 100.00 100.00 20
向表中插入一条新的(部分字段)记录
SQL> insert into emp(empno,ename,hiredate,deptno) values(3333,'test',to_date('1992-12-12','yyyy-mm-dd'),30);
1 row inserted
注意:在插入操作的时候如果有关联,一定要插入相应关联的字段的值.

备注:插入之后都需要手动的提交 commit;
SQL> commit;
Commit complete


SQL是structured Query Language(结构化查询语言)的缩写。可以使用sql语句建立或删除数据库的对象,插入,修改和更新数据库中的数据,并且可以对数据库执行各种日常管理的操作。它是所有关系数据库管理系统的标准语言.换句话说使用sql可以对所有的关系数据库进行操作。
SQL按照功能分类:
数据库定义语句
DDL(Data Definition Language):用于创建、修改、删除数据库对象。
数据库操作语句
DML(Data Manipulation Language)用于:查询,添加修改或删除存在数据库对象中的数据。
数据库控制语句DCL
DCL(Data Control Language)用于控制访问数据库中特定对象的用户、grant revoke
Oracle系统中经过对Sql语言扩展被称为PL/SQL语言。

基本的sql语句
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table;

SQL> select * from emp;//查询所有的字段信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp;//查询所有
SQL> select empno from emp;//查询部分字段
SQL> select empno "员工编号" from emp;//采用别名查询
SQL> select empno as "员工编号" from emp;//采用别名查询 等效于上面的效果
SQL> select distinct(hiredate) from emp;//查询所有员工的入职日期并且去掉重复的日期
SQL> select sal+comm from emp;//注意:包含空值的数学表达式求出的结果为空值
SQL> select empno||ename from emp;//||连接符 把empno与ename作为一个字段显示
SQL> select empno||ename as "员工编号和员工姓名" from emp;//效果同上
SQL> select '员工的编号是'||empno from emp;//字符的链接
SQL> select '姓名为'||ename||'员工,所在的部门是:'||deptno as "新列" from emp;//字段的链接包号字符连接
SQL> select distinct(deptno) from emp;//查询去掉重复行的员工部门编号

条件查询
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table
[WHERE condition(s)];
Condition(s)要使用到比较运算符常用的比较运算符如下:
操作符 含义
= 等于
> 大于
>= 大于等于
< 小于
<= 小于等于
<> 不等于 等效于!=
其它操作
And 逻辑运算 逻辑与
Or 逻辑运算 逻辑或
Not 逻辑运算 逻辑否
Between 起始值 and 结束值:使用 BETWEEN 运算来显示在一个区间内的值 包含(起始结束值)
In: 使用 IN运算显示列表中的值。 In(,,,)相当于一个集合,只要出现集合中匹配的就显示
Like:
使用 LIKE 运算选择类似的值
选择条件可以包含字符或数字:
% 代表零个或多个字符(任意个字符)。
_ 代表一个字符。

Escape:
回避特殊符号的:使用转义符。例如:将[%]转为[\%]、[_]转为[\_],然后再加上[ESCAPE ‘\’] 即可
Null:
使用 IS (NOT) NULL 判断空值。

//查询部门号为10的员工信息 部门为整数类型
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where deptno=10;
//查询职位号为MANAGER的员工信息 岗位的类型为字符类型
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where job='MANAGER';
//查询部门号为10并且员工的职位为MANAGER的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where job='MANAGER' and deptno=10;
注意:
字符和日期要包含在单引号中。
字符大小写敏感,日期格式敏感。
默认的日期格式是 DD-MON-RR。

//查询部门号大于10的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where deptno>10;
//查询薪水大于等于3000的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where sal>=3000;
//查询薪水不等于3000的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where sal<>3000;
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where sal !=3000;
//查询薪水大于2000并且小于3000的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where sal>2000 and sal<3000;
//查询薪水大于等于2000并且小于等于3000的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where sal between 1600 and 3000;
//等效于
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where sal>=1600 and sal<=3000;
//查询部门号位10,20的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where deptno in(10,20);
//注意:相当于如下操作:
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where deptno =10 or deptno=20;
//查询员工名称以S开头的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where ename like 'S%';
//查询员工名称以S结尾的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where ename like '%S';
//查询员工名称第三个字符为N的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where ename like '__N%';
//查询员工名称中含有N的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where ename like '%N%';
//查询员工名称中倒数第二个字符为%的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where ename like '%\%_'escape'\';
//查询员工名称总含有%的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where ename like '%\%%'escape'\';
//查询奖金为null的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where comm is null;
//查询奖金非null的员工信息
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where comm is not null;
优先级表格:
优先级
1 算术运算
2 连接符
3 比较符
4 Is not null like not in
5 Not between
6 not
7 and
8 Or
备注:可以采用括号改变优先级

关系数据库-层次关系---》网状的关系-关系数据库-对象关系。


文章:1、oracle简化安装图解
2、oracle的dos操作方式
3、SQL查询介绍
1、SQl介绍
2、基本查询
3、条件查询
4、排序查询
5、分组查询
6、having子句

查询语句:
1、表查询某个表中的所有数据.
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH CLERK 7902 1980-12-17 800.00 20
7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 30
7521 WARD SALESMAN 7698 1981-2-22 1250.00 500.00 30
7566 JONES MANAGER 7839 1981-4-2 2975.00 20
查询某个表中选择特殊的行


3、查询某个表中的特殊的列
SQL> select hiredate from emp;
HIREDATE
-----------
1980-12-17
1981-2-20
1981-2-22
1981-4-2
采用别名查询
SQL> select hiredate as 日期 from emp;
日期
-----------
1980-12-17
1981-2-20
1981-2-22
1981-4-2
备注 as也可以省略
SQL> select e.hiredate from emp e; //表的别名

HIREDATE
-----------
1980-12-17
1981-2-20
1981-2-22
1981-4-2


Oracle的常用函数
1、日期有关的函数
to_char(转换的列名,格式);//把一个日期类型安照指定的格式转换成字符串.
SQL> select to_char(hiredate,'yyyy-mm-dd hh24-mi-ss') from emp;
TO_CHAR(HIREDATE,'YYYY-MM-DDHH
------------------------------
1980-12-17 00-00-00
1981-02-20 00-00-00
1981-02-22 00-00-00
0-00-00
to_data(转换的字符,转换的格式)//把一个字符串按照指定的格式转换成指定格式的日期类型。
字符串相关函数
1、字符串连接 || 或 concat(‘’,’’)
SQL> select 'a' || 'b' from dual; //oracle 特有的符号操作
'A'||'B'
--------
ab
SQL> select concat('a','b') from dual;
CONCAT('A','B')
---------------
ab
SQL> select concat(concat('a','b'),'c') from dual;
CONCAT(CONCAT('A','B'),'C')
---------------------------
abc
子串函数 substr(‘’,开始位置,字符长度) instr(‘’,’出现的字符’)
SQL> select substr('abcdef',1) from dual;
SUBSTR('ABCDEF',1)
------------------
abcdef
备注:开始位置从1开始,如果有两个参数(substr(‘’,2))那么代表的意思是从位置2开始到字符串的结尾的字符串
SQL> select substr('abcdef',1,3) from dual;
SUBSTR('ABCDEF',1,3)
--------------------
abc

select instr('abcdef','cd',1) from dual;


大小写转换 upper(‘’)转换成大写,lower(‘’)转换成小写
SQL> select upper('abc') from dual;
UPPER('ABC')
------------
ABC
SQL> select lower('ABC') from dual;

LOWER('ABC')
------------
abc
5、随机字符串的函数
dbms_random.string('a',6) //第一个参数有如下几个,第二参数代表产生的字符串的长度。
u 大写字母
l小写字母
a大小写字母
x大写字母和数字
p任意字符
举例如下:
SQL> select dbms_random.string('u',5) from dual; //随机产生一个长度为5并且字符大写的字符串
DBMS_RANDOM.STRING('U',5)
--------------------------------------------------------------------------------
RZLCC
SQL> / //随机产生一个长度为5并且字符大写的字符串 注意观察下面的结果
DBMS_RANDOM.STRING('U',5)
--------------------------------------------------------------------------------
RAVTG
SQL> / //随机产生一个长度为5并且字符大写的字符串 注意观察下面的结果 每次都是随机产生
DBMS_RANDOM.STRING('U',5)
--------------------------------------------------------------------------------
NOAJN

备注重点理解u,l,a,x,p的含义。
SQL> select dbms_random.string('l',5) from dual; //随机产生一个长度为5并且字符小写的字符串
DBMS_RANDOM.STRING('L',5)
--------------------------------------------------------------------------------
tawgc
SQL> select dbms_random.string('a',5) from dual; //随机产生一个长度为5并且字符大小写混合的字符串
DBMS_RANDOM.STRING('A',5)
--------------------------------------------------------------------------------
TEczi
SQL> select dbms_random.string('x',5) from dual; //随机产生一个长度为5并且字符与数字组合的字符串

DBMS_RANDOM.STRING('X',5)
--------------------------------------------------------------------------------
4TDUU

SQL> select dbms_random.string('x',5) from dual;
DBMS_RANDOM.STRING('X',5)
--------------------------------------------------------------------------------
RONOZ
SQL> /
DBMS_RANDOM.STRING('X',5)
--------------------------------------------------------------------------------
YO803
SQL> select dbms_random.string('p',5) from dual; //随机产生一个长度为5任意的字符串
DBMS_RANDOM.STRING('P',5)
--------------------------------------------------------------------------------
5=3)*

SQL> select dbms_random.string('p',5) from dual;

DBMS_RANDOM.STRING('P',5)
--------------------------------------------------------------------------------
zf,@z
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值