emp

数据库设计三范式

余生颓废 提交于 2020-02-04 10:23:50
0.参考文献: http://www.cnblogs.com/xwdreamer/archive/2012/05/17/2506039.html 1.范式说明 1.1 第一范式(1NF)无重复的列   所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能同时有多个值, 即实体中的某个属性不能有多个值或者不能有重复的属性 。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。简而言之,第一范式就是无重复的列。   在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。 在当前的任何关系数据库管理系统(DBMS)中,不可能做出不符合第一范式的数据库,因为这些DBMS不允许你把数据库表的一列再分成二列或多列。因此,你想在现有的DBMS中设计出不符合第一范式的数据库都是不可能的。 举例1: 一张学生表Student(stuNo,stuName,age,age,sex)是不符合第一范式的,因为有重复列age属性。去除重复列age以后的Student(stuNo,stuName,age,sex)是符合第一范式的。 1.2 第二范式(2NF)属性完全依赖于主键 [ 消除部分子函数依赖 ]   第二范式

Spring JDBC Template

こ雲淡風輕ζ 提交于 2020-02-04 02:22:32
package com.zhaoqi.jdbctemplate; import com.zhaoqi.domain.Emp; import com.zhaoqi.util.DruidUtils; import org.junit.Test; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import java.sql.Date; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import java.util.Map; public class JdbcTemplateDemo2 { //Junit单元测试,可以让方法独立执行 //1. 获取JDBCTemplate对象 private JdbcTemplate template = new JdbcTemplate(DruidUtils.getDataSource()); /** * 1. 修改1号数据的 salary 为 10000 */ @Test

oracle——笔记——1-3内容

社会主义新天地 提交于 2020-02-04 00:40:40
select * from emp; --employee 员工表 select * from dept; --department 部门表 select * from salgrade;-- salary grade 工资等级表 ---emp empno 员工编号 ename 员工姓名 job 工作/工种 mgr manager上级编号 hiredate 入职日期 sal salary 工资 comm 奖金/津贴 deptno 部门编号 --dept deptno 部门号 dname 部门名称 loc 所在地 --salgrade grade 等级 losal lowest salary 最低工资 hisal high salary 最高工资 --------------------------- --数据查询语句 select from where --查询emp表中,所有员工的姓名、工资、部门号 select ename,sal,deptno from emp; --查询emp表中,工资大于1500 的员工信息 select * from emp where sal > 1500; --查询emp表中,上级是7698 的员工姓名和津贴 select ename,comm from emp where mgr = 7698; ---列的别名 select ename,sal

oracle——笔记——4内容

半城伤御伤魂 提交于 2020-02-04 00:40:23
--外连接 作用:查询不满足连接条件的数据 select * from emp e,dept d where e.deptno = d.deptno; select * from dept; select * from emp e,dept d where e.deptno(+) = d.deptno; ---右外 insert into emp(empno) values(1122); select * from emp e,dept d where e.deptno = d.deptno(+); ---左外 select * from emp e,dept d where e.deptno(+) = d.deptno(+); ---不存在这种写法 ----外连接的另外一种写法: select * from emp e left outer join dept d on e.deptno = d.deptno; ---left 显示左边表不满足条件的数据 ---outer 可以省略 ---on 只能写连接条件,其他条件 写到where里 select * from emp e right outer join dept d on e.deptno = d.deptno; ---右外 select * from emp e full outer join dept d on e

springboot开发之修改员工

為{幸葍}努か 提交于 2020-02-03 21:24:46
接上一节 1、首先在显示员工信息那点击编辑按钮时要带上员工的id。 2、点击编辑按钮时,查询出员工信息并进行回显。 3、编辑界面和新增界面可以共用一个界面。根据emp是否为空来判断是新增还是编辑,如果不为空则显示相关信息。 4、发送PUT请求时,springboot已经为我们封装好了将POST请求转换成PUT和DELETE请求的HiddenHttpMethodFilter,我们要在add.html中加入: <input type="hidden" name="_method" value="put" th:if="${emp!=null}"/> 5、相关java代码 EmployeeController.java //来到修改页面,查出当前员工,在页面回显 @GetMapping("/emp/{id}") public String toEditPage(@PathVariable("id") Integer id,Model model){ Employee employee = employeeDao.get(id); model.addAttribute("emp",employee); //页面要显示所有的部门列表 Collection<Department> departments = departmentDao.getDepartments(); model

数据库SQL实战5

冷暖自知 提交于 2020-02-03 15:15:32
1、获取select * from employees对应的执行计划 explain select * from employees 2、将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分 CREATE TABLE employees ( emp_no int(11) NOT NULL, birth_date date NOT NULL, first_name varchar(14) NOT NULL, last_name varchar(16) NOT NULL, gender char(1) NOT NULL, hire_date date NOT NULL, PRIMARY KEY ( emp_no )); select e1.last_name || ' ' || e2.first_name from employees e1 , employees e2 where e1.emp_no = e2.emp_no 3、创建一个actor表,包含如下列信息 create table actor ( actor_id smallint(5) not null primary key, first_name varchar(45) not null, last_name varchar(45) not null,

碎点篇—— oracle 语法和练习

岁酱吖の 提交于 2020-02-02 03:47:19
返回主目录 --select from where having group by order by 的正确执行顺序为: --from-->where-->group by-->having-->select-->order by -------------------------------------------------------- --1、去重:distinct 必须放在开头,多字段,每个字段不一样才去重 --2、条件比较: -- =,!=,<>,<,>,<=,>=,any,some,all -- is null, is not null -- between x and y -- in(list) , not in (list) -- like _,%,escape '\' _\%escape '\' -- not, (and,or) and优先级高 -- 按照单个列排序 -- order by col -- 降序排列:order by col desc -- 升序排列:order by col asc -- 按多个列排序:(优先级) -- order by col1 desc(asc) , col2 desc(asc) --1.全集:union all --2.并集:union (去重) --3.交集:intersect --4.差集:minus --5.不懂怎么用

PLSQL——06、存储过程

扶醉桌前 提交于 2020-02-01 00:52:18
练习 1:导入型形式参数(in类型) CREATE OR REPLACE PROCEDURE raise_salary (p_id IN emp.empno%TYPE) IS --变量声明 BEGIN UPDATE emp SET sal = sal * 1.1 WHERE empno = p_id; END raise_salary; / 存储过程的调用: --方法一: EXECUTE raise_salary (7839); --方法二: declare v_empno emp.empno%type :=&p_empno; begin RAISE_SALARY(v_empno); end; / SQL>SHOW ERROR --查看编译错误; 练习 2:导出型形式参数(out类型) CREATE OR REPLACE PROCEDURE query_emp (p_id IN emp.empno%TYPE, p_name OUT emp.ename%TYPE, p_salary OUT emp.sal%TYPE, p_comm OUT emp.comm%TYPE) IS BEGIN SELECT ename, sal, comm INTO p_name, p_salary, p_comm FROM emp WHERE empno = p_id; END query_emp; /

四、oracle子查询

风格不统一 提交于 2020-01-31 15:18:08
目录 4.1.单行子查询 4.2. TopN 查询 4.3. 分页查询 4.4. exists 4.5. 对于 in 和 exists 的性能区别: 4.1.单行子查询 select * from emp where sal > (selectsal from emp where empno = 7566); 子查询空值/多值问题 如果子查询未返回任何行,则主查询也不会返回任何结果 ( 空值)select * from emp where sal > (select sal from emp where empno =8888); 如果子查询返回单行结果,则为单行子查询,可以在主查 询中对其使用相应的单行记录比较运算符 ( 正常)select * from emp where sal > (select sal from emp where empno =7566); 如果子查询返回多行结果,则为多行子查询,此时不允许 对其使用单行记录比较运算符 ( 多值)select * from emp where sal > (select avg(sal) from emp group by deptno);// 非法 多行子查询 select * from emp where sal >any(select avg(sal) from emp group by deptno);

二、oracle多表查询

女生的网名这么多〃 提交于 2020-01-31 14:17:42
1、笛卡尔集(Cross Join) 2、等值连接(Equijoin)(Naturaljoin..on) 3、非等值连接(Non-Equijoin) 4、自连接(Self join) 5、左外联接(Left Outer Join ) 6、右外联接(Right Outer Join) 7、满外联接(Full Outer Join) 1、笛卡尔集(Cross Join) Select * from emp,dept; 2、等值连接(Equijoin)(Naturaljoin..on) select empno, ename, sal, emp.deptno, dnamefrom emp, dept where emp.deptno = dept.deptno; 3、非等值连接(Non-Equijoin) select ename,empno,grade from emp,salgrade where sal between losal and hisal; 4、自连接(Self join) select e.empno,e.ename,m.empno,m.enamefrom emp e,emp m where e.mgr = m.empno; select e.empno,e.ename,m.empno,m.enamefrom emp e,emp m where m.mgr = e