MySQL官網示例數據庫emploees分析使用

1.下載與安裝html

下載地址:https://github.com/datacharmer/test_dbgit

安裝博客:https://blog.csdn.net/appleyuchi/article/details/79439387github

 

2.ER 

 

 

 

 

注意:這裏使用單下劃線表示主鍵,使用雙下劃線表示便是主鍵也是外鍵。可是標準狀況是使用虛線表示外鍵的,這裏要注意一下數據庫

3.建表語句 

 

CREATE TABLE employees (

    emp_no      INT             NOT NULL,

    birth_date  DATE            NOT NULL,

    first_name  VARCHAR(14)     NOT NULL,

    last_name   VARCHAR(16)     NOT NULL,

    gender      ENUM ('M','F')  NOT NULL,    

    hire_date   DATE            NOT NULL,

    PRIMARY KEY (emp_no)

);

 

CREATE TABLE departments (

    dept_no     CHAR(4)         NOT NULL,

    dept_name   VARCHAR(40)     NOT NULL,

    PRIMARY KEY (dept_no),

    UNIQUE  KEY (dept_name)

);

 

CREATE TABLE dept_manager (

   dept_no      CHAR(4)         NOT NULL,

   emp_no       INT             NOT NULL,

   from_date    DATE            NOT NULL,

   to_date      DATE            NOT NULL,

   KEY         (emp_no),

   KEY         (dept_no),

   FOREIGN KEY (emp_no)  REFERENCES employees (emp_no)    ON DELETE CASCADE,

   FOREIGN KEY (dept_no) REFERENCES departments (dept_no) ON DELETE CASCADE,

   PRIMARY KEY (emp_no,dept_no)

); 

 

CREATE TABLE dept_emp (

    emp_no      INT             NOT NULL,

    dept_no     CHAR(4)         NOT NULL,

    from_date   DATE            NOT NULL,

    to_date     DATE            NOT NULL,

    KEY         (emp_no),

    KEY         (dept_no),

    FOREIGN KEY (emp_no)  REFERENCES employees   (emp_no)  ON DELETE CASCADE,

    FOREIGN KEY (dept_no) REFERENCES departments (dept_no) ON DELETE CASCADE,

    PRIMARY KEY (emp_no,dept_no)

);

 

CREATE TABLE titles (

    emp_no      INT             NOT NULL,

    title       VARCHAR(50)     NOT NULL,

    from_date   DATE            NOT NULL,

    to_date     DATE,

    KEY         (emp_no),

    FOREIGN KEY (emp_no) REFERENCES employees (emp_no) ON DELETE CASCADE,

    PRIMARY KEY (emp_no,title, from_date)

); 

 

CREATE TABLE salaries (

    emp_no      INT             NOT NULL,

    salary      INT             NOT NULL,

    from_date   DATE            NOT NULL,

    to_date     DATE            NOT NULL,

    KEY         (emp_no),

    FOREIGN KEY (emp_no) REFERENCES employees (emp_no) ON DELETE CASCADE,

    PRIMARY KEY (emp_no, from_date)

); 
View Code

 

熟悉數據庫

1.部門員工表app

 

咱們查看部門員工表的數據量ide

select count(*) from dept_emp;spa

 

 

 

使用去重操做以後:.net

select count(distinct emp_no) from dept_emp;設計

 

 

 

咱們發現有不少數據重複了。那是什麼緣由形成的呢?code

 

首先咱們篩選出這些重複的數據信息:

select * 

from dept_emp

where emp_no in (select emp_no

from dept_emp 

    group by emp_no

    having count(emp_no)>1

);

 

 

咱們能夠發現同一個員工有在不一樣的部門工做的經歷,說明了有331603-300024=31579名員工有調職的經歷

 

2.薪資表

  

咱們能夠看出這裏工資記錄是按照爲單位進行記錄的。

 

經過這個表的數據來查詢資歷最高的員工:

 

select max(a.pnum) max_old_year

from (

select emp_no  id,count(emp_no)  pnum

from salaries

group by emp_no

) a;

 

可知該公司乾的最久的員工幹了18

 

 

 

 

 

問題設計:

查找該公司資歷最老的員工的我的所有數據(salaries表和 employees 表) 

 

參考博客:

http://www.cnblogs.com/stream886/p/6254630.html

相關文章
相關標籤/搜索