创建表
create table tablename( id number(2) primary key, name varchar(10) not null, sex char(5) check(sex='man' or sex='women'), tel number(11) unique, address varchar(30) default 'beijing' ); 增加注释 comment on table tablename is '这是测试表' comment on column tablename.id is '主键id'
删除表
删除数据 delete from tablename 删除表 drop from tablename
修改表
1.增加字段 alter table 表名 add(字段名 字段类型 默认值 是否为空); 2.修改字段 alter table 表名 modify (字段名 字段类型 默认值 是否为空); 3.删除字段 alter table 表名 drop column 字段名;
增
单行添加
insert into 表名( 字段1,字段2,日期) values( 添加1,添加2,(to_date('2012/10/22','yyyy/mm/dd')) );
多行添加
INSERT ALL INTO mytable (字段1, 字段2, 字段3) VALUES (添加1, 添加2, 添加3) INTO mytable (字段1, 字段2, 字段3) VALUES (添加1, 添加2, 添加3) INTO mytable (字段1, 字段2, 字段3) VALUES (添加1, 添加2, 添加3) SELECT * FROM dual;
删
清空表
delete from 表名 where 条件
改
Update 表名 Set 字段名=修改的值,字段名=修改的值, Where 条件;
查
多字段优先排序
select * from 表名 where 条件 order 字段1 desc,字段2 desc;
查询字符转数字最大值,若为空则显示0
SELECT nvl(max(to_number(id)),0) as id from table_name
时间区间内查询
sql语句 select * from message where to_char(结束时间,'yyyymmdd') >= to_char(sysdate,'yyyymmdd') and to_char(开始时间,'yyyymmdd') <= to_char(sysdate,'yyyymmdd'); Mybatis写法 select * from message where to_char(结束时间,'yyyymmdd') >= to_char(sysdate,'yyyymmdd') and to_char(开始时间,'yyyymmdd') <= to_char(sysdate,'yyyymmdd');
定义转义符--escape
select * from where name='/_lisi/_' escape'/'
select * from dual
在Oracle数据库内有一种特殊的表Dual。Dual表是Oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的Select中。Dual表由Oracle连同数据字典一同创建,所有的用户都可以用名称DUAL访问该表。这个表里只有一列DUMMY,该列定义为VARCHAR2(1)类型,有一行值X。从DUAL表选择数据常被用来通过SELECT语句计算常数表达式,由于DUAL只有一行数据,所以常数只返回一次。
用途
1、select计算常量表达式、伪列等值
oracle内部处理使它只返回一行数据,而使用其它表时可能返回多个数据行。
2、查看当前用户
select user from dual;
select count(*) from dual;
3、用做计算器
select 7*9*10-10 from dual;
4、调用系统函数
(1)获得当前系统时间
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
(2)获得主机名
select sys_context('userenv','terminal') from dual;
(3)获得当前locale
select sys_context('userenv','language') from dual;
(4)获得一个随机数
select DBMS_RANDOM.random from dual;
5、查看序列值
(1)创建序列aaa 以1开始,每次加1
create sequence aaa increment by 1 start with 1;
(2)获得序列aaa 的下一个序列值
select aaa.nextval from dual;
(3)获得序列aaa 的当前序列值
select aaa.currval from dual;