Oracle 11g(一)DDL语言--create语法
一、创建用户系列操作
1、create user
create user amidiu identified by 000000;
注:密码是大小写敏感的
identified by 是设置密码的关键字
2、赋予权限使其能进行登陆
grant connect, resource, dba to amidiu; --connect 链接数据库权限,可以对数据库进行增删改查 --resource 资源使用权限,用来创建表格 --dba 数据库管理权限
3、修改用户密码
alter user amidiu identified by amidiu; --identified by 后面接上新的密码
4、收回权限
revoke connect, resource, dba from amidiu; --revoke 回收
5、给用户加锁解锁
alter user amidiu account lock; alter user amidiu account unlock;
6、删除用户
删除时要保证当前登录的用户不是要删除的用户,否则无法删除。
drop user amidiu;
二、创建数据库
create database dbname; --查询所有的数据库: select * from v$database;
结果如下:
Oracle中无法直接执行 create database 语句创建数据库,需要创建新的Oracle实例(可以使用DBCA创建)。
DBCA可以参考:https://blog.csdn.net/qq_27324763/article/details/79795431
三、创建表空间
create tablespace test_tablespace datafile 'd:\test.dbf' size 100M; --在D盘创建一个test.dbf文件用来存储表空间,表空间大小是100M。
结果如下:
注:创建表空间后,需要把表空间赋给相应的用户
--然后创建一个用户demo,并将它的默认表空间设成test_tablespace: create user demo identified by demo default tablespace test_tablespace; --将全局表空间权限赋给用户 demo: grant unlimited tablespace to demo;
四、创建表
1、基本建表语句
create table Persons( PersonID int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) );
2、约束
(1)SQL CREATE TABLE + CONSTRAINT 语法
CREATE TABLE table_name ( column_name1 data_type(size) constraint_name, column_name2 data_type(size) constraint_name, column_name3 data_type(size) constraint_name, .... );
这里的 constraint_name 可以是以下六个约束:
not null - 指示某列不能存储 NULL值 (一种写法);
unique - 保证某列的每行必须有唯一的值 (三种写法);
primary key - 非空且唯一 (三种写法);
foreign key - 保证一个表中的数据匹配另一个表中的值的参照完整性 (三种写法);
check - 保证列中的值符合指定的条件 (三种写法);
default - 给列赋值时的默认值 (一种写法)
--NOT NULL、UNIQUE、PRIMARY KEY create table Persons( P_ID int NOT NULL PRIMARY KEY, LastName varchar(255) NOT NULL, FirstName varchar(255) UNIQUE, Address varchar(255), City varchar(255),
UNIQUE(LastName), --定义多个列是UNIQUE约束: CONSTRAINT uc_PersionID UNIQUE(P_id, LastName) );
--创建外键FOREIGN KEY create table Orders( O_id int NOT NULL, OrderNo int NOT NULL, P_id int foreign key references Persons(P_id) --FOREIGN KEY (P_id) REFERENCES PERSONS(P_is) --CONSTRAINT fk_PerPrders FOREIGN KEY (P_id) REFERENCES Persons(P_id) )
--check约束 create table Persons( P_id int NOT NULL CHECK (P_id > 0), LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255)
--CHECK(P_id > 0)
--CONSTRAIN ck_Persons CHECK(P_id > 0) )
--DEFAULT约束 create table Persons( P_id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) DEAFULT 'Sandnes' ) --使用类似 GETDATE()这样的函数,DEFAULT 约束也可以用于插入系统值 create table Orders( O_id int NOT NULL, OrderNo int NOT NULL, P_id int, OrderDate date DEFAULT GETDATE() )
3、自增--SEQUENCE
必须通过 SEQUENCE对 创建 auto-increment 字段(该对象生成数字序列)
create SEQUENCE seq_person MINVALUE 1 START WITH 1 --以起始 INCREMENT BY 1 --以递增 CACHE 10 --规定了为了提高访问速度要存储所少个序列值
--要在"Persons" 表中插入新记录,必须使用nextval 函数 --(该函数从seq_person 序列中取回下一个值): INSERT INTO Persons (P_ID, FirstName, LastName) VALUES(seq_person.nextval, 'Linda', 'Mary');
五、创建索引
1、创建简单的索引,允许使用重复值
--创建可重复索引语法: create index index_name on table_name(column_name)
2、创建唯一的索引,不允许使用重复的值
--创建唯一索引语法: create unique index index_name on table_name(column_name)
普通索引 查到符合条件的项后会继续查找下一项,如果下一项不符合再返回;
唯一索引 则是查到符合条件的项后就直接返回。