创建表:
Create table 表名 ( s_id number(4) , s_name varchar2(10) , s_sex char(2) );
删除表:
Drop table 表名;
重命名表名:
Rename 旧表名 to 新表名 ;
添加列:
Alter table 表名 add ( s_age number(3) );
删除列:
Alter table 表名 drop( S_sex );
修改列:
Alter table 表名 modify(
s_id number(4) default null not null,
s_name varchar2(10) default null not null
);
修改列名:
Alter table 表名 rename column 旧列名 to 新列名 ;
插入表数据的两种书写方式:
1.insert into 表名 (列名) values (值) ;
如:insert into 表名 (s_id) values (0301) ;
2.insert into 表名 values (值) ;
如:insert into 表名 values (0302,’张三’,20) ;
查询列表所有信息:
Select * from 表名 ;
查询一个列表信息(加where条件):
Select * from 表名 where s_id = 302;
修改列表内容:
Update 表名 set s_name = ‘李四’,age = 18 where s_id=301;
删除列表内容:
Delete from 表名 where s_id = 301 ;
求最高分:
Select * from 表名 where grade =(select max(grade) from sc) ;
合一起显示:
Select “concat”(s_id s_name) from sc ;
返回字符的长度:
Select 列名,length(列名) from 表名 ;
大小写转换:
Select upper(‘hello world’),lower(‘HELLO WORLD’),initcap(‘hello world’) from 表名(列名);
四舍五入:
Elsect round(45.567,1) from 表名;//——45.6
Elsect round(45.567,0) from 表名;//——46
Elsect round(45.567,-1) from 表名;//——50
取余:
Select 列名,mod(列名,数值) from 表名;
取整:
Select ceil(1.5) from 表名;//-----2(向上)可用列名
Select floor(1.5) from 表名;//----1(向下)可用列名
查看当前的日期(秒):
select sysdate from 表名;
创建时间列:
Registerdate date default sysdate ;
查看当前时间(毫秒):
Select systimestamp from表名 ;
字符串转日期:
Insert into 表名(列名,列名)values(‘张三’,to_date('1991-12-22','YYYY-MM-DD'));
日期转字符串:
Select to_char(列名,'YYYY"年"MM"月"DD"日" HH24"时"MI"分"SS"秒"')from 表名 ;
空值转换:
1.select nvl(列名,数值) from 表名 ;
2.select nvl2(列名,数值,数值) from 表名 ;(列属性为空选择第二个数值,不为空选一)
模糊查询:
1.Select * from 表名 where 列名 like ‘张%’;查询数据库中有没有姓“张”的
2.Select * from 表名 where 列名 like ‘%张%’;查询数据库中有没有姓名带“张”的
范围值:
1.select * from 表名 where 列名 in (范围 如:‘张伟’,‘张三丰’);在此范围的
2.select * from 表名 where 列名 not in (范围 如:‘张伟’,‘张三丰’);不在此范围的
3. between 范围 如:6000 and 10000 ;
过滤重复:
Select distinct 列名 from 表名 ;
排序:
select * from 表名 order by 列名 desc ;
select * from 表名 order by 列名 asc(不写默认为asc) ;
最大,最小,平均,和,次数:
Select max(列名),min(列名),avg(列名),sum(列名),count(列名或*)from 表名;
内外连接:
Select 列名 列名 from 表名 left join 表名 on 条件等 ;
自连接:
Select a.列名 ,b.列名 from 表名 a ,表名 b 条件等 (同一个表名);
单行子查询:
Select * from 表名 where grade =(select max(grade) from sc) ;
多行子查询:
Select 列名 from 表名 where 列名 in (select 列名 from 表名);
伪列:
1.Select rownum,列名 from 表名 where rownum between 1 and 3 ;--查询123号信息
2.select * from(Select rownum rn,列名 from 表名)where rn between 4 and 5 ;
查询系统当前拥有的账号:
Select username from all_users ;
授予权限:
Grant connect to 用户 ;(connect角色允许用户连接至数据库,并创建对应数据库对象)
Grant resource to 用户 ;(resource 角色允许用户使用数据库的存储空间)
授权所有:
Grant all privileges to 用户名 ;
创建用户:
Create user 用户名 ;
Create user 账号 identified by 密码 ;(创建成功之后需要授权才能使用)
删除用户:
Drop user 用户名 ;
授权视图操作:
grant create any view to 用户名;
创建视图:
Grant view 视图名 as 查询的需要合并的表,例如:
Select student.*,sc from student,sc where student.sno=sc.sno;(不需要加括号,但是要授权之后才能运行)
查看视图:
Select * from 视图名 ;
创建序列:
Create sequence 序列名
Start With i(指定要产生的第一个序列数 (如果该子句被省略,序列从1 开始) )
Increment by j(指定序列号之间的间隔,在这儿 j 是一个整数 (如果该子句 被省略,序列增量为1))
Maxvalue m(指定序列能产生的最大值)minvalue n(指定最小序列值)
Cycie(指定序列在达到它的最大或最小值之后,是否继续产生)
Cache n (定Oracle服务器预先分配多少值,并且保持在内存中(默认 情况下,Oracle服务器缓冲20个值)) ;(以上每项不写均有默认值,不需要了解)
查看用户有哪些序列:
Select* from user_sequences;
删除序列:
Drop sequence 序列名 ;
获取序列当前值:
Select 序列名.currval from dual;
获取序列的下一个值:
Select 序列名.nextcal from dual;`
插入表数据时自动获取序列号(不能重复):
Insect into 表名(编号列名,列名)values(序列名.nextcal,值);
制作表的自增ID:
Creact or replace trigger 取名
Before insert on 表名 (在对XX表执行insert语句之前触发)
For each row (作用到每一行,不写自动默认)
When (new.id is null)(当新的一行的ID字段是空的时候)
Begin
Select 序列名.nextval into:new.id from dual ;
End;
查看约束:
Select * from 系统表 where 系统表名中的列名 = upper(系统表名中的列名);
删除约束:
Alter table 表名 drop constraint 约束名;
检查约束:
Alter table 表名 add constraint 约束取名 check(列名和条件 如:salary >2000);