数据库之Oracle(一)

  前段时间项目中需要做数据管理和迁移的工作,于是又重新拾起了数据库,在javaEE阶段,我们对于数据库的使用仅限于DML(insert,update,delete,select)。数据库的使用也比较狭隘,只需要能够进行基本的增删改查操作就好。本文中,我将主要介绍Oracle数据库的一些基础知识以及一些常用的函数和PL/SQL。

  Oracle数据库可以说是目前世界上大型企业运用最多的数据库,它是由oracle公司自主研发的,同时也就决定了它的sql语句和其他数据库(Mysql,Sqlserver)等有一些小地方的区别,不过大体来说,很大一部分的sql语句还是遵循普遍的规则。

一 :Oracle开发管理工具

  工欲善其事,必先利其器。Java 有Eclipse,服务器有tomcat,前端有sublime,编辑器有ue,数据库也有自己的管理软件DBMS--Database Management System.DBMS分为两类:基于共享文件和(客户端(Client)—服务端(Server))。客户端主要进行的是用户与之交互的软件,例如客户选择要筛选的条件,后客户端通过网络把改请求传递给服务端,服务端处理完成后返回结果给客户端,呈现给用户。服务端则主要进行连接数据库服务器,对数据进行添加,删除,查询和修改。都是通过服务端来进行的。

在平常使用中,所有的oracle服务器都会安装一个名为Sql*Plus的命令行工具,这个客户端只会在窗口显示SQL>提示符,允许输入命令给Oracle数据库。

另外还会有Oracle SQL DEVELOPR ,在计算机上安装时只显示 SQL DEVELOPR,它支持所有的oracle中sql语句。

二:Oracle 基础知识

  在oracle数据库中,与其他数据库不同的是,存在表空间。Oracle中表空间是像其他数据库一样设置了表空间,会管理该空间内的表,表空间实质是一个虚拟的,人为的创建好以后分配给特定的用户,其他用户登陆是不能够对该表空间中的表做任何操作的。

Create tablespace name

Datafile  ”D:/Oracle/tomspace” size  1024M

Extent management local

Uniform size 5M

在分配好表空间后,我们就要开始创建表.

下面是oracle数据库的字段类型  (注意:其他数据库的int--> number)


字段类型


中文说明


限制条件


其它说明


CHAR


固定长度字符串


最大长度2000 bytes


VARCHAR2


可变长度的字符串


最大长度4000 bytes


可做索引的最大长度749


NCHAR


根据字符集而定的固定长度字符串


最大长度2000 bytes


NVARCHAR2


根据字符集而定的可变长度字符串


最大长度4000 bytes


DATE


日期(日-月-年)


DD-MM-YY(HH-MI-SS)


经过严格测试,无千虫问题


LONG


超长字符串


最大长度2G(231-1)


足够存储大部头著作


RAW


固定长度的二进制数据


最大长度2000 bytes


可存放多媒体图象声音等


LONG RAW


可变长度的二进制数据


最大长度2G


同上


BLOB


二进制数据


最大长度4G


CLOB


字符数据


最大长度4G


NCLOB


根据字符集而定的字符数据


最大长度4G


BFILE


存放在数据库外的二进制数据


最大长度4G


ROWID


数据表中记录的唯一行号


10 bytes ********.****.****格式,*为0或1


NROWID


二进制数据表中记录的唯一行号


最大长度4000 bytes


NUMBER(P,S)


数字类型


P为整数位,S为小数位


DECIMAL(P,S)


数字类型


P为整数位,S为小数位


INTEGER


整数类型


小的整数


FLOAT


浮点数类型


NUMBER(38),双精度


REAL


实数类型


NUMBER(63),精度更高

2.1 DDL(数据定义语言)

2.1.1新建表

     Create  table  tableName( name  number,列2  类型.....);(数据库中多条sql语句需要用‘;’隔开)

主键,外键,约束

在新增是一般都会有各种约束,下面简单说几种。

Name  Varchar2(45)   Primary key  ----主键

Age    number            not null       ----非空约束

Sex    char(3)        default ‘男’      ----默认’男’

Constraint tableName   primary Key(列名1,列名2,列名3...) ---联合主键

Foreigen key            ---外键

建好的表可以在相应的数据库下Tables中看到

2.1.2 删除表

Drop table tableName

2.1.3 修改表

2.1.3.1.向表中添加新字段

ALTER TABLE <table_name> ADD (字段1 类型 [NOT NULL],字段2 类型 [NOT NULL].... );

2.1.3.2 修改表中字段

  ALTER TABLE <table_name> modify(字段1 类型,字段2 类型... );

  2.1.3.3 删除表中字段

    ALTER TABLE <table_name> drop(字段1,字段2,.... );

  2.1.3.4 修改表的名称

    RENAME <table_name> to <new table_name>;

  2.1.3.5 对已经存在的表添加约束

    ALTER TABLE <table_name> ADD CONSTRAINT <constraint_name> 约束类型 (针对的字段名);

    示例:

    Alter table emp add constraint S_F Foreign key (deptno) references dept(deptno);

  2.1.3.6 对表里的约束禁用;

    ALTER TABLE <table_name> DISABLE CONSTRAINT <constraint_name>;

  2.1.3.7 对表里的约束重新启用;

    ALTER TABLE <table_name> ENABLE CONSTRAINT <constraint_name>;

  2.1.3.8 删除表中约束

    ALTER TABLE <table_name> DROP CONSTRAINT <constraint_name>;

    示例:

    ALTER TABLE emp drop CONSTRAINT <Primary key>;

2.2 DML(数据操作语言)

  2.2.1 插入数据

    Insert into  tableName  values(值1,值2,值3.....)

  2.2.2 修改数据

    Update  tableName  set name=’王五’  where age=28

    修改是需要添加Where 查询条件,否则整个表中数据都会被修改

  2.2.3 删除数据

    在删除的时候 有delete 和truncate两种,delete 删除时一般不需要遵从外键约束,而truncate删除时更加彻底,会收到外键约束。

    Delete from  tableName

    Truncate  tableName

  2.2.4 查询数据

    Select name from users

    带别名的查询语句

    Select s.name from users s 表别名不能够添加 as

    Select name (as) a ,age b from users    -->查询出的结果显示的列名分别是 a,b 对于(as)可以省略

    需要注意的是在oracle自带的DBMS中查询语句不能够对表别名添加AS

2.3 序列(例如id自增长)

    在oracle数据库中,列值自动增长需要使用到序列(Sequence).

    Create Sequence sequence_name

    Start with number                          ----初始值

    Increment by number                       ----每次增加的值

    MaxValue  number/NoMaxValue           ----最大值/默认无最大值

    MinValue  number/NoMinValue            ----最小值/默认无最小值

    Cycle/NoCycle                         ----表示达到最大值/最小值后(重新开始/不重新开始,会报错)

    CACHE/NoCACHE                    ----会生成序列号

    在生成序列之后,在添加中可以

    Insert into tableName values(sequence_name.nextval,name,age,sex....)

    可以使用nextval 或currval 两个”伪列”来获取下一个值和当前值。

    Alter sequence  时     1.初始值是不能去修改的;

          2.最大值不能小于当前值,最小值不能大于当前值;

2.4 高级查询

    在实际开发中,对于数据的检索我们使用的时候需要各种各样的条件去限制。

  2.4.1  Where 过滤查询,带条件查询时必须有Where关键字


描述


Sql语句


查询年龄在25 的用户姓名


select  name from users where age=’25’


查询年龄25,性别男的用户姓名


select  name from users where age=’25’ and sex=’男’

   2.4.2  Between, and , or,in,not in运算符查询

 


描述


Sql语句


查询年龄在20-25 之间的用户姓名


Select name from users where age Between(20,25)


Select name from users where age>=20 and age<= 25


Select name from users where age in(20,25)


查询年龄不在20-25之间的用户姓名


Select name from users where age<20 or age>25


Select name from users where age not in (20.25)

  2.4.3  Group By 分组


描述


Sql语句


会通过不同的年龄去分组表中数据,最后得到的一个年龄只有一条数据,显示的数据是id靠前的


Select name from users gruop by age

  2.4.4  Having 过滤分组


描述


Sql语句


显示以年龄分组后数量大于2的用户姓名


Select name,count(*) from users group by age having count(*)>2

   2.4.5  Count() 计算总记录数


描述


Sql语句


查询所有users 表中的记录总数(包括Null)


Select count(*)  from users


查询所有users表中列名不为NUll的记录总数


Select count(列名)  from users

 

   2.4.6  Order By 排序 (asc升序,desc 降序 不写默认升序)


描述


Sql语句


按年龄查找用户姓名,按升序排列)


Select name from users order by age asc


按年龄查找用户姓名,按降序排列


Select name from users order by age desc

  2.4.7  Like 模糊查询 (“_” ,”%”的使用区别)

      使用模糊查询的地方很多,比如百度的搜索框应该就是模糊查询,模糊查询可以更有效的,更全面的搜索到相应的信息。


描述


Sql语句


会查出例如”王阳/李阳”这样的用户年龄 “_”代表前面只有一个字符


Select age from users where name like ’_阳’


会查出名字中最后一个字是阳的用户,例如”李海阳,李阳”

“%”代表任意字符,任意长度


Select age from users where name like ’%阳’


会查出名字中带有字阳的用户,例如”李海阳,李阳光”,”阳光”


Select age from users where name like ’%阳%’ -->

三、常用函数

    函数的使用在数据库中是十分常见的,函数的存在方便了我们对数据做所需要的处理,更加规范,安全的得到想要的数据。

    字符函数


名称


描述


CONCAT(字符串1,字符串2)


将字符串1和字符串2连接成一个新的字符串
示例: select CONCAT(job,ename) from emp


LPAD(字段,总的大小,添充字符)


左填充即向右对齐
示例: select empno,lpad(sal,10,‘*‘) from emp


RPAD(字段,总的大小,添充字符)


右填充即向左对齐
示例: select empno,rpad(sal,10) from emp


LOWER(字符串)


将字符串全部变成小写;


UPPER(字符串)


将字符串全部变成大写;


INITCAP(字符串)


将字符串变成第一个字母大写,其余都变成小写;


LENGTH(字符串)


求出字符串的长度;


SUBSTR(字符串,开始位置,长度)


从字符串中取子串;
示例: select substr(ename,2,3) from emp;--从ename的第2位开始取3位


INSTR(字符串,字符)


查看字符是否在字符串中存在;不存在返回0;存在则返回字符所在的的位置;如果有两个以上的字符则返回第一个的位置.
示例:select instr(ename,‘S‘) from emp;


TRIM(字符 FROM 字符串)


去掉字符串首尾的字符;
示例: select trim(‘S‘ from ename) from emp;


TO_CHAR()


将不是其他类型转成字符类型;
对于日期型可以控制其格式:TO_CHAR(日期,‘格式‘);
其中格式有: ‘YYYY‘ --以4为显示年;
‘YEAR‘ --以标准格式显示年; ‘MM‘ ; ‘MON‘ ; ‘DD‘ ; ‘DAY‘; ‘HH‘
; ‘MI‘ ;‘SS‘


REPLACE(字符串,字符串1,字符串2)


将字符串中的字符1替换成字符2;
示例: select replace(ename,‘SC‘,‘SS‘) from emp;


TRANSLATE(字符串,字符串1,字符串2)


替换多的字符;
示例: select translate(ename,‘SH‘,‘AB‘) from emp;
--表示将ename中的‘S‘换成‘A‘,‘H‘换成‘B‘;


ASCII(char)


求字符的ascii码


NLSSORT(字符串)


对字符串排序.

    数学函数


名称


描述


ABS(数字)


一个数的绝对值


CEIL(数字)


向上取整;不论小数后的书为多少都要向前进位;
CEIL(123.01)=124;
CEIL(-123.99)=-123;


FLOOR(数字)


向下取整;不论小数后的书为多少都删除;|
floor(123.99)=123;
floor(-123.01)=-124;


MOD(被除数,除数)


取余数;
MOD(20,3)=2


ROUND(数字,从第几为开始取)


四舍五入;
ROUND(123.5,0)=124;
ROUND(-123.5,0)=-124;
ROUND(123.5,-2)=100;
ROUND(-123.5,-2)=-100;


SIGN(数字)


判断是正数还是负数;正数返回1,负数返回-1,0返回0;


SQRT(数字)


对数字开方;


POWER(m,n)


求m的n次方;


TRUNC(数字,从第几位开始)


切数字;
TRUNC(123.99,1)=123.9
TRUNC(-123.99,1)=-123.9
TRUNC(123.99,-1)=120
TRUNC(-123.99,-1)=-120
TRUNC(123.99)=123


GREATEST(数字列表)


找出数字列表中最大的数;
示例:
select greatest(100,200,-100) from dual; --结果为200


LEAST(数字列表)


找出数字列表中最小的数;


SIN(n)


求n的正旋


COS(n)


求n的余旋


TAN(n)


求n的正切


ACos(n)


求n的反正切


ATAN(n)


求n的反正切


exp(n)


求n的指数


LN(n)


求n的自然对数,n必须大于0


LOG(m,n)


求n以m为底的对数,m和n为正数,且m不能为0

    日期函数


名称


描述


ADD_MONTHS(日期,数字)


在以有的日期上加一定的月份;
示例:
select add_months(hiredate,20),hiredate from emp;


LAST_DAY(日期)


求出该日期的最后一天.


MONTHS_BETWEEN(日期1,日期2)


求出两个月之间的天树(注意返回的天数为小数);
示例:
select months_between(sysdate,hiredate) from emp;


NEW_TIME(时间,时区,‘gmt‘)


按照时区设定时间.


NEXT_DAY(d,char)


返回d指定的日期之后并满足char指定条件的第一个日期

    其他函数


名称


描述


VSIZE(类型)


求出数据类型的大小;


NVL(字符串,替换字符)


如果字符串为空则替换,否则不替换

时间: 2024-10-31 18:38:11

数据库之Oracle(一)的相关文章

数据库之Oracle

数据库之Oracle 一. 用户的管理 1. 用户就是好比公司的某个人,而权限是这个人能在公司做什么,他的角色就是说明他的职位. 2. 用户的权限分为: 系统权限:对别的用户的管理操作. 对象权限:对保存的数据的管理操作. 3. 对用户的增删改查 增:例如我创建一个用户名为”atongmu“密码为“123”的用户:create user c##atongmu identified by 123; 删:不能自己删除自己,需要dba权限才可以,这样有了之后,删除用户:drop user  c##at

【数据库】Oracle 11g使用命令导入导出表,导出结果集

[数据库]Oracle 11g使用命令导入导出表,导出结果集 很久没敲命令进行Oracle数据库表的导入(imp),导出(exp)了,今天猛一敲,发现有些命令居然忘了,顺手写下这篇博文,记录一下! exp本地导出命令: 1 exp username/[email protected] file=d:\demo.dmpfull=y 2 exp username/[email protected] file=d:\demo.dmpowner=(xx) 3 exp username/[email pr

oracle监听,数据库,oracle服务器的启动和停用

一.oracle监听,数据库,oracle服务器的启动和停用 使用root用户登录:切换用户su – root/root操作系统,一般只有root用户才有权限去操作系统中安装的oracle数据库服务器,然后使用数据库管理员用户去启用和停用相关服务. 1.启动oracle监听:使用root用户登录后,使用命令:lsnrctl start   //启动监听 2.启动数据库:使用数据库管理员dba用户(sqlplus '/as sysdba')去启动和关闭数据库. 连接数据库:connect  /as

数据库使用-oracle索引的创建和分类

数据库使用-oracle索引的创建和分类 索引是数据库中一种可选的数据结构,她通常与表或簇相关.用户可以在表的一列或数列上建立索引,以提高在此表上执行 SQL 语句的性能.就像本文档的索引可以帮助读者快速定位所需信息一样,Oracle 的索引提供了更为迅速地访问表数据的方式.正确地使用索引能够显著的减少磁盘 I/O. Oracle 提供了多种类型的索引,可以互为补充地提升查询性能: ·        平衡树索引(B-tree index) ·        平衡树簇索引(B-tree clust

初识 数据库及Oracle数据库

一.数据库基本概念二.数据库举例三.Oracle特点四.Oracle版本五.安装Oracle注意事项六.SQL简介七.Select语句 一.数据库基本概念 数据库(Database,DB)数据库管理系统(Database Management System,DBMS)数据库管理员(Database Administrator,DBA)数据库系统(Database System) 二.数据库举例 Oracle(Oracle) DB2(IBM) SQL/Server(MS) SyBase(SyBas

Microsoft-PetSop4.0(宠物商店)-数据库设计-Oracle

ylbtech-DatabaseDesgin:Microsoft-PetSop4.0(宠物商店)-数据库设计-Oracle DatabaseName:PetShop(宠物商店) Model:宠物商店网站,批量创建用户 Type:专业网站 Url: 1.A,数据库关系图(Database Diagram) 返回顶部 1.B,数据库设计脚本(Database Design Script)返回顶部 1.B.1,删除用户 1.B.1.1,DropDatabase1.sql DROP USER MSPET

数据库之Oracle的使用【入门版,包括常用的Sql语句】

在命令提示符里输入sqlplus 或直接打开sqlplus scott/tiger(用户名/密码){或先输入用户名(scott)-回车-输入密码(tiger)} 1.sqlplus Orcale提供的一个客服端工具,通过使用这个工具可以发送一些sql 与数据库进行通通讯 sqlplus命令 <1>本机登录 sqlplus 用户名/密码 sqlplus 用户名 sqlplus/nolog-->启动sqlplus字符界面,然后通过conn用户 <2>查看当前用户:show use

Oracle数据库之Oracle的下载与安装

二.Oracle 的下载与安装 2.1.Oracle 简介 Oracle 公司是全球最大的信息管理软件及服务供应商,成立于 1977 年,主要的业务是推动电子商务平台的搭建.Oracle 公司有自己的服务器.数据库.开发工具.编程语言,在行业软件上还有企业资源计划(ERP)软件.客户关系管理(CRM)软件.人力资源管理软件(HCM)等大型管理系统,所以 Oracle 是一家综合性的国际大公司,也是最有实力与微软公司在技术上一较高低的公司之一. Oracle 公司的创办决定于4位传奇人物(左起):

win7 64位系统 PB连接oracle数据库出现“oracle library oci.dll could not be loaded”问题的解决方法

今天与大家分享一个自己的学习笔记,希望能给遇到同样问题的人带来帮助. 不知道大家在win7 64位系统下用 PB连接oracle数据库时,是否遇到过“oracle library oci.dll could not be loaded”问题. 今天,在win7 64位系统下用 PB连接oracle数据库时,一直出现上述错误,在百度上找了很久,都没有找到一个完整的解决方案,咨询了很多人,(他们都说是我的PB和oracle没装好,但我装的时候没出现任何问题,一切都很顺利,而且PB和oracle都能正

Web项目(原数据库用Oracle)MySql兼容

Oracle与MySql兼容注意的几点: To_char:转换成字符串类型,如:To_char(1234.5, '$9999.9'),结果:$1234.5 To_date:转换成日期类型,如:To_date('1980-01-01', 'yyyy-mm-dd'),结果:01-1月-80 To_number:转换成数值类型,如:To_number('1234.5'),结果:1234.5 (1)date_format(date,'%Y-%m-%d')    -------------->oracle