目录
1、创建数据库之exists子查询应用
1)用途
if exists (select *from SysdataBase where name="数据库名")
Drop DataBase 数据库名
go
create DataBase 数据库名 create DataBase 数据库名
on
( go
或者 use 数据库名
) go
log on
(
)
go
一种
CREATE DATABASE testDB
ON
( NAME = testDB_dat,
FILENAME = 'D:\test\testDBdat.mdf', --D盘下要有test文件夹
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = testDB_log,
FILENAME = 'D:\test\testDBlog.ldf', --D盘下要有test文件夹
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB );
GO
第二
扩展:
2)用途2
use master
if exists()
begin
语句块
end
use master
if exists(select * from sysdatabases where name = 'testDB')
begin
print '数据库已存在,准备删除'
drop database testDB
end
go
print '创建数据库成功'
create database testDB
use testDB
2、定义创建基本表
sql语言使用动词create定义基本表,其具体语法格式如下;
Create Table <表名>
(<列名><数据类型>[列级完整性约束条件]...[,<列名><数据类型>[列级完整性约束条件]][,<表级完整性约束条件>]);
例如:建立一个学生表Student,它由学号Sno,姓名Sname,性别Ssex,年龄Sage,所在系Sdept这5个属性组成。其中学号不能能为空,值是唯一的(UNIQUE ),并且姓名取值也是唯一。sql命令如下:
Create Table Student
(
Sno Char(5) not null Unique,
Sname Char(20) unique,
Ssex char(2),
Sage int(3),
Sdept char(15)
);
定义表的各个属性时需要指明其数据类型及长度。
smallint半字长二进制整数。
integer或int 全字长二进制整数。
decimal(p[,q])或dec(p[,q]) 压缩十进制数,共P位,其中小数位有q位。0<=q<=p<=15,q=0时可以省略不写。
float 双字长浮点数。
charter(n)或char(n) 长度为n的定长字符串。
varchar(n) 最大长度为n的变长字符串。
graphic(n) 长度为n的定长图形字符串。
vargraphic(n) 最大长度为n的变长图形字符串。
date日期型,格式为YYYY-MM-DD。
time时间型,格式为HH.MM.SS。
timestamp日期加时间。
3、修改基本表
包括增加新列、删除约束、修改数据类型。修改基本表的命令格式如下:
ALTER TABLE <表名>
[ADD<新列名><数据类型>[完整性约束]] //增加新列
[DROP<完整性约束名>] //删除约束
[MODIFY<列名><数据类型>]; //修改数据类型
例如:向Student表增加“入学时间”列Scome,其数据类型为日期型。SQL命令如下:
ALTER TABLE ADD Scome Date;
4、建立索引
建立索引的命令格式如下:
create [unique][Cluster] index<索引名>on<表名>(<列名>[<次序>][,<列名>[<次序>]]...);
其中<次序>可以为ASC(升序,默认)、DESC(降序)。
Unique:每个索引值只对应唯一的数据记录。
Cluster:聚簇索引,即索引项的顺序与表中记录的物理顺序一致。(本人我觉得用不上没有深部去了解)
例如:要在Student表的Sname列上建立一个聚簇索引Stuname,并按升序排列的命令为:
create Cluster index Stuname On Student(Sname);
5、删除索引
删除索引的命令格式如下:
DROP INDEX <索引名>
例如:要删除Student表的索引Stuname,SQL命令如下:
drop index Stuname;
补充课外小知识:
oracle的constraint中有两种约束,都是对列的唯一性限制――unique与primary key,但其中是有区别的:
1、unique key要求列唯一,但不包括null字段,也就是约束的列可以为空且仅要求列中的值除null之外不重复即可;
2、primary key也要求列唯一,同时又限制字段的值不能为null,相当于Primary Key=unique + not null。
创建一个primary key和unique key都会相应的创建一个unique index。
0primary key的语法:alter table table name add constraint key name primary key( columns);
unique key的语法:alter table table name add constraint key name unique( columns);
一个表只能有一个主键,但是可以有好多个UNIQUE,而且UNIQUE可以为NULL值,如员工的电话号码一般就用UNIQUE,因为电话号码肯定是唯一的,但是有的员工可能没有电话。
主键肯定是唯一的,但唯一的不一定是主键;
不要总把UNIQUE索引和UNIQUE约束混为一谈
1、primary key = unique + not null
2、唯一约束和主键一样都是约束的范畴,而且都可以作为外键的参考,不同的是,一张表只能有一个主键
3、主键和唯一约束的创建需要依靠索引,如果在创建主键或唯一约束的时候没有已经建好的索引可以使用的话,Oracle会自动建立一个唯一的索引。