insert into 表名称[(列名称1,列名称2,…)] values (值1,值2…);
字符串:使用单引号声明,例如:‘sasda’;
数字:直接编写,例如:100;
日期:当前日期(sysdate)、使用to_date()转换
范例:使用完整格式:
insert into myemp(empno,sal,job,comm,ename,mgr,hiredate,deptno) values(8888,6666,'清洁工',10,'张三',7369,TO_DATE('1992-2-21','yyyy-mm-dd'),40);
要针对于数据表中的数据修改的时候可以使用如下的语法完成
update 表名称 set 字段1 = 值 ,字段2 = 值,…[where 更新条件(s)];
在使用更新的时候,where子句里面的内容可以使用in,between…and,like等进行限定查询。
范例:
将Allen的工资修改为SCOTT的工资
update myemp set sal=(
select sal from emp where ename = 'SCOTT')
where ename = 'ALLEN';
范例:
将低于公司平均工资的雇员工资上涨20%
对于软件而言,判断效率的方式就两个:时间复杂度、空间复杂度。
软件的性能运行方式无外乎只有两种:以时间换控空间、以空间换时间。
总结:以后只要是写更新操作,不可能不写WHERE字句。
delete from 表名称 [where 删除条件(s)]
总结:
只有更新操作才会存在事务处理,DDL不支持事务处理,而且在ORACLE里面,如果发生DDL操作,所有未提交的事务都会被自动提交。
两个重要事务处理命令:Commit,RollBack.
取出第一行记录:select rownum *from emp where rownum =1;只能是数字1。
取出前N行记录:select rownum *from emp where rownum <= N;
取出6到10行记录:
select * from(
select * rownum rn from emp where rownum <= 10)temp
where temp.rn > 5;
分页语法
select * from(
select 列,,,,rownum rn
from 表名称,表名称,,,
where rownum <=(currentpage*linesize)order by,,,,)temp
where temp.rn >(currentpage-1)*linesize
整理去重SQL(留最早出入的数据):
Delete from mydept where ROWID not in (
select MIN(ROWID) --max(ROWID)表示留最后出入的数据
from mydept
group by deptno,dname,loc);
常见的数据类型
因为数据表就属于各种类型第一个集合,所以要想创建属于自己的数据表,那么就要先清楚常见的数据类型:
创建表的语法
CREATE TABLE 表名称(列名称 类型 【DEFAULT】);
可以在表中创建多个列名称要用,隔开。
创建一个表:
CREATE TABLE member(
mid NUMBER,
name VARCHAR2(50) DEFAULT'无名氏',
age NUMBER(3),
birthday DATE DEFAULT SYSDATE,
note CLOB
);
所谓表重命名,本质上就是更新一下数据字典中的相应信息。但是数据字典信息是由ORACLE自己维护,此信息修改必需由oracle命令完成,不可以直接update。
命令格式:rename [oldTable] to [newTable]
要清除表的一张数据表的记录,执行DELETE操作,但是在使用DELETE的时候严格来讲,表所占用的资源(约束、索引)并不会被立刻释放掉。
可以rollback,之后在查发现数据还在。
如果想要将数据表所占的全部资源清空,就需要用截断表的操作。
语法是:TRUNCATE TABLE 表名称;
复制表的语法(严格来说这是根据子查询返回的结构在创建数据表,并且将子查询中的数据保存到新的数据表中)
CREATE TABLE 表名称 AS子查询
创建一张只包含有10部门雇员信息的数据表
CREATE TABLE aaa AS SELECT * FROM emp WHERE deptno=10;
创建一张空表
CREATE TABLE emp_20190512 AS SELECT * FROM emp WHERE 1=2; --因为1永远不等于2,所以会产生一张emp的空表,不加where条件就是全部数据和表结构复制为另一张表(备份表)
数据表的删除操作,严格来讲是属于对象的删除,于是语法是 DROP TABLE 表名称;
删除表
DROP TABLE aaa;
数据表的删除操作是比数据删除更为可怕的事情,所有几乎的数据库都不会提供全部删除表的命令。
如果用户执行了DROP TABLE命令,队数据库来说就是表被删除了。
从oracle10g开始引入了闪回(Flash back)技术,这个技术和windows的回收站很像。
当执行数据表删除后并不会立马就真的删了,而是先将数据表保存在回收站中,为了标记出回收站里的内容不是空的,就在表的数据字典上提供
有“BIE”开头的内容。
查看回收站:SHOW RECYCLEBIN;
修改表中数据列,语法:
ALTER TABLE 表名称 MODIFY(
列名称 类型 【DEFAULT 默认值】,
列名称 类型 【DEFAULT 默认值】,...);
将name的长度修改成20,默认值设置为无名氏
ALTER TABLE member MODIFY(name VARCHAR2(20) DEFAULT '无名氏');
删除列,语法
ALTER TABLE DROP COLUMN 列名称;
删除sex列
ALTER TABLE member DROP COLUMN sex;
共6中约束。关键字:CONSTRAINT
1、非空约束:NOT NULL;
示例:1、创建约束:name varchar2(8) NOT NULL;;
2、添加非空约束:ALTER TABLE 表名 MODIFY 字段 NOT NULL;;
3、删除非空约束:ALTER TABLE 表名 MODIFY 字段 NULL;。
异常信息:ORA-01400:无法将NULL插入("登录用户"."用户表名"."表字段")。
2、唯一约束:UNIQUE;
示例:phone number(11) UNIQUE; 或 phone number(11);CONSTRAINT uk_phone UNIQUE (phone);
注意:NULL值(如果允许为NULL)不会受到字段唯一约束限制;
异常信息:ORA-00001:违反唯一约束条件(登录用户.约束对象名 | 登录用户.自定义约束别名(uk_phone)
(约束对象可通过数据字典"user_constraints"查看所属表;
可通过数据字典"user_cons_columns"所属表的字段:SELECT * FROM user_cons_columns;)
)。
3、主键约束(唯一约束 + 非空约束):PRIMARY KEY;
唯一主键示例:id number(11) PRIMARY KEY; 或 CONSTRAINT pk_id PRIMARU KEY (id);
复合主键示例:CONSTRAINT pk_id_name PRIMARU KEY (id, name);
异常信息:同“唯一约束”或“非空约束”异常。
4、检查约束:CHECK;
示例:CONSTRAINT ck_age CHECK (age BETWEEN 0 AND 250);
注意:检查约束是一个个进行过滤的,并发量大情况下,影响性能。
异常信息:查询详情时,同“唯一约束”相同。
5、外键约束:FOREIGN KEY;
示例:CONSTRAINT fk_xid FOREIGN KEY (子表字段) REFERENCES 主表名 (主表字段) [ON DELETE 级联关系(可选)];
注意:子表数据范围,受主表数据的影响。
限制:1、在删除主表前,一定要先删子表。(A、B两表互设外键时,就会遇到无法删除的情况,可用强制删除表:DROP TABLE 表名 CASCADE CONSTRAINT;。强制删除的表会进入Oracle“回收站”);
2、子表外键关联的主表字段,必须设置为主键约束或唯一约束;
3、主表中的数据,在子表中存在外键数据,那么主表的这条数据不允许别删除(可设置级联关系删除)。
设置外键的级联关系:1、级联删除:CONSTRAINT fk_xid FOREIGN KEY (子表字段) REFERENCES 主表名 (主表字段) ON DELETE CASCADE;;
2、级联更新:CONSTRAINT fk_xid FOREIGN KEY (子表字段) REFERENCES 主表名 (主表字段) ON DELETE SET NULL;。
异常信息:ORA-02291:违反完整约束条件(登录用户.约束对象名) - 未找到父项关键字。
6、修改约束:
示例:1、添加约束:ALTER TABLE 表名 ADD CONSTRAINT 自定义约束名cons_id 约束类型UNIQUE (字段) [选项];;
2、删除约束:ALTER TABLE 表名 DORP CONSTRAINT 自定义约束名。
注意:无法增加非空约束NOT NULL,可通过修改表结构添加非空约束:ALTER TABLE 表名 MODIFY(字段 varchar2(n) NOT NULL);;
删除非空约束,要先找到非空约束所在字典中的对象:ALTER TABLE 表名 DROP CONSTRAINT 非空对象SYS_C0011097;。