初始Oracle数据库

Oracle Database,又名Oracle RDBMS,或简称Oracle
是目前世界上流行的关系型数据库管理系统,是目前最流行的C/S或B/S体系结构的数据库之一,它具有系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案
oracle目前是世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系型数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能

解锁oracle中自带sccott用户

第一种
第一步:使用PL/SQL,登录名为system,数据库名称不变,选择类型的时候把Normal修改为Sysdba;

第二步:选择myjob,查看users;

第三步:选择system,右击点击“编辑”;

第四步:修改密码,把“帐户被锁住”的勾去掉;

第五步:点击“应用”再点击“关闭”;

第六步:重新登录就可以通过验证了;

第二种
ALTER USER 用户名(自带一个用户scott) ACCOUNT UNLOCK;

oracle数据库中数据类型

一 、字符串类型

1.1:CHAR类型,定长字符串,会用空格填充来达到其最大长度。非NULL的CHAR(12)总是包含12字节信息。

1.2: NCHAR类型;NCHAR字段最多可以存储2,000字节的信息。它的最大长度取决于国家字符集。

1.3: VARCHAR类型;不要使用VARCHAR数据类型。使用VARCHAR2数据类型。

1.4: VARCHAR2类型;变长字符串,与CHAR类型不同,它不会使用空格填充至最大长度。VARCHAR2最多可以存储4,000字节的信息。

1.5: NVARCHAR2类型;这是一个包含UNICODE格式数据的变长字符串。 NVARCHAR2最多可以存储4,000字节的信息。

二. 数字类型

2.1 NUMBER类型;NUMBER(P,S)是最常见的数字类型,可以存放数据范围为1013010126(不包含此值),需要122字节(BYTE)不等的存储空间。
P 是Precison的英文缩写,即精度缩写,表示有效数字的位数,最多不能超过38个有效数字
S是Scale的英文缩写,可以使用的范围为-84~127。Scale为正数时,表示从小数点到最低有效数字的位数,它为负数时,表示从最大有效数字到小数点的位数。

2.2 INTEGER类型
INTEGER是NUMBER的子类型,它等同于NUMBER(38,0),用来存储整数。若插入、更新的数值有小数,则会被四舍五入。

2.3 浮点数
Oracle 数据库提供了专为浮点数的两种数值数据类型:

BINARY_FLOAT 是 32 位、 单精度浮点数字数据类型。可以支持至少6位精度,每个 BINARY_FLOAT 的值需要 5 个字节,包括长度字节。

BINARY_DOUBLE 是为 64 位,双精度浮点数字数据类型。每个 BINARY_DOUBLE 的值需要 9 个字节,包括长度字节。

2.5 FLOAT类型
FLOAT类型也是NUMBER的子类型。

三. 日期类型

3.1 DATE类型
DATE是最常用的数据类型,日期数据类型存储日期和时间信息。虽然可以用字符或数字类型表示日期和时间信息,但是日期数据类型具有特殊关联的属性。为每个日期值,Oracle 存储以下信息: 世纪、 年、 月、 日期、 小时、 分钟和秒。一般占用7个字节的存储空间。

3.2 TIMESTAMP类型
这是一个7字节或12字节的定宽日期/时间数据类型。它与DATE数据类型不同,因为TIMESTAMP可以包含小数秒,带小数秒的TIMESTAMP在小数点右边最多可以保留9位。

表空间

在Oracle中没有数据库之间的分类,所以就有了表空间
表空间主要是为了整理 分类数据
​ ORACLE创建之初就有一个默认的表空间users

创建表空间的方式:

-- 创建表空间
-- 表空间真实存在,所以要指定路径
-- 分配存储大小
create tablespace tp_Space
datafile 'D:\oracleSpace\tp_Space01.dbf' size 60M;

-- 删除表空间
drop tablespace tp_Space including contents;

-- 赋予新用户权限
grant connect,resource to test;

-- 赋予具体的实体操作权限
grant all on scott.student to test;

序列

在Oracle中我们在创建列没有自增长的属性,但是可以通过创建序列来实现

序列是独立存在的,能够实现自增长的
查询序列 select 序列名 from dual;`–序列

序列是独立存在的,能够实现自增长的

查询序列 select 序列名 from dual;currval (现在的值) nextval(执行下一次的值)

可通过找到sequences进行创建序列
初始Oracle数据库_第1张图片初始Oracle数据库_第2张图片

索引

Oracle中索引分为一下几种:
主键索引 唯一索引 反向键索引 位图索引 大写函数索引

创建索引:

create index index_u_age on student(sage) reverse; --反向键索引

create bitmap index index_u_age on student(sage);--位图索引

create bitmap index index_u_age on student(upper(sid)) ;--函数索引

drop index index_u_age;  --删除索引

PL/sql 编程

declare 
-- 变量
  v_a student.sage%type;
  v_b student.sname%type;
 -- 常量
 c_c constant number(5):=100;
begin
  --直接赋值
  v_a:=10;
  v_b:='Hello';
  
  -- sql语句赋值
  select sname,sage into v_b,v_a from student where sid=2;
  
  dbms_output.put_line('变量的值是'||v_a);
  dbms_output.put_line('变量的值是'||v_b);
end;

/* if判断 */
declare 
    v_a student.sage%type;
begin
 select sage into v_a from student where sid=3;
 if v_a<18 then
    dbms_output.put_line('未成年');
  elsif v_a>18 and v_a<30 then
     dbms_output.put_line('青年');
   elsif v_a>30 and v_a<50 then
     dbms_output.put_line('中年');
    elsif v_a>50 then
     dbms_output.put_line('老年');
  end if;
  dbms_output.put_line(v_a);
end;

/* 循环 */
declare 
   v_a number(4):=1;
begin
 loop
   v_a:=v_a+1;
   dbms_output.put_line(v_a);
   if v_a>10 then
   dbms_output.put_line('今天好冷');
   exit;
   end if;
 end loop;
end;

/* case */
declare 
   v_a number(4):=1;
begin
 case
   when v_a=1 then dbms_output.put_line('周一');
   when v_a=2 then dbms_output.put_line('周二);
   when v_a=3 then dbms_output.put_line('周三');
   when v_a=4 then dbms_output.put_line('周四');
 end case;
end;



-- 游标使用
declare
--定义游标
  cursor cursor_a is select * from student;
  --定义变量
  v_sid student.sid%type;
  v_sname student.sname%type;
  v_sage student.sage%type;
  v_ssex student.ssex%type;
begin
  -- 打开游标
  open cursor_a;
  --提取游标
  loop
  fetch cursor_a into v_sid,v_sname,v_sage,v_ssex;
  -- 使用游标
  dbms_output.put_line(v_sid||v_sname||v_sage||v_ssex);
  exit when cursor_a%notfound;-- 是否有下条数据
  end loop;
  --关闭游标
  close cursor_a;
end;

/*	存储过程 */

-- 存储过程
create procedure add_student
(sid student.sid%type,
sname student.sname%type,
sage student.sage%type,
ssex student.ssex%type,
out_flah out number)
is 
begin
 insert into student values(sid,sname,sage,ssex);
 commit;
 out_flah:=1;
end;
call add_student(10,'史子',29,'男');-- 调用没有返回值的存储过程
declare 
  flag number;
begin
  add_student(13,'邝邝',22,'男',flag);	
  dbms_output.put_line(flag);
end;

你可能感兴趣的:(oracle,数据库,oracle,sql)