Oracle数据库(一)

≡放荡痞女 提交于 2019-11-27 05:05:25
Oracle数据库JDBC连接  Driver   :  oracle.jdbc.driver.OracleDriver  url      :   jdbc:oracle:thin:@localhost:1521:orcl  user    :   xxx  password  :  xxx与MySQL不同的是:oracle需要手动提交事物。安装Oracle时,在口令管理中,需要选择将SCOTT取消√,并且设置密码(敏感Scott用户),
在设置SYS 与SYSTEM密码

-- 1、使用sys管理员创建一个独立的表空间(选中SQL Window选项,在弹出的窗口中编辑)
--  表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。
--所有的数据库对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间
create tablespace tableNameSpace -- 单独的表空间名称
datafile 'D:\LiQiang-Space\oracleTableSpace\tableNameSpace.DBF' -- tableNameSpace表空间所在的路径
size 100m -- tableNameSpace表的大小
autoextend on -- 自动扩容
next 32m maxsize 2048m -- 当满100m,自动增加32m,最大的空间2048m
extent management local;-- 在本地范围内

-- 2、使用sys管理员创建用户
-- 在PL/SQL Developer中,选中User右击new一个新的用户,
--然后填写上你的用户名和密码,default tablespace选择你刚才新建的tablespace temporary tablespace一般默认是TEMP

-- 3、新建好用户之后,选择Role Privileges 按照如图的方式给用户分配权限,最后apply一下,创建用户完成

-- 赋予权限
GRANT privileges or role TO user; #分配权限或角色
REVOKE privileges or role FROM user; #撤销权限或角色

-- 4、使用脚本,创建用户
Create user 用户名
Identified by 密码
Default tablespace users
Temporary tablespace tableNameSpace
Quota unlimited on users;


-- 5、删除用户
Drop user 用户名[cascade]
cascade  将会删除这个用户所拥有的所有对象。

-- 6、Create table
-- 使用新创建的普通用户创建表
create table student
(
  stu_id   number(10) not null,
  stu_name varchar2(20) not null,
  stu_age  number(4),
  stu_sex  char(3)
)
tablespace TABLENAMESPACE -- 表存放在TABLENAMESPACE这个空间
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
  
-- 7、 Add comments to the table 
-- 给表添加注解
comment on table student
  is '学生表';
  
-- 8、Add comments to the columns 
-- 给每一列添加注解
comment on column student.stu_id is '学生ID';
comment on column student.stu_name is '学生姓名';
comment on column student.stu_age is '学生年龄';
comment on column student.stu_sex is '学生性别';

-- 9、在表创建好后,追加主键
alter table student add constraint pk_stuId primary key(stu_id);
--10、创建序列 
create sequence stuId_seq start with 1 increment by 1; 
-- 11、想要stuid自增 自增位置 序列名点nextval就可以得到序列中下一个值作为主键ID了。
insert into test values (stuId_seq.Nextval,'吉利',15,'女');

Oracle 数据库的数据类型:

  整数类型;NUMBER 类型:定义格式 NUMBER (precision,scale),取值范围为【1-38】默认 38,NUMBER 整数部分允许的长度为(precision- scale)。

  关于 number 的精度(p)和刻度(s)遵循以下规则:
    1) 当一个数的整数部分的长度> p-s 时,Oracle 就会报错
    2) 当一个数的小数部分的长度> s 时,Oracle 就会舍入。

  

字符串类型:字符串数据类型还可以依据存储空间分为固定长度类型(CHAR/NCHAR) 和可变长度类型(VARCHAR2/NVARCHAR2)两种.  

  所谓固定长度:是指虽然输入的字段值小于该字段的限制长度,但是实际存储数据时,会先自动向右补足空格后,才将字段值的内容存储到数据块中。这种方式虽然比较浪费空间,但是存储效率较可变长度类型要好。  

  所谓可变长度:是指当输入的字段值小于该字段的限制长度时,直接将字段值的内容存储到数据块中,而不会补上空白,这样可以节省数据块空间。

  CHAR:存储固定长度的字符串,最大长度 2000 bytes
  VARCHAR2 :存储可变长度的字符串 ,最大长度 4000 bytes
  NCHAR 和 NVARCHAR2 :存储 Unicode 字符集类型。
  NCHAR: 最大长度 2000 bytes,NVCHAR2: 最大长度 4000 bytes

注意:varchar2(2) 括号中的2代表的是是2个直接,不是字符,在Windows中,一个汉字占有2个字节,在Unicode中占有3个字节。

注意:
  1. 可以使用 LONG 类型的列来存储 LONG 类型的文本字符串。LONG 数据类型的使用是为了向前兼容的需要。建议使用 LOB 数据类型来代替 LONG 类型。
  2. VARCHAR2 比 VARCHAR 更适合使用,由于兼容性的原因,所以仍然在 Oracle 数据库中保留着VARCHAR 。
  3. 用于存储 raw 类型的二进制数据。最多可以存储 2000B。建议使用 BLOB 来代替它。
  4. 用于存储 raw 类型的二进制数据。最多可以存储 2GB 的数据。建议使用 BLOB 来代替它。
  5. 不建议使用 VARCHAR、 INTEGER、FLOAT、DOUBLE 等类型
  6. DATE:存储日期和时间数据
  7. TIMESTAMP:比 DATE 更精确
  8. BLOB:存储二进制对象,如图像、音频和视频文件
  9. CLOB:存储字符格式的大型对象

Oracle 没有类似 mysql 的 auto increatement 定义自增长,但是可以定义一个序列sequence,然后在插入数据时取序列中的下一个值即可。

 创建序列:

  create sequence 序列名

  start with 1 --初始值为1

  increment by 1 -- 步长为1

  nomaxvalue --无最大值

  cache 10; --在缓存中保存预分配10个值

使用序列:insert into 表名 values(序列名 nextval);-- nextval返回序列的下一个值

查看序列的下一个值:select 序列名 currval from dual; -- dual表示oracle默认的表

查看序列当前的值:select 序列名 nextval from dual; -- dual表示oracle默认的表

修改序列:

  alter sequence 序列名

  increment by 5

  maxvalue 100000

  nocycle

  nocache;

删除序列:drop sequence 序列名;

同事插入多条数据:

  insert into 表名 (字段1,字段2,字段3)

  select '值1',值2,值3 from dual union

  select '值1',值2,值3 from dual union

  select '值1',值2,值3 from dual 

注意:需要提交事物,不然不会保存。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!