学院 专业 班级 课程 学籍 成绩 数据库名称:学生库 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; 强制打开数据库
oracle数据库学科总结,oracle数据库总结大全
最新推荐文章于 2022-01-17 22:26:39 发布