(1 ) 注意增加约束时的写法,和ORACLE 略有不同
Oracle :
ALTER TABLE SCHEMA.PREFIX_INFO ADD (
CONSTRAINT PK_PREFIX_INFO PRIMARY KEY (INFO_ID));
PostgresQL :
alter table schema.prefix_info add constraint prefix_info_pkey primary key(info_id);
(2 )系统默认的最大值与ORACLE 不同
Oracle :
CREATE SEQUENCE PREFIX_INFO_SEQUENCE
INCREMENT BY 1
START WITH 582
MINVALUE 1
MAXVALUE 9999999999999999999999999999
NOCYCLE
CACHE 20
NOORDER;
PostgresQL :
CREATE SEQUENCE schema.prefix_info_sequence
increment 1
minvalue 1
maxvalue 9223372036854775807
start 582
cache 20;
(3 )PostgresQL 中的 || 用 法与其他数据库不同:
select a|| b from table1;
当a 或b 其中一个为null 时, 该查询返回null ,
(4 )PostgresQL 中没有concat 函数,且由于|| 用法的问题,无法使用|| 替换,解决 方法为在public schema 中创建函数concat
create or replace function concat(text, text)
returns text as
$body$select coalesce($1,'') || coalesce($2,'')$body$
language 'sql' volatile;
alter funct ......
创建表
create table person (pid int,name varchar2(20) unique,
age int check(age between 0 and 150),sex varchar(4) default '男',tp int,
address varchar(200),constraint person_pid_pk primary key(pid));
插入数据
insert into person values(0011,'刘三姐',25,'男',13930123021,'河北省曲阳县');
创建子表
create table book(bid int primary key not null,bname varchar2(20),bprice number(5,2),pid int,
constraint person_book_pid_fk foreign key(pid) references person(pid));
插入数据
insert into book values(0101,'简爱',7.85,0011);
增加部门50
select * from dept;
insert into dept values(50,'HR','HOUSTON');
在emp中插入新数据
insert into emp(empno,ename,job,sal,mgr,hiredate,comm,deptno)
values(8888,'张三','经理',9000,null,sysdate,null,50);
ROWNUM
查询前五个数据
select rownum,empno,ename,job,sal,hiredate
from emp where rownum<=5;
select * from
查询后五个数据
(select rownum rn,empno,ename,job,sal,hiredate from emp
where rownum <=10 ) temp
where temp.rn>5; ......
综合练习
学生运动会比赛信息数据库
1,运动员sporter(运动员编号sporterid,运动员姓名name,运动员性别sex,所属系号department)
2,项目item(项目编号itemid,项目名称itemname,项目比赛地点location)
3,成绩grade(运动员编号sporterid,项目编号itemid,积分mark)
建表
1,定义各个表的主码外码约束
2,运动员的姓名和所属惜别不能为空值
3,积分要么为空值,要么为6,4,2,0,分别代表第一二三名的和其他名次的积分
运动员表
1001,李明,男,计算机系
1002,张三,男,数学系
1003,李四,男,计算机系
1004,王二,男,物理系
1005,李娜,女,心理系
1006,孙丽,女,数学系
项目表
X001,男子五千米,一操场
X002,男子标枪,一操场
X003,男子跳远,二操场
X004,女子跳高,二操场
X005,女子三千米,三操场
积分表
1001,X001,6
1002,X001,4
1003,X001,2
1004,X001,0
1001,X003,4
1002,X003,6
1004,X003,2
1005,X004,6
1006,X004,4
运动员表:
create table sporter(sporterid number(4) primary key not null,name varchar2(50) not null,
sex varchar2(2) check (sex in('男','女')),department va ......
首先用一个命令赋予user用户connect角色和resource角色:
grant connect,resource to user;
运行成功后用户包括的权限:
CONNECT角色: --是授予最终用户的典型权利,最基本的
ALTER SESSION --修改会话
CREATE CLUSTER --建立聚簇
CREATE DATABASE LINK --建立数据库链接
CREATE SEQUENCE --建立序列
CREATE SESSION --建立会话
CREATE SYNONYM --建立同义词
CREATE VIEW --建立视图
RESOURCE 角色: --是授予开发人员的
CREATE CLUSTER --建立聚簇
CREATE PROCEDURE --建立过程
CREATE SEQUENCE --建立序列
CREATE TABLE --建表
CREATE TRIGGER --建立触发器
CREATE TYPE --建立类型
从dba_sys_privs里可以查到(注意这里必须以DBA角色登录):
select grantee,privilege from dba_sys_privs
where grantee='RESOURCE' order by privilege;
GRANTEE PRIVILEGE
------------ ----------------------
RESOURCE CREATE CLUSTER
RESOURCE CREATE INDEXTYPE
RESOURCE CREATE OPERATOR
RESOURCE CREATE PROCEDURE
RESOURCE CREATE SEQUENCE
RESOURCE CREATE TABLE
RESOURCE CREATE TRIGGER
RESOURCE CREATE TYPE
=== ......
http://www.oracle.com/technology/global/cn/obe/2day_dba/index.html
课程列表
1
管理数据库的要素是什么(没有本章对应的附加资料)
2
安装 Oracle 和构建数据库
3
Oracle Enterprise Manager 数据库控制入门
4
配置网络环境
5
管理 Oracle 例程
6
管理数据库存储结构
7
管理用户和安全性
8
管理模式对象
9
执行备份和恢复
10
监控和调整数据库
......
1. 查看数据的字符集
sqlplus> col parameter format a30
sqlplus> col value format a30
sqlplus> select * from nls_database_parameter
PARAMETER VALUE
------------------------------ --------------------
...
NLS_CHARACTERSET ZHS16GBK
NLS_NCHAR_CHARACTERSET UTF8
...
......