sql语句分类

来源:互联网 发布:imap4 端口设置 编辑:程序博客网 时间:2024/05/17 01:49

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)容纳日期。

 

补充:实际在oracle中不管是整数还是浮点数都是保存成number类型,所以凡是数值只要知道number类型就行了.其他像

integer, int , smallint, decimal , numberic ,float , real这些东东就不用管了,这些类型是为了兼容其他数据库的类型而出现的.

 

 

例如: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_name MODIFY 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全部失效.)