Oracle: 二、Oracle用户操作和表操作

内容简介

 1,用户操作。2,表的基本操作。3,表的约束(序列除外)。

 4,创建序列(Sequence)。5,表约束添加删除。

 

技术与环境

操作系统:

windows

语言类别:

SQL之PL/SQL

thankyou: sunshine, 谢谢你的默默付出

数据库:

Oracle

学习软件:

Oracle 10g

课程总策划:

yuanbo

English name:

sunshine

个人主页:

http://www.cnblogs.com/ylbtech/

科研团队:

ylbtech

教研团队:

ylbtech

 

1,用户操作

ylb_tip:

1)只用system才能创建用户,给用户权限。
2)没有数据库,创建用户,登录就可以使用。

--=============================================
-- ylb:Oracle
--1,用户操作
-- 16:08 2011-12-24
--=============================================

Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:\Documents and Settings\Administrator>sqlplus
SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 12月 24 10:34:35 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
请输入用户名:  system
输入口令:
 
连接到:
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
 
SQL> create user ylb identified by m123;
用户已创建。
 
SQL> grant connect,resource to ylb;
授权成功。
 
SQL> connect ylb/m123;
已连接。

SQL> show user;
USER 为 "YLB"

SQL> connect system/m123;
已连接。

SQL> show user;
USER 为 "SYSTEM"

SQL> drop user ylb cascade;
用户已删除。
 
SQL> connect ylb/m123;
ERROR:
ORA-01017: invalid username/password; logon denied

警告: 您不再连接到 ORACLE。
SQL>

 

 

2,表的基本操作
--=============================================
-- ylb:Oracle
--1,表的基本操作(建表,增、查、改、删,清空表,删除表)
-- 16:08 2011-12-24
--=============================================
 
SQL> show user;
USER 为 "SYSTEM"

SQL> create user ylb identified by m123;
用户已创建。
 
SQL> grant connect,resource to ylb;
授权成功。
 
SQL> connect ylb/m123;
已连接。

SQL> show user;
USER 为 "YLB"

SQL> create table users
  2  (
  3  userid number(4) not null,
  4  username varchar(100)
  5  );
表已创建。
 
SQL> desc users;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 USERID                                    NOT NULL NUMBER(4)
 USERNAME                                           VARCHAR2(100)
SQL> insert into users(userid,username) values(101,'zhiMen');
已创建 1 行。
SQL> insert into users values(102,'ylb');
已创建 1 行。
SQL> select * from users;
    USERID
----------
USERNAME
--------------------------------------------------------------------------------
       101
zhiMen
       102
ylb

SQL> insert into users values(103,'xiaoming');
已创建 1 行。
 
SQL> update users set username='xiaoxiao' where userid=103;
已更新 1 行。
 
SQL> select * from users;
    USERID
----------
USERNAME
--------------------------------------------------------------------------------
       101
zhiMen
       102
ylb
       103
xiaoxiao

SQL> delete users where userid=103;
已删除 1 行。
 
SQL> truncate table users;
表被截断。
 
SQL> select * from users;
未选定行
 
SQL> drop table users;
表已删除。
SQL> select * from users;
select * from users
              *
第 1 行出现错误:
ORA-00942: 表或视图不存在

SQL>

 

3,表的约束(除序列外)

ylb_tip:

1,唯一 unique  唯一,可以null。
2,default---在oracle不是约束,是列的属性,所以没有约束名称。

3,外键约束---所有约束中最重要的一个,外键是关系的体现。

  3_1,建表的时候添加主外键约束(主表)。

  3_2,外键产生于主键(外表)。

 

扩展:键的意义?

1,主键的作用?
  防止数据冗余。
2,外键---外键必须产生于主表的主键
  特点1:主表没有的数据,在外表不能添加。
  特点2:外表存在的数据,对应主表主键不能删除,即先删外键,再删主键。

--=============================================
-- ylb:Oracle
--1,主键约束(PK)
--2,非空约束(Not null)
--3,唯一约束(Unique)
--4,检查约束(Check)
--6,外键约束(FK)
--7,序列(Sequence)【专题】这儿不讲
-- 16:08 2011-12-24
--=============================================
 
SQL> connect system/m123;
已连接。
SQL> --1,创建用户
SQL> create user yb identified by m123;
用户已创建。
 
SQL> --2,给用户授权
SQL> grant connect,resource to yb;
授权成功。
 
SQL> --3,切换到用户
SQL> connect yb/m123;
已连接。

SQL> --4,展示当前用户
SQL> show user;
USER 为 "YB"

SQL> --5,主键约束测试
SQL> create table userPK
  2  (
  3  userid number(4) primary key,
  4  username varchar(100)
  5  );
表已创建。
SQL> insert into userPK values(101,'niuJing');
已创建 1 行。
SQL> insert into userPK values(101,'xiaoLiu');
insert into userPK values(101,'xiaoLiu')
*
第 1 行出现错误:
ORA-00001: 违反唯一约束条件 (YB.SYS_C004129)

SQL> --6,唯一约束测试
SQL> create table userUnique
  2  (
  3  userid number(4) not null,
  4  username varchar(100) unique
  5  );
表已创建。
SQL> insert into userUnique values(101,'pengYun');
已创建 1 行。
SQL> insert into userUnique values(102,'pengYun');
insert into userUnique values(102,'pengYun')
*
第 1 行出现错误:
ORA-00001: 违反唯一约束条件 (YB.SYS_C004131)

SQL> --7,检查约束测试
SQL> create table userCheck
  2  (
  3  userid number(4) not null,
  4  sex char(3) check(sex in('男','女'))
  5  );
表已创建。
SQL> insert into userCheck values(101,'男');
已创建 1 行。
SQL> insert into userCheck values(102,'你');
insert into userCheck values(102,'你')
*
第 1 行出现错误:
ORA-02290: 违反检查约束条件 (YB.SYS_C004133)

SQL> --8,默认
SQL> create table userDefault
  2  (
  3  userid number(4) not null,
  4  sex char(3) default('男')
  5  );
表已创建。
SQL> insert into userDefault values(101,'男');
已创建 1 行。
SQL> insert into userDefault(userid) values(102);
已创建 1 行。
SQL> select * from userDefault;
    USERID SEX
---------- ------
       101 男
       102 男
SQL> --9,外键约束,主表是userPK

SQL> create table Orders
  2  (
  3  orderID number(4) not null,
  4  total number(6,2),
  5  userID number(4) references userPK(userID)
  6  );
表已创建。

 

4,创建序列(Sequence)

ylb_tip:

序列与表是两个对象。而sqlserver的identity是列的属性,绑定在列上。

--==========================================
--ylb:Oracle
--1,序列创建实例
--17:23 2011-12-27
--==========================================

SQL> connect yb/m123;
已连接。
SQL> --1,创建序列
SQL> create sequence seq1 start with 100 increment by 1;
序列已创建。
SQL> --2,查看当前序列值
SQL> select seq1.currval from dual;
select seq1.currval from dual
       *
第 1 行出现错误:
ORA-08002: 序列 SEQ1.CURRVAL 尚未在此会话中定义

SQL> create table userSeq
  2  (
  3  userID number(4) not null,
  4  username varchar(100)
  5  );
表已创建。
SQL> insert into userSeq values(seq1.nextval,'weiWei');
已创建 1 行。
SQL> --3,查看表
SQL> select * from userSeq;
    USERID
----------
USERNAME
--------------------------------------------------------------------------------
       100
weiWei

SQL> --4,总结:当我们的序列还没有初始化时,查看当前的序列值是无效的。
SQL> select seq1.currval from dual;
   CURRVAL
----------
       100
SQL> select seq1.nextval from dual;
   NEXTVAL
----------
       101
SQL> --5,删除序列
SQL> drop sequence seq1;
序列已删除。
SQL>

 

5,表约束的添加,删除
--===============================================
--ylb:Oracle
--ylb_munu:表的约束添加
--主键约束(PK)
--非空约束(Not null)
--唯一约束(Unique)
--检查约束(Check)
--默认约束(Default)
--外键约束(FK)
--17:27 2011-12-27
--===============================================
 
SQL> --创建表基本约束
SQL> create table person
  2  (
  3  id number(4) primary key,
  4  name varchar(100) not null,
  5  sex char(3) check(sex in('男','女')),
  6  orderID number(4) unique,
  7  loginDate date default sysdate
  8  );
表已创建。
 
SQL> --1,创建表
SQL> create table person2
  2  (
  3  id number(4),
  4  name varchar(100),
  5  sex char(3),
  6  orderID number(4),
  7  loginDate date
  8  );
表已创建。

SQL> alter table person2 add constraint pk_person2_id  
primary key(id);
表已更改。
SQL> --2,添加检查约束
SQL> alter table person2 add constraint ch_person2_sex 
check(sex in('男','女'));

表已更改。
SQL> --3,添加唯一约束
SQL> alter table person2 add constraint 
un_person2_orderID unique(orderID);
表已更改。
SQL> --4,添加非空约束
SQL> alter table person2 modify name varchar(100) not 
null;
表已更改。
SQL> --5,添加默认约束
SQL> alter table person2 modify loginDate date default 
sysdate;
表已更改。
SQL> --6,创建外表
SQL> create table orders
  2  (
  3  orderID number(4),
  4  total number(6,2),
  5  id number(4)
  6  );
表已创建。
SQL> --7,添加外键约束,主表是person2(id),外表是order
(id)
SQL> alter table orders add constraint 
fk_person2_orders_id
  2  foreign key(id) references person2(id);
表已更改。
SQL>

 

warn 作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted on 2012-08-09 15:25  ylbtech  阅读(2026)  评论(5编辑  收藏  举报