Oracle Start Up 3:Oracle数据库基础

 1. 创建TableSpace、用户及给用户分派权限

      可以通过Oracle客户端工具Enterprise Manager Console连接相应数据库,通过图形化操作来完成,这里我记录通过sqlplus连接到Oracle,通过命令来完成创建TableSpace、用户及给用户分派权限:

create tablespace testall datafile 'c:\oracle\product\oradata\datafile.dbf' size 100M;
create user kylin identified by ADMIN default tablespace testall;
grant connect,resource,dba to kylin;

 2.简单的表操作

      以上面创建的用户连接到数据库,创建一个表,向表中插入一条数据,查询数据,删除表,如下所示:

create table student(
name varchar2(20),
age number(3)
);

insert into student values('Kobe Bryant',32);

select * from student;

desc student;

drop table student;

 3.用Scott用户登录,练习一组查询语句

select empno,ename,job,sal,sal*12+200 from emp;
select empno,hiredate, hiredate+10 from emp;

select ename||' is a '||job from emp;
select ename||' ''s annual salary is '|| sal*12 from emp;

select empno as employeeId, ename name, job "Job",sal*12 "Annual Salary" from emp;
select empno "Empno",ename "Ename",sal, comm, ename||' - '|| comm, sal+comm from emp;

DISTINCT 去除重复行

select deptno from emp;
select distinct deptno from emp;
select distinct deptno, job from emp;

 查询结果排序ORDER BYASC(升序,缺省),DESC(降序)

select * from emp order by sal;
select * from emp order by sal desc;
select ename,sal,deptno from emp;
select ename,sal,deptno from emp order by sal desc,deptno;
select ename,sal,deptno from emp order by sal desc,deptno desc;

 

条件查询

select * from emp where ename='SMITH';
select * from emp where deptno=10;
select * from emp where sal >= 3000;
select * from emp where sal >= 3000;

获取当前系统时间:

select sysdate from dual;

 比较查询

select * from emp where sal between 1200 and 1900;
select * from emp where ename in ('SCOTT','WARD');
select * from emp where deptno <> 30;

模糊查询(%表示一个或多个字符,_表示一个字符,对于特殊字符可以用ESCAPE来查找)

select * from emp where ename like 'S%';
select * from emp where ename like '_A%';
select * from emp where ename like '%\_%' escape '\';

 空值判断

select * from emp where comm is null;
select * from emp where comm is not null;

 逻辑运算符

select * from emp where sal>2000 and deptno=20;
select * from emp where sal>2000 or deptno=20;
select * from emp where ename not in('SIMITH','JONES','KING','SCOTT');

 

 4.Oracle主要数据类型

 

Oracle数据类型
char字符型,最大长度2000B,缺省长度1B
nchar基于NLS(National Language Support)的字符型,最大长度2000B,缺省长度1B
varchar2可变长度字符型,最大长度4000B
nvarchar2基于NLS,其余同varchar2
varchar同varchar2
number(m,n)数值型,m为总位数,n为小树位数,m最大为38
date日期型,保存日期和时间
long变长字符型,最大长度2GB,不支持对字符串进行搜索
raw变长二进制数据类型,最大长度2000B
long raw变长二进制数据类型,最大长度2GB
blob二进制大对象类型,最大长度4GB
clob字符大对象类型,最大长度4GB
nclob基于NLS,同nclob
bfile在数据库外部保存的大型二进制文件的大对象类型,最大长度4GB

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.函数 

字符函数

 

函数功能用法返回结果
lower()转化为小写lower(KOBE BRYANT)kobe bryant
upper()转化为大写upper(kobe bryant)KOBE BRYANT
initcap()字母首字母大写initcap(KOBE BRYANT)Kobe Bryant
concat()字符串连接concat('Kobe','Bryant')Kobe Bryant
substr()字符串截取substr('Kobe Bryant',6,6)Bryant
length()返回字符串长度length('Kobe Bryant')11
instr()定位字符串instr('Kobe Bryant','be')3
lpad()左侧填充lpad('kobe',10,'*')******kobe
rpad()右侧填充rpad('kobe',10,'*')kobe******
trim()过滤首尾空格trim('    Kobe Bryant   ')Kobe Bryant
replace()替换replace('Kobe Bryant','Kobe','Kylin')Kylin Bryant

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SQL语句:

select empno,lower(ename),job from emp;
select empno,initcap(ename),job from emp;
select concat('Kobe','Bryant') from dual;
select substr('Kobe Bryant',6,6) from dual;
select length('Kobe Bryant') from dual;
select instr('Kobe Bryant','be') from dual;
select lpad('kobe',10,'*') from dual;
select rpad('kobe',10,'*') from dual;
select trim('    Kobe Bryant   ') from dual;
select replace('Kobe Bryant','Kobe','Kylin') from dual;

 数值函数

 

函数用法功能返回结果
abs()取绝对值abs(-3.14)3.14
round()四舍五入

round(3.1415)

round(3.1415,3)

round(314.1592,-2)

3

3.142

300

trunc()截断trunc(3.1415,3)3.141
ceil()向上取整ceil(3.14)4
floor()向下取整floor(3.14)3
sign()判断数值正负

sign(-3.14)

sign(0)

sign(3.14)

-1

0

1

sin()三角函数sin(3.14).001592653
power()冥运算power(4.5,2)
sqrt()开平方根sqrt(9)3
mod()取模mod(10,3)1
exp()基数为e的冥运算exp(1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相关SQL语句

select ename,sign(sal-1250) "Salary Info" from emp;
select sin(3.14) from dual;

 日期类型相关函数

 

函数功能用法返回结果
add_months(x,y)计算在日期x上加上y个月后的日期add_months(sysdate,2)
last_day(x)返回日期x当月最后一天的日期 last_day(sysdate)
months_between(x,y)返回日期x和y之间相差的月数months_between(sysdate,sysdate)
round(x,y)将日期x四舍五入到y所指定的日期单位(月或年)的第一天

round(sysdate,'month')

round(sysdate,'year')

01-10月 -10

01-1月  -11

trunc(x,y)将日期x截断到y所指定的日期单位(月或年)的第一天

trunc(sysdate,'month')

trunc(sysdate,'year')

01-10月 -10

01-1月  -10

next_day(x,y)计算指定日期x后的第一个星期几(由参数y指定)对应的日期next_day(sysdate,星期二)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相关测试SQL语句

select add_months(sysdate,2) from dual;
select last_day(sysdate) from dual;
select ename,months_between(sysdate,hiredate) from emp; 
select round(sysdate,'month') from dual;
select round(sysdate,'year') from dual;
select trunc(sysdate,'month') from dual;
select trunc(sysdate,'year') from dual;
select next_day(sysdate,'星期二') from dual;

转换函数

如下图所示,为常用几个转换函数



 常用日期格式符:

 

格式符说明举例
yyyy年份2010
mm用数字显示月份10
dd在当月中是第几天5
day星期几星期日
am/pm显示上午或下午上午
hh/hh12/hh24小时7:41 21:41
mi分钟41
ss46

 

      除上述格式符外,Oracle中日期模式还常用:"- : ; /",如要显示其他文本字符串则需要使用双引号括起来;也可以模式串的开头使用"fm"标记以去掉数字前面的零。

SQL描述

select empno,ename,job, to_char(hiredate,'yyyy-mm-dd') from emp;
select to_char(sysdate,'yyyy-mm-dd hh:mi,ss am') from dual;

select to_char(sysdate,'yyyy"年"mm"月"dd"日" hh:mi,ss am') from dual;

select to_date('2010-10-02','yyyy-mm-dd') from dual;

 常用数字描述符:




 
 
           
格式符说明
9代表一位数字
0代表一位数字,强制显示0
$放置一个美元符
L放置一个本地货币符
.小数点
,千位指示符

SQL示例:

select to_char(123123.123456) from dual;
select to_char(123456.123456,'$999,999.0000000') from dual;
select to_number('123456') from dual;
select to_number('985,365.1245','999,999.000000') from dual;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值