20150509
数据库的建立:
创建cracle的新用户:igo,
然后获取igo的相关的权限。
对数据库的完整的操作的所有权限。
用pl/sql登陆的时候。报错:oci.dll无法初始化。
打开首选项发现:之前配置的目录信息已经丢失了。
oracle主目录:G:\JavaSoft\oracle\app\Administrator\product\instantclient_11_2
oci库:G:\JavaSoft\oracle\app\Administrator\product\instantclient_11_2\oci.dll
然后启动正常。
设置权限参考博客http://www.cnblogs.com/shlcn/archive/2011/07/21/2112879.html
设置流程:igo用户有自己的表空间,
cmd命令登入:
sqlplus / as sysdba
创建自己的表空间。
createtablespace igo_data_tablespace datafile 'G:\igo\igo_tablespace\igo.dbf' size50m autoextend on next 50m maxsize 20480m extent management local;
创建成功;可以查看:
select * from dba_data_files;
给这个表空间添加igo用户
alter user igo default tablespace igo_data_tablespace;
给igo赋予操作这个表空间的所有权限:
GRANT CONNECT TO igo;
GRANT RESOURCE TO igo;
GRANT dba TO igo;
建立第一张表:
权限配置表
知识点补充:主键和外键:
1、主键是能唯一的标识表中的每一行,就是说这一列非空且值不重复,可以指定为主键;作用是用来强制约束表中的每一行数据的唯一性;
2、外键是b表中的某一列引用的值来源于a表中的主键列。也是约束b表中的外键列的值必须取致a表中的主键列值,不是其中的值就不能插入b表中。可以形成a表b表的联系,保持数据的约束和关联性。
3、主键、非空、唯一关键字可以参考:
http://www.cnblogs.com/CodingArt/articles/1621921.html
表名 supplier_t |
||||
字段名称 |
类型 |
长度 |
描述 |
是否非空 |
supplier_id |
number(8) |
8位数字 |
供应商编号,从10000开始自动增加; |
主键 |
supplier_name |
varchar2(200) |
200字符 |
供应商的名字 |
非空 |
bank_name |
varchar2(100) |
100字符 |
银行全称 |
|
bank_card |
varchar2(60) |
60字符 |
银行卡号 |
|
supplier_address |
varchar2(240) |
240字符 |
供应商的地址 |
|
supplier_type |
varchar2(20) |
20字符 |
供应商状态/DISABLED/AILABLE |
非空,可以自动置AILABLE |
email_address |
varchar2(60) |
60字符 |
供应商邮件地址;多个以分号隔开 |
|
create_data |
date |
sysdate |
创建日期 |
自动取系统时间 |
--创建供应商信息表的语句。
supplier_id是自动增加的,实现方法可以参考:
http://blog.csdn.net/xiaojunhu/article/details/2213190
实现的功能:供应商的ID信息从10000开始自增。
--创建供应商信息表的语句。
CREATE TABLE supplier_t(
supplier_id NUMBER(8)PRIMARY KEY ,
supplier_name VARCHAR2(200)NOT NULL,
supplier_address VARCHAR2(240),
email_address VARCHAR2(60),
bank_name VARCHAR2(100),
bank_card VARCHAR2(20),
supplier_type VARCHAR2(10)DEFAULT('AILABLE') not NULL,
create_date DATEDEFAULT(SYSDATE)
);
--创建supplier_id自动增加的逻辑
--第一步为 supplier_id建立序列
drop sequence ADD_SUPPLIER_ID;--这个只执行一次,为了保证没有重复的序列
create sequence ADD_SUPPLIER_ID
increment by 1
start with 9999
maxvalue99999999
nocache;
--插入数据
INSERT INTO supplier_t(supplier_id,supplier_name,supplier_address,email_address,bank_name,bank_card,supplier_type)
values(
(ADD_SUPPLIER_ID.NEXTVAL),
'方方国际家私连锁有限公司深圳分公司',
'中国广东省深圳市龙岗区天安云谷B栋北座705',
'hanfangfang@ffjs.com',
'招商银行',
'6224558866885588'
,'AILABLE')
--查询表
SELECT* FROM supplier_t;
--查询序列
select SEQUENCE_NAME,dbas.*fromdba_sequences dbas
WHERE dbas.sequence_nameLIKE 'SUPPLIER_ID%'
--查询触发器
SELECT OBJECT_NAMEFROM DBA_OBJECTS WHERE OBJECT_TYPE='TRIGGER'ANDOWNER='IGO'
--查询序列
SELECT SUPPLIER_ID.NEXTVALFROM dual;
--删除触发器
DROP TRIGGER SUPPLIER_ID
--删除序列
DROP SEQUENCE SUPPLIER_ID
--检查创建是否成功
SELECT to_char(st.create_date,'YYYY/MM/DDHH24:MI:SS'), st.*FROM supplier_t st
--检查这个表属于哪个用户
select* from all_tableswhere all_tables.TABLE_NAME='SUPPLIER_T';
--删除表
drop TABLE IGO.SUPPLIER_T;
20150514追加:
供应商的名字至少是不可以重复的,
那么需要加上限制字段:
参考博客:
http://blog.csdn.net/kobe24shou/article/details/9989217
添加的命令行:
alter table supplier_t add constraint name_uk unique (supplier_name);
如果再次添加名字为空或者名字重复,将无法插入到表中。