10.表和数据的基本操作
来源:互联网 发布:java零基础多久能学会 编辑:程序博客网 时间:2024/06/05 07:34
-----------------------表和数据的基本操作----------------------
一、表和列的基本操作
1、创建表
SQL> conn scott/scott
Connected.
SQL> create table bttest(t1 varchar2(3),t2 date,t3 number,t4 char(7));
Table created.
SQL> desc bttest;
Name Null? Type
----------------------------------------- -------- ----------------------------
T1 VARCHAR2(3)
T2 DATE
T3 NUMBER
T4 CHAR(7)
VARCHAR2(3)变长字符串——当存储不足指定长度的时候,就存储这些字符,不填充。
CHAR(7)定长字符串——当存储的内容不足7个字节的时候,右边用空格补足。
2、给表添加一列
SQL> alter table bttest add t5 varchar2(6);
Table altered.
SQL> desc bttest;
Name Null? Type
----------------------------------------- -------- ----------------------------
T1 VARCHAR2(3)
T2 DATE
T3 NUMBER
T4 CHAR(7)
T5 VARCHAR2(6)
3、给表添加一个主键——特殊的索引,单独占存储空间的。
不能为空且唯一的标识这个行记录的字段作主键,一般不用有业务含义的字段作主键,
用序列生成一个ID作主键的。
SQL> alter table bttest add constraint PK_BTTEST primary key(t1);
Table altered.
4、修改列的数据类型
SQL> alter table bttest modify t5 number;
Table altered.
SQL> desc bttest;
Name Null? Type
----------------------------------------- -------- ----------------------------
T1 NOT NULL VARCHAR2(3)
T2 DATE
T3 NUMBER
T4 CHAR(7)
T5 NUMBER
注意:如果这个T5列中存储的是字符非1234567890,比如abc。。,这样的转化是报错的。
5、修改表、列的名字
SQL> alter table bttest rename to test;
Table altered.
SQL> desc bttest;
ERROR:
ORA-04043: object bttest does not exist
SQL> desc test;
Name Null? Type
----------------------------------------- -------- ----------------------------
T1 NOT NULL VARCHAR2(3)
T2 DATE
T3 NUMBER
T4 CHAR(7)
T5 NUMBER
SQL> alter table test rename column t5 to t51; (修改列的名字)
Table altered.
SQL> desc test;
Name Null? Type
----------------------------------------- -------- ----------------------------
T1 NOT NULL VARCHAR2(3)
T2 DATE
T3 NUMBER
T4 CHAR(7)
T51 NUMBER
6、删除列
SQL> alter table test drop column t51;
Table altered.
SQL> desc test;
Name Null? Type
----------------------------------------- -------- ----------------------------
T1 NOT NULL VARCHAR2(3)
T2 DATE
T3 NUMBER
T4 CHAR(7)
删除多列
SQL> alter table test drop (t3,t4);
Table altered.
SQL> desc test;
Name Null? Type
----------------------------------------- -------- ----------------------------
T1 NOT NULL VARCHAR2(3)
T2 DATE
7、给表和列添加注释
SQL> comment on table test is 'xxxxxx';
Comment created.
SQL> comment on column test.t1 is 'yyyyyyy';
Comment created.
8、表的删除
SQL> drop table test;
Table dropped.
SQL> desc test;
ERROR:
ORA-04043: object test does not exist
二、DML语句——对数据的操作
SQL语句分类
A 查询语句:select
B DML(data managed language)——insert update delete
C DDL(data defined language)——create alter drop
D DCL(data control language)——grant revoke
1、insert操作
SQL> create table bttest(t1 varchar2(3),t2 date,t3 number,t4 char(7));
Table created.
SQL> insert into bttest values('x11',sysdate,23,'dd');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from bttest;
T1 T2 T3 T4
--- ------------------- ---------- -------
x11 2013-07-15 11:41:24 23 dd
SQL> insert into bttest values('x12',sysdate,23,'dd');
1 row created.
SQL> rollback; --回滚操作
Rollback complete.
SQL> insert into bttest values('x12',sysdate,23,'dd');
1 row created.
SQL> rollback;
Rollback complete.
SQL> select * from bttest;
T1 T2 T3 T4
--- ------------------- ---------- -------
x11 2013-07-15 11:41:24 23 dd
===在oracle中,一个commit或者rollback操作表示一个事务的结束。===
例如:下面是一个事务
SQL> insert into bttest values('x12',sysdate,23,'dd');
1 row created.
SQL> insert into bttest values('x12',sysdate,23,'dd');
1 row created.
SQL> insert into bttest values('x12',sysdate,23,'dd');
1 row created.
SQL> insert into bttest values('x12',sysdate,23,'dd');
1 row created.
SQL> commit;
Commit complete.
2、特殊的insert——表的克隆CAST方式创建表并插入数据
SQL> desc emp;
Name Null? Type
----------------------------------------- -------- ----------------------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
SQL> create table k_emp as select * from emp; 表的结构和其中的数据全部克隆
Table created.
SQL> desc k_emp;
Name Null? Type
----------------------------------------- -------- ----------------------------
EMPNO NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
只克隆结构不克隆数据:
SQL> create table p_emp as select * from emp where 1=2;
Table created.
SQL> select count(1) from p_emp;
COUNT(1)
----------
0
注意:CAST方式创建表,原表中的索引、主外键不会被克隆的。
3、特殊INSERT——从一个表将数据导入另外一个相同的表
SQL> insert into p_emp select * from emp;
14 rows created.
SQL> commit;
Commit complete.
4、update操作
SQL> update p_emp set job='xxxx' where empno=7788;
1 row updated.
SQL> commit;
Commit complete.
SQL> update p_emp set job='yyy',sal=5000 where empno=7369;
1 row updated.
SQL> commit;
Commit complete.
5、delete操作
SQL> delete from p_emp where empno=7788;
1 row deleted.
SQL> commit;
Commit complete.
------------------------------------------------
DDL——truncate操作
SQL> truncate table p_emp; --只能整表将数据删除,而不能删除一部分数据(where)。
不写日志,操作快,数据恢复的话,比较麻烦。
Table truncated.
SQL> select count(1) from p_emp;
COUNT(1)
----------
0
SQL> insert into p_emp select * from emp;
14 rows created.
SQL> commit;
Commit complete.
SQL> delete from p_emp; --这个操作写日志的,操作的过程很慢,数据删除了,也能恢复回来。DML操作。
14 rows deleted.
SQL> commit;
Commit complete.
SQL> select count(1) from p_emp;
COUNT(1)
----------
0
一、表和列的基本操作
1、创建表
SQL> conn scott/scott
Connected.
SQL> create table bttest(t1 varchar2(3),t2 date,t3 number,t4 char(7));
Table created.
SQL> desc bttest;
Name Null? Type
----------------------------------------- -------- ----------------------------
T1 VARCHAR2(3)
T2 DATE
T3 NUMBER
T4 CHAR(7)
VARCHAR2(3)变长字符串——当存储不足指定长度的时候,就存储这些字符,不填充。
CHAR(7)定长字符串——当存储的内容不足7个字节的时候,右边用空格补足。
2、给表添加一列
SQL> alter table bttest add t5 varchar2(6);
Table altered.
SQL> desc bttest;
Name Null? Type
----------------------------------------- -------- ----------------------------
T1 VARCHAR2(3)
T2 DATE
T3 NUMBER
T4 CHAR(7)
T5 VARCHAR2(6)
3、给表添加一个主键——特殊的索引,单独占存储空间的。
不能为空且唯一的标识这个行记录的字段作主键,一般不用有业务含义的字段作主键,
用序列生成一个ID作主键的。
SQL> alter table bttest add constraint PK_BTTEST primary key(t1);
Table altered.
4、修改列的数据类型
SQL> alter table bttest modify t5 number;
Table altered.
SQL> desc bttest;
Name Null? Type
----------------------------------------- -------- ----------------------------
T1 NOT NULL VARCHAR2(3)
T2 DATE
T3 NUMBER
T4 CHAR(7)
T5 NUMBER
注意:如果这个T5列中存储的是字符非1234567890,比如abc。。,这样的转化是报错的。
5、修改表、列的名字
SQL> alter table bttest rename to test;
Table altered.
SQL> desc bttest;
ERROR:
ORA-04043: object bttest does not exist
SQL> desc test;
Name Null? Type
----------------------------------------- -------- ----------------------------
T1 NOT NULL VARCHAR2(3)
T2 DATE
T3 NUMBER
T4 CHAR(7)
T5 NUMBER
SQL> alter table test rename column t5 to t51; (修改列的名字)
Table altered.
SQL> desc test;
Name Null? Type
----------------------------------------- -------- ----------------------------
T1 NOT NULL VARCHAR2(3)
T2 DATE
T3 NUMBER
T4 CHAR(7)
T51 NUMBER
6、删除列
SQL> alter table test drop column t51;
Table altered.
SQL> desc test;
Name Null? Type
----------------------------------------- -------- ----------------------------
T1 NOT NULL VARCHAR2(3)
T2 DATE
T3 NUMBER
T4 CHAR(7)
删除多列
SQL> alter table test drop (t3,t4);
Table altered.
SQL> desc test;
Name Null? Type
----------------------------------------- -------- ----------------------------
T1 NOT NULL VARCHAR2(3)
T2 DATE
7、给表和列添加注释
SQL> comment on table test is 'xxxxxx';
Comment created.
SQL> comment on column test.t1 is 'yyyyyyy';
Comment created.
8、表的删除
SQL> drop table test;
Table dropped.
SQL> desc test;
ERROR:
ORA-04043: object test does not exist
二、DML语句——对数据的操作
SQL语句分类
A 查询语句:select
B DML(data managed language)——insert update delete
C DDL(data defined language)——create alter drop
D DCL(data control language)——grant revoke
1、insert操作
SQL> create table bttest(t1 varchar2(3),t2 date,t3 number,t4 char(7));
Table created.
SQL> insert into bttest values('x11',sysdate,23,'dd');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from bttest;
T1 T2 T3 T4
--- ------------------- ---------- -------
x11 2013-07-15 11:41:24 23 dd
SQL> insert into bttest values('x12',sysdate,23,'dd');
1 row created.
SQL> rollback; --回滚操作
Rollback complete.
SQL> insert into bttest values('x12',sysdate,23,'dd');
1 row created.
SQL> rollback;
Rollback complete.
SQL> select * from bttest;
T1 T2 T3 T4
--- ------------------- ---------- -------
x11 2013-07-15 11:41:24 23 dd
===在oracle中,一个commit或者rollback操作表示一个事务的结束。===
例如:下面是一个事务
SQL> insert into bttest values('x12',sysdate,23,'dd');
1 row created.
SQL> insert into bttest values('x12',sysdate,23,'dd');
1 row created.
SQL> insert into bttest values('x12',sysdate,23,'dd');
1 row created.
SQL> insert into bttest values('x12',sysdate,23,'dd');
1 row created.
SQL> commit;
Commit complete.
2、特殊的insert——表的克隆CAST方式创建表并插入数据
SQL> desc emp;
Name Null? Type
----------------------------------------- -------- ----------------------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
SQL> create table k_emp as select * from emp; 表的结构和其中的数据全部克隆
Table created.
SQL> desc k_emp;
Name Null? Type
----------------------------------------- -------- ----------------------------
EMPNO NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
只克隆结构不克隆数据:
SQL> create table p_emp as select * from emp where 1=2;
Table created.
SQL> select count(1) from p_emp;
COUNT(1)
----------
0
注意:CAST方式创建表,原表中的索引、主外键不会被克隆的。
3、特殊INSERT——从一个表将数据导入另外一个相同的表
SQL> insert into p_emp select * from emp;
14 rows created.
SQL> commit;
Commit complete.
4、update操作
SQL> update p_emp set job='xxxx' where empno=7788;
1 row updated.
SQL> commit;
Commit complete.
SQL> update p_emp set job='yyy',sal=5000 where empno=7369;
1 row updated.
SQL> commit;
Commit complete.
5、delete操作
SQL> delete from p_emp where empno=7788;
1 row deleted.
SQL> commit;
Commit complete.
------------------------------------------------
DDL——truncate操作
SQL> truncate table p_emp; --只能整表将数据删除,而不能删除一部分数据(where)。
不写日志,操作快,数据恢复的话,比较麻烦。
Table truncated.
SQL> select count(1) from p_emp;
COUNT(1)
----------
0
SQL> insert into p_emp select * from emp;
14 rows created.
SQL> commit;
Commit complete.
SQL> delete from p_emp; --这个操作写日志的,操作的过程很慢,数据删除了,也能恢复回来。DML操作。
14 rows deleted.
SQL> commit;
Commit complete.
SQL> select count(1) from p_emp;
COUNT(1)
----------
0
- 10.表和数据的基本操作
- solr indexing 和基本的数据操作
- 数据结构图和图的基本操作
- MySql的基本使用,数据库,表,数据的基本操作
- SQL数据的基本操作(时间和日期)
- SQL数据的基本操作(时间和日期)
- SQL数据的基本操作(时间和日期)
- mongDB的基本操作之数据写入和查询
- MySql数据库的基本操作-表数据的插入和Primary key初步
- SQL数据的基本操作
- 栈的基本数据操作
- Oracle数据的基本操作
- SQLite的基本数据操作
- MySQL 数据的基本操作
- MySQL 数据的基本操作
- MySQL基本操作-数据的操作
- 线性表的构建和基本操作
- 线性表的定义和基本操作
- Android开源项目 "Issue",疑难问题解决方案
- 9.Oracle的关闭
- NYOJ 57 6174问题 2013年8月20日
- ETL 工具下载全集 包括 Informatica Datastage Cognos( 持续更新)
- 解决安装Egit时Egit Mylyn和org.eclipse.team.core报错
- 10.表和数据的基本操作
- 在windows系统中安装hadoop
- java readlock 实例3
- 编译一个空类会默认生成哪些函数?
- getOutputStream() has already been called for this response
- 升华的每一天
- Ubuntu下安装Android Studio
- 早前报道:泛鑫保险美女高管携款5亿元潜逃海外
- 深入学习Make命令和Makefile