Oracle中的SQL语句(此篇重点介绍DDL)

1.什么是SQL语言?
SQL=Structured Query Language结构化查询语言,是数据库操作标准语言(Hibernate中的HQL,实质还是会转化为相应数据库平台的SQL语句),我们现在所用的sql语句属于第四代SQL语言,第一代是机器语言,第二代是汇编,第三代是c/c++/java,第四代是非过程语言,没有那么多分支,循环
2.SQL语言的四大类操作:DDL/DML/DCL/TCL语句
(1)数据定义(DDL)
用于定义SQL模式,基本表,视图,和索引的创建与撤销
(2)数据操纵(DML)
也就是常用的查询和更新操作,具体便是增删改查
(3)数据控制(DCL)
包括对基本表和视图的授权,完整性规则的描述
(4)事务控制(TCL)
设置保存点,回滚事务及提交事务等操作
3.DDL操作
创建表:
create table teacher
( id number(10),
name varchar2(20 char),
sex number(1),
age number(10),
primary key(id)
)
注意:这里有两个类型得做以下比较:
a.varchar和varchar2的区别:
varchar 存放固定长度的字符数据,最长2000个字符。
varchar2 存放可变长字符数据,最大长度为4000字符。,最大長度為4000字符。
varchar 是标准sql提供的数据类型。
varchar2 是oracle提供的独特的数据类型。
oracle保证在任何版本中该数据类型向上和向下兼容,但不保证varchar。
总之,如果想新版本的数据库兼容就不要用varchar,如果想和其他数据库兼容就不要用varchar2。
varchar2,需要指定是byte还是char,默认是byte。
b.number和int的区别:
oracle本来就没有int类型,为了与别的数据库兼容,新增了int类型作为number类型的子集。
int类型只能存储整数;
number可以存储浮点数,也可以存储整数;
number(8,1)存储小数位为1位,总长度为8的浮点数,如果小数位数不足,则用0补全;
number(8)存储总长度为8的整数;
int相当于number(22),存储总长度为22的整数。
删除表:
DROP TABLE PERSON;
如果我们仅仅需要删除表内的数据,则用截断:
truncate table teacher2;
ALTER语句
用于添加、删除、修改列
alter table teacher add card varchar2(18 char);
alter table teacher drop column sex;
alter table teacher modify card varchar2(18 byte);
alter table teacher rename to teacher2;(给表重命名)
约束语句
在SQL中有如下约束:
NOT NULL:非空约束
在create table时,在字段后面加not null,或者通过alter指定:
alter table teacher2 modify age not null;

UNIQUE:唯一性约束
在create table时,可以写上:
constraint cname unique(id),或者通过alter指定:
alter table teacher2 add constraint uk1 unique(name);
alter table teacher2 drop constraint uk1;

PRIMARY KEY:主键约束
在create table时,可以写上:
constraint pname primary key(id),或者通过alter指定:
alter table teacher2 add constraint pk1 primary key(id);

FOREIGN KEY:外键约束
在create table时,可以写上:
constraint fkname foreigh key(w_id) references waibiao(id),或者通过alter指定:
alter table teacher2 add constraint t_fk1 foreign key(dogid)
REFERENCES dog(id);

CHECK:检查约束
含义:如果对单个列定义check约束,那么该列只运行特定的值,先约束,再写数据
alter table teacher2 add constraint t_c check(sex in(‘男’,‘女’));

DEFAULT:默认约束
含义:如果没有规定其他的值,会将默认值添加到新记录
在create table时,可以在字段后加上:default 默认值,或者通过alter指定:
alter table student modify name default ‘none’;
添加索引
在不读取整个表的情况下,索引使数据库应用程序可以更快地查到数据,用户无法看到索引,它们只能被用来加速搜索查询。更新一个包含索引的表(这里是指增加记录)要比更新一个没有索引的表所花的时间更长,因为索引表,也需要更新维护。因此,理想的做法是,仅仅在常常被搜索的列上创建索引。当然也可以给多个列设置索引。(一般创建表时id列默认已经添加索引了)
create index name_index on teacher2(name);
create index name_index on teacher2(name,age);(多个列用逗号隔开)
如何实现字段自增
通过创建序列的方式,实现自增,但是在插入的时候,要指定这个序列,很麻烦(后面通过存储过程来实现自增)
首先定义一个序列:
create SEQUENCE seq_teacher2
minvalue 1
start with 1
increment by 1
cache 100;
怎么来测试这个序列是否是自增呢?由于oracle里的select语句都必须有from,因此可以用虚拟表dual来代替from后的具体表,多次执行以下语句,可以看到自增:
select seq_teacher2.nextval from dual;
如果想要id字段自增,插入数据时,id字段不能不写,而是要写成seq_name.nextval,其实这样也很麻烦。

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页