oracle数据库总结大全

来源:互联网 发布:淘宝降权会有提示吗 编辑:程序博客网 时间:2024/05/22 03:22
学院   专业   班级   课程    学籍   成绩


数据库名称:学生库


1》学院表:关键字段:学院编号,学院名称   关系:学院编号为主键


2》专业表:关键字段:专业编号,专业名称  学院编号     关系:专业编号是主键   学院编号是学院表的外键


3》班级表:关键字段:班级编号,班级名称,专业编号   关系:班级编号是主键  专业编号是专业表的外键


4》课程表:关键字段:课程编号,课程名称, 关系:课程编号是主键


5》学籍表:关键字段:学号,姓名,性别,学院编号专业编号,班级编号 关系:学号为主键  
                                       
                                         学院编号为学院表的外键


                                         专业编号为专业表的外键


                                         班级编号为班级表的外键


6》成绩表:关键字段:学号,课程编号,分数,学期   关系:(学号,课程编号) 为主键 学号为学籍表的外键


                                          课程编号为课程表的外键


学院表
create table xueyuanbiao
(
    xy_xybh  char(2) not null primary key,
    xy_xymc  char(8) not null,
    xy_yz    char(6),
    xy_sj    char(6),
    xy_xyjs  varchar(300)
)
专业表
create table zhuanyebiao
(
     zy_zybh char(2) not null primary key,
     zy_zymc char(20) not null,
     // zy_xybh char(2) not null,     学院表为外键
     zy_xybh char(2) not null constraint fk_xybh foreign key references xy_xybh,
     zy_xyjs varchar(300)
)


班级表
create table banjibiao
(
     bj_bjbh char(4) identity(1,1) primary key,
     bj_bjmc char(12) not null,
     //bj_zybh char(2) not null,     专业表外键
     bj_zybh char(2) not null constraint fk_zybh foreign key references zy_zybh,
     bj_bz   char(6),
     bj_xxwy char(6)
)


课程表
create table kechengbiao
(
     kc_kcbh  char(2) not null primary key,
     kc_kcmc  char(10) not null,
     //kc_lb    char(2) not null,
     kc_lb char(2) not null constraint ck_lb check (类别>='01' and 类别<='04'),
     kc_xf    decimal(4,0),
     kc_kcjs  varchar(300)
)


学籍表
create table xuejibiao
(
     xj_xh char(6) identity(1,1) primary key,
     xj_xm char(8) not null,
     xj_xb char(2),
     //xj_xybh char(2) not null,  学院表的外键
     xj_xybh char(2) not null constraint fk_xybh1 foreign key references xy_xybh,
     //xj_zybh char(2) not null,专业表的外键
     xj_zybh char(2) not null constraint fk_zybh1 foreign key references zy_zybh,
     //xj_bjbh char(4) not null,  班级表的外键
     xj_bjbh char(4) not null constraint fk_bjbh1 foreign key references bj_bjbh,
     //xj_zt  char(2)  1,2,3
     xj_zt char(2) default '01' constraint ck_zt check(状态>='01' and 状态<='03'),
     xj_sfzh char(18)


)


成绩表
create table chengjibiao
(
    //cj_xh char(6) not null,    学籍表的外键
    //cj_kcbh char(2) not null,   课程表的外键
    //cj_fs   decimal(6,1) not null,  0-100之间
    //cj_xq  char(2) 
 
    cj_xh char(6) not null constraint fk_xh1 foreign key references xj_xh,
    cj_kcbh char(2) not null constraint fk_kcbh1 foreign key references kc_ckbh,
    cj_fs decimal(6,1) not null constraint ck_fs check (分数>=0 and 分数<=100),
    cj_xq char(1),
    constraint pk_xh_kcbh primary key(xh,kcbh)
)


sql语句的种类
 
数据查询语言DQL    select


数据定义语言DDL    create,drop,alter


数据操纵语言DML    insert,update,delete


数据控制语言DCL    gtant,revoke


Select    基本语法
SELECT 字段列表     /*查什么*/
FROM 表名           /*从哪查*/
WHERE …            /*查的条件*/
GROUP BY ...        /*查询结果分组*/
ORDER BY ...        /*查询结果排序*/


select 2+3*3 from dual;     数值计算


select sysdate from dual;    查询日期


set pagesize 100;   显示多少行


set linesize 100;   显示页面的间距


数据记录功能:


使用SPOOL 命令记录操作内容。


   步骤1:执行命令:


   spool c:\text


   步骤2:执行命令:


   select * from emp;


   步骤3:执行命令:


   select * from dept;


   步骤4:执行命令:
   spool off


   步骤5:用记事本打开C:\test.lst 并查看内容:




 SET HEADING ON/OFF:打开/关闭查询结果表头的显示,默认为ON。
 SET FEEDBACK ON/OFF:打开/关闭查询结果中返回行数的显示,默认为ON。
 SET ECHO ON/OFF:打开/关闭命令的回显,默认为ON。
 SET TIME ON/OFF:打开/关闭时间显示,默认为OFF。


Oracle 常用的表字段数据类型有:
CHAR:固定长度的字符串,没有存储字符的位置,用空格填充。
VARCHAR2:可变长度的字符串,自动去掉前后的空格。
NUMBER(M,N):数字型,M 是位数总长度,N 是小数的长度。
DATE:日期类型,包括日期和时间在内。
BOOLEAN: 布尔型,即逻辑型。


desc/describe 表名;   查询表的结构


create table 表名(列名) as SQL查询语句     //创建一个新表,并且把查询的结构数据插入到新表里面




drop table 表名;    删除表


delete table 表名;    删除表里面的数据


truncate table 表名;   清空表


rename 旧表名 to 新表名;


select object_name from user_objects where object_type='TABLE';  //显示当前用户的所有表






数据完整性和约束条


 数据完整性约束


 表的五种约束


    主键(primary key)


    非空(not null)
 
    唯一(unique)


    检查(check)


    外键(foreign key)
 
  约束条件的创建


  查看约束条件


  使约束生效和失效


1.主键(primary key)
  
  主键约束的语法如下:


    [CONSTRANT 约束名] PRIMARY KEY ——列级
    [CONSTRANT 约束名] PRIMARY KEY(列名1,列名2,…) ——表级


2.非空(not null)


    [CONSTRANT 约束名] NOT NULL ——列级


3.唯一(unique)


    惟一约束的语法如下:


    [CONSTRANT 约束名] UNIQUE ——列级
    [CONSTRANT 约束名] UNIQUE(列名1,列名2,…) ——表级


4.检查(check)


    [CONSTRANT 约束名] CHECK(约束条件) —-列级,约束条件中只包含本列
    [CONSTRANT 约束名] CHECK(约束条件) -—表级,约束条件中包含多列


5.外键(foreign key)


    外键约束的语法如下:


    第一种语法,如果子记录存在,则不允许删除主记录:
    [CONSTRANT 约束名] FOREIGN KEY(列名1,列名2,…)
           REFERENCES 表名(列名1,列名2,...)


    第二种语法,如果子记录存在,则删除主记录时,级联删除子记录:
    [CONSTRANT 约束名] FOREIGN KEY(列名1,列名2,...)
     REFERENCES 表名(列名1,列名2,...) On delete cascade


    第三种语法, 如果子记录存在,则删除主记录时,将子记录置成空:
    [CONSTRANT 约束名] FOREIGN KEY(列名1,列名2,…)
    REFERENCES 表名(列名1,列名2,...) On delete set null 


约束条件的创建


   CREATE TABLE 表名
   (列名数据类型[DEFAULT 表达式][COLUMN CONSTRAINT],…
    [TABLE CONSTRAINT]
    );


commit;   提交


rollback;   回滚


使约束条件失效:


   ALTER TABLE 表名DISABLE CONSTRANT 约束名;


使约束条件生效:


   ALTER TABLE 表名ENABLE CONSTRANT 约束名;


增加新列
    增加新列的语法如下:


     ALTER TABLE 表名
            ADD 列名数据类型[DEFAULT 表达式][COLUMN CONSTRAINT];


    如果要为表同时增加多列,可以按以下格式进行:


    ALTER TABLE 表名
            ADD (列名数据类型[DEFAULT 表达式][COLUMN CONSTRAINT]...);


alter table 出版社
    add 电子邮件varchar2(30) check(电子邮件like '%@%');


修改列的语法如下:
      ALTER TABLE 表名
          MODIFY 列名数据类型[DEFAULT 表达式][COLUMN CONSTRAINT]


    如果要对表同时修改多列,可以按以下格式进行:
      ALTER TABLE 表名
          MODIFY(列名数据类型[DEFAULT 表达式][COLUMN CONSTRAINT]…);




INSERT INTO 表名(字段列表) SELECT (字段名1,字段名2,…) FROM 另外的表名;   从另外的表复制数据




--创建一个新表manager
Create table manager
       as select empno,ename,sal from emp where job=’MANAGER’;


--从emp 表拷贝数据到manager
   Insert into manager
         Select empno,ename,sal
                             From emp
                                    Where job=’CLERK’;
Select * from manager;


SET AUTOCOMMIT ON/OFF    设置是否自动提交155505577231


savepoint   建立保存点


update emp set sal=sal+100 where empno=7788;    根据条件更新数据


Select distinct job from emp;      消除重复行


select ename,sal from emp order by sal;   升序排序


select ename,sal from emp order by sal desc;    降序排序


select ename,sal from emp order by deptno,sal;   多列排序


select * from emp where (deptno=10 or deptno=20) and sal<1500;   三个条件


select * from emp where sal between 1000 and 2000;     在什么什么之间


select * from emp where job in ('SALESMAN','CLECK','MANAGER');     选择范围


select * from emp ename like 'S%';    模糊查询


--显示雇员的名称和所在的部门的编号和名称
Select emp.ename 姓名,emp.deptno 部门编号,dept.dname 部门名称
From emp,dept
Where emp.deptno=dept.deptno;




--查询部门10 和部门20 的所有职员
select deptno,job from emp where deptno=10
union
select deptno,job from emp where deptno=20;




startup force;   强制打开数据库
原创粉丝点击