- --学生表
- create table studeng
- (
- stuId varchar2(20) default '10',--default设置默认值
- age varchar2(20) not null,
- sex varchar2(2),
- fk_classid varchar2(20)
- )
- --添加主键
- alter table studeng add constraint pk_stuId primary key (stuId)
- --添加约束
- alter table studeng add constraint ck_stuSex check(sex='男' or sex='女')
- --改为非必填
- alter table studeng modify age null--可为空
- --改为必填
- alter table studeng modify sex not null--不为空
- --添加外间约束
- alter table studeng add constraint fk_classes_id foreign key(fk_classid) references stu_classes(classid);
- CREATE INDEX 索引名 ON 表名 (列名)
- TABLESPACE 表空间名;
- CREATE unique INDEX 索引名 ON 表名 (列名)
- TABLESPACE 表空间名;
- CREATE INDEX 索引名 ON 表名 (列1,列2)
- TABLESPACE 表空间名;
- CREATE INDEX 索引名 ON 表名 (列名) reverse
- TABLESPACE 表空间名;
INSERT INTO employee (id,name,job,birth) VALUES(1002,'LARRY','ANALYST',TO_DATE('1994-10-22','YYYY-MM-DD'));
--更新-->更新LARRY的薪水,注意如果插入数据的时候字母是大写,那么修改的时候也要大写
UPDATE employee SET salary=10 WHERE name='LARRY';
--删除
1.DELETE FROM 表名 WHERE 条件;
2.TRUNCATE TABLE 表名;
注意:
*TRUNCATE和DELETE都能把表中的数据全部删除,他们的区别是:
1、TRUNCATE是DDL命令,删除的数据不能恢复;DELETE命令是DML命令,删除后的数据可以通过日志文件恢复。
2、如果一个表中数据记录很多,TRUNCATE相对DELETE速度快。
由于TRUNCATE命令比较危险,因此在实际开发中,TRUNCATE命令慎用。
注意:DELETE数据恢复步骤
--修改
RENAME employee TO emp ;--将employee表名改成emp
ALTER TABLE employee ADD hiredate DATE DEFAULT sysdate;--为employee增加列,默认值为当前日期
ALTER TABLE employee MODIFY (job VARCHAR2(40) DEFAULT 'CLERK');--修改job列的长度为40,并设置默认值
ALTER TABLE employee DROP (manager);--删除manager列
4.修改Oracle 有数据列的数据类型
方法一:
--创建一样的临时表
create table T_BUSINESS_MODEL_TEMP as select * from T_BUSINESS_MODEL where 1=2 ;
--对临时表改数据类型
alter table T_BUSINESS_MODEL_TEMP modify MODEL_MONEY NUMBER(10,2);
--将原表数据赋值到最新的表中
insert into T_BUSINESS_MODEL_TEMP select * from T_BUSINESS_MODEL;
--删掉原来的表
drop table T_BUSINESS_MODEL;
--将临时表重新命名为原表
alter table T_BUSINESS_MODEL_TEMP rename to T_BUSINESS_MODEL;
--添加原表的约束 (主键,外键,索引)
alter table T_BUSINESS_MODEL
add constraint PK_T_BUSINESS_MODEL primary key (ID);
方法二:
--字段重命名
alter table PROJECT rename column NAME to NAME1;
--把字段名称改成原来的名称
alter table PROJECT add NAME VARCHAR2(300);
--- 赋值
update PROJECT np
set np.name=np.name1;
commit;
--删掉原来重命名的字段
alter table PROJECT drop column NAME1;
个人觉得还是方法二比较好一些!
5.复制表数据
--复制表
create table 新表 as select * from 旧表;--表不存在的情况下,创建表并且复制数据。oralce中表不存在的情况下用此语句。
create table 新表 as select * from 旧表 where 1=2 ;--仅复制表结构
insert into 新表 select * from 旧表;--表存在的情况下,复制数据,oracle中可以用此语句复制数据
insert into 新表(value11,value12..) select value21,balue22 from 旧表;
select value11,value12... into 新表 from 旧表;--表不存在的情况下,创建表并且复制数据,在plsql中直接运行会报错,需要再块中运行。
6.数据库常用语言
在Oracle开发中,客户端把SQL语句发送给服务器,服务器对SQL语句进行编译、执行,把执行的结果返回给客户端。
Oracle SQL语句由如下命令组成:
数据定义语言(DDL),包括CREATE(创建)命令、ALTER(修改)命令、DROP(删除)命令等。
数据操纵语言(DML),包括INSERT(插入)命令、UPDATE(更新)命令、DELETE(删除)命令、SELECT … FOR UPDATE(查询)等。
数据查询语言(DQL),包括基本查询语句、Order By子句、Group By子句等。
事务控制语言(TCL),包括COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。
数据控制语言(DCL),GRANT(授权)命令、REVOKE(撤销)命令。
目前主流的数据库产品(比如:SQL Server、Oracle)都支持标准的SQL语句。
数据定义语言,表的增删改操作,数据的简单查询,事务的提交和回滚,权限的授权和撤销等,Oracle与SQL Server在操作上基本一致。