oracle如何创建表以及向表里面添加数据
发布网友
发布时间:2022-04-20 01:38
我来回答
共5个回答
懂视网
时间:2022-04-30 01:57
必须在1–30 个字符之间
必须只能包含A–Z, a–z, 0–9, _, $, 和#
必须不能和用户定义的其他对象重名
必须不能是Oracle 的保留字
Oracle默认存储是都存为大写
数据库名只能是1~8位,datalink可以是128位,和其他一些特殊字符
CREATE TABLE语句
必须具备:
?CREATETABLE权限
?存储空间
必须指定:
?表名
?列名, 数据类型, 数据类型的大小
创建表的列的值的数据类型
SQL> create table test1
2 (tid number,tname varchar2(20));
表已创建。
Default值
l执行insert操作时,可以为其指定默认值
l值、表达式和SQL语句都可以作为默认值
l其他的列名或者是伪列都是非法的
l默认值的类型必须和该列的类型一致
CREATETABLE hire_dates
(id NUMBER(8),
hire_date DATEDEFAULT SYSDATE);
SQL> create table test2
2 (tid number,
3 tname varchar2(20),
4 birthday date default sysdate);
表已创建。
SQL> insert into test2(tid ,tname) values(1,‘Tom‘);
已创建 1 行。
SQL> select * from test2;
TID TNAME BIRTHDAY
---------- -------------------- --------------
1 Tom 27-3月 -12
已选择 1 行。
查询结果作为新的表
使用ASsubquery 选项,将创建表和插入数据结合起来
指定的列和子查询中的列要一一对应
通过列名和默认值定义列
SQL> --创建表;显示员工的月薪,年薪和年收入
SQL> create table empincome
2 as
3 select empno,ename,sal,sal*12 annlsal ,sal*12+nvl(comm,0) income from emp;
表已创建。
SQL> select * from empincome;
EMPNO ENAME SAL ANNLSAL INCOME
---------- ---------- ----- ---------- ----------
7369 SMITH 800 9600 9600
7499 ALLEN 1600 19200 19500
7521 WARD 1250 15000 15500
7566 JONES 2975 35700 35700
7654 MARTIN 1250 15000 16400
7698 BLAKE 2850 34200 34200
7782 CLARK 2450 29400 29400
7788 SCOTT 3000 36000 36000
7839 KING 5000 60000 60000
7844 TURNER 1500 18000 18000
7876 ADAMS 1100 13200 13200
EMPNO ENAME SAL ANNLSAL INCOME
---------- ---------- ----- ---------- ----------
7900 JAMES 950 11400 11400
7902 FORD 3000 36000 36000
7934 MILLER 1300 15600 15600
已选择14行。
alter table语句修改表
使用ALTER
TABLE语句可以:
l追加新的列
l修改现有的列
l删除一个列
SQL> --修改表
SQL> desc test2
名称 是否为空? 类型
----------------------------------------------------------------------------------- -------- --------------------------------------------------------
TID NUMBER
TNAME VARCHAR2(20)
BIRTHDAY DATE
SQL> --追加照片
SQL> alter table test2 add image blob;
表已更改。
SQL> --修改列
SQL> alter table test2 modify tname varchar2(40);
表已更改。
SQL> --删除列
SQL> alter table test2 drop column image;
表已更改。
SQL> --重命名
SQL> alter table test2 rename column tname to username;
表已更改。
SQL> desc test2
名称 是否为空? 类型
----------------------------------------------------------------------------------- -------- --------------------------------------------------------
TID NUMBER
USERNAME VARCHAR2(40)
BIRTHDAY DATE
SQL> host cls
删除表
l数据和结构都被删除
l所有正在运行的相关事物被提交
l所有相关索引被删除
lDROPTABLE
语句不能回滚,但是可以闪回
SQL> --删除表 drop table
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
EMP10 TABLE
EMP20 TABLE
TESTSAVEPOINT TABLE
TESTDELETE TABLE
TEST1 TABLE
TEST2 TABLE
EMPINCOME TABLE
已选择11行。
SQL> drop table test1;
表已删除。
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
EMP10 TABLE
EMP20 TABLE
TESTSAVEPOINT TABLE
TESTDELETE TABLE
TEST2 TABLE
EMPINCOME TABLE
BIN$s9Jekm1bS3KsjXPzlTno6A==$0 TABLE (放入了回收站)
已选择11行。
查看回收站
SQL> --Oracle的回收站
SQL> --查看回收站
SQL> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
TEST1 BIN$s9Jekm1bS3KsjXPzlTno6A==$0 TABLE 2012-03-27:15:30:55
SQL> drop table test2 purge;
表已删除。
清空回收站
SQL> --清空回收站
SQL> purge recyclebin
2 ;
回收站已清空。
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
EMP10 TABLE
EMP20 TABLE
TESTSAVEPOINT TABLE
TESTDELETE TABLE
EMPINCOME TABLE
已选择9行。
通过回收站中的id来查找表
SQL> drop table EMPINCOME;
表已删除。
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
EMP10 TABLE
EMP20 TABLE
TESTSAVEPOINT TABLE
TESTDELETE TABLE
BIN$91xa7gtoQfiGlzbFlex5HQ==$0 TABLE
已选择9行。
SQL> select * from "BIN$91xa7gtoQfiGlzbFlex5HQ==$0";
EMPNO ENAME SAL ANNLSAL INCOME
---------- ---------- ----- ---------- ----------
7369 SMITH 800 9600 9600
7499 ALLEN 1600 19200 19500
7521 WARD 1250 15000 15500
7566 JONES 2975 35700 35700
7654 MARTIN 1250 15000 16400
7698 BLAKE 2850 34200 34200
7782 CLARK 2450 29400 29400
7788 SCOTT 3000 36000 36000
7839 KING 5000 60000 60000
7844 TURNER 1500 18000 18000
7876 ADAMS 1100 13200 13200
EMPNO ENAME SAL ANNLSAL INCOME
---------- ---------- ----- ---------- ----------
7900 JAMES 950 11400 11400
7902 FORD 3000 36000 36000
7934 MILLER 1300 15600 15600
已选择14行。
约束
l约束是表一级的限制
l如果存在依赖关系,约束可以防止错误的删除数据
l约束的类型:
?NOTNULL
?UNIQUE
?PRIMARYKEY
?FOREIGNKEY
?CHECK
约束规则:
用户可以自定义约束,也可以使用Oracle Server的sys_cn格式命名约束
约束创建的时机:
?创建表的时候,同时创建约束
?表结构创建完成后
约束可以定义在列一级,或者是表一级
通过数据字典查看约束
有关外键约束的一些知识:
?FOREIGNKEY:在子表中,定义了一个表级的约束
?REFERENCES:指定表和父表中的列
?ONDELETE CASCADE: 当删除父表时,级联删除子表记录
?ONDELETE SET NULL: 将子表的相关依赖记录的外键值置为null
SQL> create table test3
2 (tid number,
3 tname varchar2(20),
4 gender varchar2(4) check (gender in (‘男‘,‘女‘))
5 );
表已创建。
SQL> insert into test3 values(1,‘Tom‘,‘男‘);
已创建 1 行。
SQL> insert into test3 values(2,‘Tom‘,‘啊‘);
insert into test3 values(2,‘Tom‘,‘啊‘)
*
第 1 行出现错误:
ORA-02290: 违反检查约束条件 (SCOTT.SYS_C005474)
考虑所有约束创建一张表的实例演示
SQL> create table myperson
2 (pid varchar2(18) constraint myperson_PK primary key,
3 pname varchar2(20) constraint myperson_Name not null,
4 email varchar2(20) constraint myperson_Email_U unique
5 constraint myperson_Email_N not null,
6 gender varchar2(4) constraint myperson_Gender check (gender in (‘男‘,‘女‘)),
7 deptno number constraint myperson_FK references dept(deptno) ON DELETE CASCADE
8 );
表已创建。
rowid(行地址指针)
可以通过rowid来访问表中的记录
select rowid,deptno,dname,loc from dept
SQL> /
ROWID DEPTNO DNAME LOC
------------------ ---------- -------------- -------------
AAAM4oAAEAAAAAMAAA 10 ACCOUNTING NEW YORK
AAAM4oAAEAAAAAMAAB 20 RESEARCH DALLAS
AAAM4oAAEAAAAAMAAC 30 SALES CHICAGO
AAAM4oAAEAAAAAMAAD 40 OPERATIONS BOSTON
已选择4行。
SQL> spool off
Oracle学习(9):创建和管理表
标签:oracle 学习笔记 数据库 表
热心网友
时间:2022-04-29 23:05
1:首先打开oracle,在左侧中右击选择新建表。
2:然后选择添加数据,添加完一组数据之后,紧接着还可以添加一组数据,把自己要填写的数据都上传之后就可以了。
3:点击另存为,这个时候会出现一个窗口,出入文件的名字,点击确定即可。
4:在表的下方就会出现一个名为Class的表,这个时候就已经创建好了,如果不行,可以按照上述步骤重新操作,看看是不是哪里出现了问题。
热心网友
时间:2022-04-30 00:23
建立表 和删除表,插入dept语句块,插入EMP语句块
插入EMP语句块;
插入 SALGRADE 语句块,查询部分
扩展资料:
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。
ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。比如SilverStream就是基于数据库的一种中间件。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使用它。
Oracle数据库最新版本为Oracle Database 12c。Oracle数据库12c 引入了一个新的多承租方架构,使用该架构可轻松部署和管理数据库云。此外,一些创新特性可最大限度地提高资源使用率和灵活性,如Oracle Multitenant可快速整合多个数据库,而Automatic Data Optimization和Heat Map能以更高的密度压缩数据和对数据分层。这些独一无二的技术进步再加上在可用性、安全性和大数据支持方面的主要增强,使得Oracle数据库12c 成为私有云和公有云部署的理想平台。
参考资料:百度百科-Oracle数据库
热心网友
时间:2022-04-30 01:57
--建立表 和删除表;
DROP TABLE DEPT;
CREATE TABLE DEPT
(DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
DNAME VARCHAR2(14) ,
LOC VARCHAR2(13) ) ;
--建立表 和删除表;
DROP TABLE EMP;
CREATE TABLE EMP
(EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT);
---插入dept语句块;
INSERT INTO DEPT VALUES
(10,'ACCOUNTING','NEW YORK');
INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS');
INSERT INTO DEPT VALUES
(30,'SALES','CHICAGO');
INSERT INTO DEPT VALUES
(40,'OPERATIONS','BOSTON');
---插入EMP语句块;
INSERT INTO EMP VALUES
(7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
INSERT INTO EMP VALUES
(7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30);
INSERT INTO EMP VALUES
(7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30);
INSERT INTO EMP VALUES
(7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20);
INSERT INTO EMP VALUES
(7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981','dd-mm-yyyy'),1250,1400,30);
INSERT INTO EMP VALUES
(7698,'BLAKE','MANAGER',7839,to_date('1-5-1981','dd-mm-yyyy'),2850,NULL,30);
INSERT INTO EMP VALUES
(7782,'CLARK','MANAGER',7839,to_date('9-6-1981','dd-mm-yyyy'),2450,NULL,10);
INSERT INTO EMP VALUES
(7788,'SCOTT','ANALYST',7566,to_date('12-06-1987','dd-mm-yyyy')-85,3000,NULL,20);
INSERT INTO EMP VALUES
(7839,'KING','PRESIDENT',NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10);
INSERT INTO EMP VALUES
(7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30);
INSERT INTO EMP VALUES
(7876,'ADAMS','CLERK',7788,to_date('13-06-1987','dd-mm-yyyy')-51,1100,NULL,20);
INSERT INTO EMP VALUES
(7900,'JAMES','CLERK',7698,to_date('3-12-1981','dd-mm-yyyy'),950,NULL,30);
INSERT INTO EMP VALUES
(7902,'FORD','ANALYST',7566,to_date('3-12-1981','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMP VALUES
(7934,'MILLER','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,10);
DROP TABLE BONUS;
CREATE TABLE BONUS
(
ENAME VARCHAR2(10),
JOB VARCHAR2(9) ,
SAL NUMBER,
COMM NUMBER
) ;
DROP TABLE SALGRADE;
CREATE TABLE SALGRADE
( GRADE NUMBER,
LOSAL NUMBER,
HISAL NUMBER );
--插入 SALGRADE 语句块;
INSERT INTO SALGRADE VALUES (1,700,1200);
INSERT INTO SALGRADE VALUES (2,1201,1400);
INSERT INTO SALGRADE VALUES (3,1401,2000);
INSERT INTO SALGRADE VALUES (4,2001,3000);
INSERT INTO SALGRADE VALUES (5,3001,9999);
COMMIT;
--查询部分;
select * from emp;
select * from dept;
热心网友
时间:2022-04-30 03:49
这个不用大神,是你太懒了。。。