1.数据查询语言:select
例如:
select * from scott.emp;
2.数据操纵语言(DML,Data Manipulation Language)
包括insert ,update,delete.有时把select也归于此类.DML操作后必须提交(即commit;)才能真正将改变应用到数据库中.
1.insert:
INSERT INTO 表名称 VALUES (值1, 值2,....)
例如:insert into scott.deptvalues(44,'manager','zhuhai');
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
例如:insert into scott.dept(deptno,dname)values(11,'CEO');
2.update:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
例如:update scott.dept set dname='sales' where deptno=11;
3.delete:
删除某行:DELETE FROM 表名称 WHERE 列名称 = 值
例如:delete from scott.dept where deptno = 11;
删除整个表:DELETE FROM table_name或者DELETE * FROM table_name
例如:delete from scott.bonus;
(注意:delete只是删除表中的内容,表的结构仍在,仍可以insert数据.如果是drop则整个表都删除.
另外还有TRUNCATE TABLE table_name.它和delete一样,只是它操作后不能rollback.因为它是DDL会自动提交.而delete是可以rollback的)
3.数据定义语言(DDL Data Definition Language)
包括:create alter,drop,truncate.此类语言不需要commit;会自动提交
1.create:
CREATE TABLE 表名称(列名称1 数据类型,列名称2 数据类型,....);
注意:创建表时也可以指定约束条件或某列的默认值:
例1:CREATE TABLE info(ename varchar2(10),age intDEFAULT 18);
INSERT INTO info(ename) VALUES('arwen');虽然没插入age的值,但默认设为18了.所以相当于你插入arwen,18.如果没指定default则插入arwen,NULL
还有一种创建table的方式是:
CREATE TABLE table_name AS querySQL;--这样只是相当复制另一个表的数据和表结构,不会把表里的约束条件过来.
例如:CREATE TABLE newemp AS SELECT * FROM emp;
数据类型(data_type)规定了列可容纳何种数据类型。下面的表格包含了SQL中最常用的数据类型:
数据类型 | 描述 |
---|---|
integer(size) int(size) smallint(size) tinyint(size) | 仅容纳整数。在括号内规定数字的最大位数。 |
decimal(size,d) numeric(size,d) | 容纳带有小数的数字。 "size" 规定数字的最大位数。"d" 规定小数点右侧的最大位数。 |
char(size) | 容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。 在括号中规定字符串的长度。 |
varchar(size) | 容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。 在括号中规定字符串的最大长度。 |
date(yyyymmdd) | 容纳日期。 |
例如:create table scott.dept2
(
deptno number(2),
dname varchar2(14),
loc varchar2(13)
);
2.alter:
在表中增加一列:ALTER TABLE table_name ADD column_name datatype
例如:alter table scott.dept2 add country varchar2(10);
在表中删除一列:ALTER TABLE table_name DROP COLUMN column_name
例如:alter table scott.dept2 drop column country;
更改某例数据类型:ALTER TABLE table_nameMODIFY column_name datatype
例如:alter table scott.dept2 modify country varchar2(12);
更改表名:alter table scott.dept2 rename to dept3;
更改列名:alter table scott.dept3 rename column country to city;
激活scott用户:alter user scott account unlock;
锁住scott用户:alter user scott account lock;
修改密码:alter user scott identified by arwen;
4.数据控件语言(DCL Data Control Language)
包括grant,revoke.此类语言不需要commit;会自动提交.
1.grant:
赋予连接数据库的权限:grant connect to scott;
赋予查找另一个schema中的表的权限:grant select on OE.orders to scott;
2.revoke:
取消连接数据库权限:revoke connect from scott;
取消查找另一个schema表的权限:revoke select on OE.orders from scott;
5.事物控件语言(TCL Transactional Control Language)
包括commit,rollback,savepoint.
1.commit:
insert into scott.dept values(21,'mgr','hongkong');
commit;
2.rollback:
insert into scott.dept values(22,'mgr','hongkong'); commit;delete from scott.dept where deptno=22;rollback;
(注意:如果insert 语言句没commit;则删除后不能rollback;rollback是回退到上一次commit;也就是说上一次commit之后的所以操作取消.
如果delete之后再commit;也不能rollback删除的数据了)
3.savepoint:
insert into scott.dept values(23,'mgr','hongkong');savepoint one;
insert into scott.dept values(24,'mgr','hongkong');savepoint two;
rollback to savepoint one;
(注意:rollback默认是回退到上一次commit;但如果要回退到上一次commit之后的某个点该怎么办呢.那就用savepoint.另外注意savepoint
只是个临时值,如果commit的话则commit之前的savepoint全部失效.)