Oracle 11g(一)DDL语言--create语法

Posted on 2021-07-27 10:57  MissRong  阅读(503)  评论(0编辑  收藏  举报

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)

普通索引 查到符合条件的项后会继续查找下一项,如果下一项不符合再返回;
唯一索引 则是查到符合条件的项后就直接返回。

Copyright © 2024 MissRong
Powered by .NET 8.0 on Kubernetes