--基于应用性能和管理方面的考虑,最好为不同的用户创建独立的表空间
--(1)创建表空间 (必须是sys/system用户下)
CREATE TABLESPACE user1_tablespace --表空间的名称
DATAFILE 'F:\app\Administrator\oradata\orcl\my.DBF' --数据文件
SIZE 100M --大小
AUTOEXTEND ON NEXT 32M MAXSIZE UNLIMITED --自动扩展32,最大值限制
LOGGING --日志
EXTENT MANAGEMENT LOCAL --管理本地
SEGMENT SPACE MANAGEMENT AUTO --自动管理
--(2)创建用户(指定刚才创建的表空间)
/*CREATE USER user
IDENTIFIED BY password
[DEFAULT TABLESPACE tablespace]
[TEMPORARY TABLESPACE tablespace]*/
create user sqb
identified by aaa
default tablespace user1_tablespace
--(3)登录用户 (必须是sys/system用户下)
角色是具有名称的一组权限的组合
常用系统预定义角色
CONNECT: 连接
RESOURCE: 操作数据库
--DBA:数据库管理员角色,拥有管理数据库的最高权限
/*--分配权限或角色
GRANT privileges or role TO user;
--撤销权限或角色
REVOKE privileges or role FROM user;*/
--命令窗口
--1)授权Connect
Connected as system@ORCL
SQL> grant connect to sqb;
--切换身份登录sqb
SQL> conn sqb/aaa@ORCL;
--创建表
SQL> create table student(id number);
ORA-01031: 权限不足
--(2)还要授权RESOURCE
--切换身份登录system
SQL> conn system/system@ORCL;
SQL> grant resource to sqb;
--切换身份登录sqb
SQL> conn sqb/aaa@ORCL;
--创建表
SQL> create table student(id number);
--命令窗口(只能)
--1)system用户登录 conn system/system@ORCL;
--2)显示当前用户 show user;
--3)显示当前用户所有的表 select * from tab;
--4)显示当前用户所有的表详细信息 select * from tabs
--5)表的结构 desc student;
--撤销权限或角色
REVOKE privileges or role FROM user;
--切换身份登录system
SQL> conn system/system@ORCL;
SQL> revoke connect,resource from sqb;
--切换身份登录system
SQL> conn system/system@ORCL;
SQL> grant connect,resource to sqb;
char(6) -->固定字符串
varchar2(20) -->可变字符串
number(5,2) -->数字(整数,小数点)
--删除表
drop table student;
--创建表
create table student
(
sno char(6) not null,
sname varchar2(20) not null,
sex char(2) ,
sage number(3,0) not null,
sids numeric(18,0),
sseat number(2,0),
saddress varchar2(50)
)
--通过ALTER TABLE命令修改数据库表
--添加一列
--alter table 表名 add (字段名 数据类型,字段名 数据类型);
alter table student add(sdate date)
--修改列
-- ALTER TABLE 表名 MODIFY (字段名 要修改数据类型);
alter table student modify(sname varchar2(30))
--删除一列
-- ALTER TABLE 表名 DROP COLUMN 字段名;
alter table student drop column sdate
--删除多列
--ALTER TABLE 表名 DROP (字段名1,字段名2);
alter table student drop (sids,sseat)
select * from student;
约束名的取名规则推荐采用:约束类型_约束字段
/*主键(Primary Key)约束:如 PK_stuNo
唯一(Unique )约束:如 UQ_stuID
检查(Check )约束:如 CK_stuAge
外键(Foreign Key)约束:如 FK_stuNo */
约束语法:
/*ALTER TABLE 表名
ADD CONSTRAINT 约束名 约束类型 具体的约束说明*/
drop table student;
--学生表
create table student
(
sno char(6) not null,
sname varchar2(20) not null,
sex char(2) ,
sage number(3,0) not null,
sids numeric(18,0),
sseat number(2,0),
saddress varchar2(50),
gid number --数据类型一致
)
--pk_sno (每一张表必须有主键)
alter table student add constraint pk_sno primary key(sno)
-- ck_sex
alter table student add constraint ck_sex check(sex='男'or sex='女')
--ck_age
alter table student add constraint ck_sage check(sage>=18 and sage<=25)
--df_saddress ?(Oracle没有默认约束)
ALTER TABLE student MODIFY saddress default '杭州市西湖区' ;
--其他数据库可以这么写
--alter table student add constraint df_saddress default '杭州市西湖区' for saddress
--uq_sseat
alter table student add constraint uq_sseat unique(sseat)
--fk_gid
alter table student add constraint fk_gid foreign key (gid) references grad(gid)
--年级表
create table grad
(
gid number not null,
gname varchar2(20) not null
)
--年级表的约束
alter table grad add constraint pk_gid primary key(gid)
--删除约束 alter table 表名 drop constraint 约束名
alter table student drop constraint uq_sseat
create table interview(
iyear number(4),
imonth number(1),
amount number(2,1))
--批量添加数据
insert into interview
select 1991,1,1.1 from dual union all
select 1991,2,1.2 from dual union all
select 1991,3,1.3 from dual union all
select 1991,4,1.4 from dual union all
select 1992,1,2.1 from dual union all
select 1992,2,2.2 from dual union all
select 1992,3,2.3 from dual union all
select 1992,4,2.4 from dual;
select iyear,
min(case when imonth=1 then amount end )as m1,
min(case when imonth=2 then amount end) as m2,
min(case when imonth=3 then amount end) as m3,
min(case when imonth=4 then amount end) as m4
from a group by iyear;