原作者chstone(西兰卡普)
原始出处http://www.hack286.com/
1.SQL常用的命令分类
数据定义语言(Data Definition Language , DDL):create(创建)、alter(更改)、drop(删除)rename 更改名称、truncate 删除表的全部内容;
数据操纵语言(Data Mulipulation Language,DML):insert(插入)、select(选择)、delete(删除)和update(更新)命令。
事务控制语言(Transaction Control ,TC):commit(提交)、savepoint(保存点)和rollback(回滚)命令。
数据控制语言(Data Control Language ,DCL):grant(授予)和revoke(回收)。
创建一张表:
create table myTab(no number(4),name varchar2(20));
创建一个名为myTab的表,包含两列no和name;
alter table myTab modify (name varchar2(25));
修改myTab中的name列,使此列能容纳25个字符;
alter table myTab add (tel_no varchar2(20));
给表myTab增加一列tel_no;
alter table myTab drop column tel_no;
删除表myTab的tel_no列;
drop table myTab;
删除表myTab;
truncate table myTab;
删除表myTab中的所有行(截断表)。不可以回滚。
insert into myTab values(‘001’,’John’);
向表myTab中插入一行数据;
select distinct sal “薪水” from emp where sal>1500 order by sal desc;
选择表中sal大于1500的数据,以别名“薪水”显示并按照sal的降序进行排列输出;
create table empa as select empno,ename,job,sal from emp;
从emp表中选择“empno,ename,job,sal”四列的数据建立新表empa;
create table empa as select * from emp where 1=2;
使用一个假条件根据现有表emp创建一个只包含结构的空表empa;
delete from empa where sal<1500;
删除表empa中sal小于1500的行;
update empa set sal=1500 where sal<1500;
更新,将表empa中sal小于1500的行的sal值全部改为1500。
事务控制语言举例:
commit;
用于提交并结束事务处理;
savepoint mark1;
保存点类似于标记,用来标记事务中可以应用回滚的点;
rollback to savepoint mark1;
回滚到保存点mark1。
创建数据库用户 username
Create user username
Identified by “password”
Default tablespace users
Temporary tablespace temp
Account lock;`
以上语句的意思是创建一个名为“username”的用户,密码为“password”,默认表空间为“users”,临时表空间为“temp”,“Account lock”意思在创建用户时锁定用户。并且当用户被锁定时不能重复锁定。
Grant命令用于为用户分配权限或角色:
Grant connect to username;
允许用户连接数据库并在数据库中创建表或其他对象;
Grant resource to username;
允许用户使用数据库中的空间;
Grant create sequence to username;
允许用户创建序列。
Grant select on emp to username;
用户scott允许用户username查看emp表中的记录;
Grant update on emp to username;
用户scott允许用户username更新emp表中的记录;
Grant all on emp to username;
用户scott授予用户username对emp表的各种权限。
Revoke select,update on emp from username;
收回用户username在emp表中的查看、更新权限;
Alter user username identified by “password”;
修改用户口令;
Alter user username account unlock;
为用户解锁;
Drop user username cascade;
删除用户,当用户拥有模式对象时必须使用cascade选项删除模式对象。
2. Oracle中的伪列
伪列就像Oracle中的一个表列,但实际上它并未存储在表中。伪列可以从表中查询,但是不能插入、更新或删除它们的值。常用的伪列:rowid和rownum。
Rowid:数据库中的每一行都有一个行地址,Rowid伪列返回该行地址。可以使用Rowid值来定位表中的一行。通常情况下,Rowid值可以唯一地标识数据库中的一行。
Rowid伪列有以下重要用途:
1)能以最快的方式访问表中的一行;
2)能显示表的行是如何存储的。
3)可以作为表中行的唯一标识。
如:SQL> select rowid,ename from emp;
Rownum:对于一个查询返回的每一行,Rownum伪列返回一个数值代表的次序。返回的第一行的Rownum值为1,第二行的Rownum值为2,依此类推。通过使用Rownum伪列,用户可以限制查询返回的行数。
如:SQL>select * from emp where rownum<11;
从EMP表中提取10条记录。
oracle 里的decode语句
SELECT bm, DECODE(BM,'1','显示1','2','显示2','其他显示') 转换列 FROM "ATXTDM";