oracle数据库SQL入门

Posted 奋斗的Fly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle数据库SQL入门相关的知识,希望对你有一定的参考价值。

 

1.oracle数据库的下载、安装、卸载

Oracle下载:

Oracle下载链接地址:http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/index.html

 如上图:选择接受协议后,选择自己对应系统、位数的文件即可;

文件下载好的路径如下:

安装:点击setup.exe文件准备安装:

如图所示几个步骤:第一个配置安全安装处,只是为了学习,可以将前面的勾去掉,其余的直接点击下一步即可,注意的是:选择安装路径时,

由于Oracle数据库较大,最好不要放置于c盘,放于闲置空间较大的盘中,避免开机启动时拖慢系统速度,最后就是在设置口令时:口令就是

你的登录密码,其余直接下一步即可。

验证安装是否成功:

安装后可以在桌面左下角找到开始,我这里使用的是Windows 10系统,不同系统显示有所不同:里面可以找到一个如下图所示的图标(安装的当前Oracle的版本):

点击SQL plus工具

输入用户名:system

输入你在安装时输入的口令即密码出现:

出现了链接到对应的你下载安装的Oracle数据库版本的文字,说明你已经安装成功

Oracle的卸载:

首先找到安装Oracle文件目录下的deinstall文件夹:

找到文件下的deinstall.bat这是一个批量删除的执行文件,点击进去之后,按照提示进行操作即可,一般会

将软件卸载、注册表等都要删除干净,才算彻底的将软件卸载

 

2.用户与表空间

2.1使用系统用户登录

系统用户从权限大小进行排序:sys、system、sysman、scott;其中scott的默认密码是tiger

使用system用户登录语句:

connect [username/password] [@server] [as sysdba|sysoper]

例如:connect system/root @orcl as sysdba

上面的arcl就是在安装Oracle数据库时,创建数据库默认的数据库名,sysdba是以管理员身份登录,sysoper是以普通操作员省份登录

如下图:

 

对于sys必须后面必须加上as 什么,意思就是以什么身份进行登录,sys必须是sysdba管理员身份

此时也可以:通过 show users语句查看当前的登录用户

可以看到当前的登录用户为sys,oracle语句中是不区分大小写的,只有在指定表名是必须是大写

2.2.Oracle用户好表空间之间查看登录用户

dba-users:用户字典,通过desc查看出用户字典的结构;

通过select username,acount_status from dba_users;可以查看出对应的dba_users中对应用户名和账户的状态;

可以看到sys/system, 是一个open状态,其他的大多都是locked被锁定的状态

如果要使用这些被锁定的账户的SQL语句:alter user username account unlock;这样就可以使用它进行登录了;

2.3:表空间的创建、设置、删除、增减文件的语句

alter user username default|temporary tablespace tablespace_name;

临时表空间:不是永久保存的,只是在存储过程或其它的过程中使用,过程结束它就被回收掉。

创建表空间:create [temporary] tablespace tablespace_name tempfile|datafile \'xx.dbf\' size xx;

查看数据字典:desc dba_data_files;

在数据字典里查看具体的表空间的文件路径:

修改表空间的状态:联机状态、脱机状态

SQL语句:alter tablespace tablespace_name online|offline

修改表空间的状态:设置只读或可读写状态

alter tablespace tablespace_name read only|read write;

在表空间中增加数据文件:

alter tablespace tablespace_name add datafile \'xx.dbf\' size xx;

这就是通过SQL语句在原有表空间创建后最终生成的文件:

删除表空间:

SQL语句:drop tablespace tablespace_name [including contents];

 

表空间所在位置的路径,从下面可以看出,这个只是删除掉了它的数据结构,但是里面

的文件并未将其删除。

3.管理表

3.1Oracle的数据类型

(1)、字符型

char(n) 、nchar(n),其中char中的n最大值是2000,nchar的最大值是1000,他们是不可变长度的字符类型

例如:设置姓名的char(10),如果实际只装入了2个字符,那么后面的八个字符,内存中将会把它补齐,这样的话在

一定程度上是很浪费内存的;所以也就出现了可变化长度的字符类型

varchar2(n)、nvarchar(n)

(2)、数值型

number(m,n),m表示可以表达几位数子,n表示可以后几位小数;

例子:number(5,2):100.00,如果写成10000.00,用它来进行表示的话会出现######,无法显示出结果。

(3)、日期型

date

更加精确的timestamp

(4)、其它类型

BLOB和CLOB表示大数字的类型

1、BLOB全称为二进制大型对象(Binary Large Object)。它用于存储数据库中的大型二进制对象。可存储的最大大小为4G字节
2、CLOB全称为字符大型对象(Character Large Object)。它与LONG数据类型类似,只不过CLOB用于存储数据库中的大型单字节字符数据块,不支持宽度不等的字符集。
可存储的最大大小为4G字节,Clob可以存储单字节字符数据,Blob可以存储无结构的二进制数据

3.2Oracle中操作表结构

添加字段

alter table table_name add column_name datatype;

修改字段数据类型

alter table table_name modify column_name datetype;

删除字段

alter table table_name drop column column_name;

对存在字段名重命名

alter  table table_name rename column column_name to new_column_name;

修改表名

rename table_name to new_table_name;

删除表

truncate table table_name 

drop table table_name

truncate是截断的意思,删除的是表中的内容,相对而言效率很高

drop是将表结构和表内容一起删除掉

4.操作表中的数据

添加数据

insert into table_name(column_name,...) values(value1,....);

删除表

delete from table_name where conditions;

修改表

update table_name set column_name = \'xx\',...

复制表

在创建时复制

前提:表中结构和数据类型需要保持一致

create table table_name

as

select column1,...|* from table_old;

在添加时复制

insert into table_name (column1,...)

select column1,...|* from table_old;

5.约束

Oracle中一共包含五中约束

(1)、非空约束

(2)、唯一约束

(3)、主键约束

(4)、外键约束

(5)、检查约束

SQL语句主要从三方面去做:

一、在创建表时进行添加约束

非空约束:not null

主键约束:primary key 

外键约束:references table(column_name),主表和从表之间数据类型必须一致

唯一键:unique

检查约束:check(表达式),表达式即:某个字段的限制条件

二、在修改表时添加约束

添加非空:alter table table_name modify column_name datatype not null;

添加主键约束:alter table table_name add constraint constraint_name primary key(column_name);

添加外键约束:alter table table_name add constraint constraint_name forengn key(column name ) references table(column_name);

添加唯一键约束:alter table table_name add constraint constraint_name unique(column_name);

添加检查约束:alter table table_name add constraint constraint_name check(expression);

三、删除表中的约束

删除非空:alter table table_name modify column_name datatype null;

删除其他的约束:disable|enable constraint constraint_name

drop constraint constraint_name;

附加:要查询某张表中有哪些约束条件

select constraint_name,constraint_type,status from user_constraints where table_name=\'\';

6.查询语句

6.1基本查询语句

select distinct column_name1,... |* from table_name where conditions;

distinct 是去除重复项

1.SQL*plus中设置格式:

column column_name HEADING new_name; column 也可以简写成col

先写这句语句在写查询语句,最后查询出的就是自己定义的new_name ;感觉就是mysql中的as 别名

2.column column_name format dataformat;

直接定义格式,数字格式用9表示一个位。

3.清楚设置的格式

column column_name clear;

6.2 模糊查询

oracle中的模糊查询和mysql也是一致的都是用like 通配符(_,%);_只能表示一个字符,%可以表示0到多个任意字符

6.3 排序

order by desc/asc 和MySQL用法一致

6.4 case ... when的使用

case column_name when value1 then result,...

else result end;

这个就和java中的switch case 差不多,根据值的不同返回出不同的结果

6.5 decode 函数的使用

 decode (column_name,value1,result1,....,defaultvalue);

这个是case ... when 差不多

以上是关于oracle数据库SQL入门的主要内容,如果未能解决你的问题,请参考以下文章

oracle数据库入门sql语句

小白入门之Oracle

Oracle+PL+SQL从入门到精通.丁士锋.清华大学出版社.2012

Oracle数据库入门教程(作者原创)

SQL*Loader数据装载工具入门_超越OCP精通Oracle视频课程培训24

Oracle12c从入门到精通(第二版) PDF 下载