转载自:http://hi.baidu.com/8023caihaobin/item/c775b61112ea4c543a176ea9
在我的windows 7上面安装上了oracle 11g R2,可谓痛苦,开了oracle的服务电脑变得很慢,安装的时候也麻烦多多
为了做写笔记,这里我总结了一些现在我经常用到的sql语句,高手看了不要见怪,我是初学者,写这个笔记主要是在网上搜索的时候大多都是一样的,最关键是老是不行
我是用myeclipse连接到oracle数据库
以下是总结:
(1)查看oracle的版本:
select version from Product_component_version where SUBSTR(PRODUCT,1,6)='Oracle';
(23)创建数据表:
create table saiTest(userid number not null primary key,uName varchar2(50) not null,uPassword varchar2(50) not null);
(3)查看表字段:
select column_name,data_type,data_length,nullable from user_tab_columns where table_name = upper('saiTest');
网上很多都没有upper,所以之前总是查不到,在PLSQL和myeclipse都不行
当然也可以全部查出来,根据需要筛选要看的字段
select * from user_tab_columns where table_name = upper('saiTest');
(4)插入数据
insert into saiTest values ('1','king','123456');
(5)修改数据
update saiTest set uName = 'queen' where userId = 1;
(6)增加列
alter table saiTest add uImg varchar2(50);
如果增加列的时候数据表已经有内容了,新增的列不能设置为非空,不然会报错
(7)修改列
为了测试,先增加一列
alter table saiTest add uMessage number;
修改
alter table saiTest modify uMessage varchar2(50);
(8)删除列
alter table saiTest drop column uImg;
(9)添加/修改表的注释
comment on table saiTest is '存放雇员信息';
查看表的注释:
select * from user_tab_comments where table_name = upper('saiTest');
(10)为数据表的列添加注释:
comment on column saiTest.userId is '用户id';
comment on column saiTest.uName is '用户名';
comment on column saiTest.uPassword is '用户密码';
comment on column saiTest.uImg is '用户头像';
select * from user_col_comments where table_name = upper('saiTest');
(11)查看有哪那些表
select table_name from user_tables;
(12)分页语句
先在表中插入多几条数据
SELECT * FROM (SELECT saiTest.*, ROWNUM RN FROM (SELECT * FROM saiTest ) saiTest WHERE ROWNUM <= 3 ) WHERE RN >= 1
把3和1换成自己需要的数字
(13)查出倒叙的第一条
select * from (select * from saiTest order by userId desc) where rownum = 1;
(14)查出数据库的系统时间
select sysdate from Saitest where rownum = 1;
(15)自动增长
在mysql、sql server中可以设置列的值自动增长,然后将这个字段作为主键,但是oracle没有这个自动增长的功能,因此要用到sequence
创建sequence:
create sequence seq_test
minvalue 1
maxvalue 99999999999999999
start with 1
increment by 1
cache 20
nocycle
order;
minvalue 1:最小值为1
maxvalue 99999999999999999:最大值为99999999999999999
start with 1:从1开始
increment by 1:每次加1
cache:ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些
nocycle:一直加下去
先把saiTest得内容全部删除
delete from saiTest;
insert into saiTest values (seq_test.nextval,'auto','123456');
insert into saiTest values (seq_test.nextval,'hehe','123456');
seq_test:sequence的名字
(16)查看用户的sequence
select * from user_sequences where sequence_name=upper('seq_test');
(17)查看当前用户拥有的权限
select * from user_role_privs;
(18)查看当前用户当前会话的权限
select * from session_privs;
(19)修改表名
rename saiTest to myTest;