Mysql也有跟Oracle的scott与employees相似的数据库,这样就免除了每次都要自己建表并插入数据了。
Mysql提供的供练习使用的数据库employees,下面地址:https://launchpad.net/test-db/employees-db-1/1.0.6
下载其中的employees_db-full-1.0.6.tar.bz2,之后按下列步骤解压缩,并安装。
1、解压文件
[root@rac1 opt]# tar -xjf employees_db-full-1.0.6.tar.bz2
[root@rac1 opt]# cd employees_db
[root@rac1 employees_db]# ls -al
总计 164724
drwxr-xr-x 2 root root 4096 09-10 19:33 .
drwxr-xr-x 4 root root 4096 09-10 19:33 ..
-rw-r--r-- 1 501 games 752 2009-03-30 Changelog
-rw-r--r-- 1 501 games 161 2008-10-09 ._employees_partitioned2.sql
-rw-r--r-- 1 501 games 6460 2008-10-09 employees_partitioned2.sql
-rw-r--r-- 1 501 games 7624 2009-02-06 employees_partitioned3.sql
-rw-r--r-- 1 501 games 5660 2009-02-06 employees_partitioned.sql
-rw-r--r-- 1 501 games 161 2008-11-28 ._employees.sql
-rw-r--r-- 1 501 games 3861 2008-11-28 employees.sql
-rw-r--r-- 1 501 games 161 2008-07-30 ._load_departments.dump
-rw-r--r-- 1 501 games 241 2008-07-30 load_departments.dump
-rw-r--r-- 1 501 games 13828291 2009-03-30 load_dept_emp.dump
-rw-r--r-- 1 501 games 161 2008-07-30 ._load_dept_manager.dump
-rw-r--r-- 1 501 games 1043 2008-07-30 load_dept_manager.dump
-rw-r--r-- 1 501 games 161 2008-07-30 ._load_employees.dump
-rw-r--r-- 1 501 games 17422825 2008-07-30 load_employees.dump
-rw-r--r-- 1 501 games 161 2008-07-30 ._load_salaries.dump
-rw-r--r-- 1 501 games 115848997 2008-07-30 load_salaries.dump
-rw-r--r-- 1 501 games 161 2008-07-30 ._load_titles.dump
-rw-r--r-- 1 501 games 21265449 2008-07-30 load_titles.dump
-rw-r--r-- 1 501 games 3889 2009-03-30 objects.sql
-rw-r--r-- 1 501 games 2211 2008-07-30 README
-rw-r--r-- 1 501 games 161 2008-07-30 ._README
-rw-r--r-- 1 501 games 4455 2009-03-30 test_employees_md5.sql
-rw-r--r-- 1 501 games 4450 2009-03-30 test_employees_sha.sql
2、安装过程
[root@rac1 employees_db]# mysql -u root -p < employees.sql
Enter password:
INFO
CREATING DATABASE STRUCTURE
INFO
storage engine: InnoDB
INFO
LOADING departments
INFO
LOADING employees
INFO
LOADING dept_emp
INFO
LOADING dept_manager
INFO
LOADING titles
INFO
LOADING salaries
3、检查安装的表有哪些
mysql> use employees;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+---------------------+
| Tables_in_employees |
+---------------------+
| departments |
| dept_emp |
| dept_manager |
| employees |
| salaries |
| titles |
+---------------------+
6 rows in set (0.04 sec)
4、employees.sql的内容(Innodb存储引擎,前面create table是创建表的脚本,后面source往表里插入数据):
[root@rac1 employees_db]# cat employees.sql
-- Sample employee database
-- See changelog table for details
-- Copyright (C) 2007,2008, MySQL AB
--
-- Original data created by Fusheng Wang and Carlo Zaniolo
-- http://www.cs.aau.dk/TimeCenter/software.htm
-- http://www.cs.aau.dk/TimeCenter/Data/employeeTemporalDataSet.zip
--
-- Current schema by Giuseppe Maxia
-- Data conversion from XML to relational by Patrick Crews
--
-- This work is licensed under the
-- Creative Commons Attribution-Share Alike 3.0 Unported License.
-- To view a copy of this license, visit
-- http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to
-- Creative Commons, 171 Second Street, Suite 300, San Francisco,
-- California, 94105, USA.
--
-- DISCLAIMER
-- To the best of our knowledge, this data is fabricated, and
-- it does not correspond to real people.
-- Any similarity to existing people is purely coincidental.
--
DROP DATABASE IF EXISTS employees;
CREATE DATABASE IF NOT EXISTS employees;
USE employees;
SELECT 'CREATING DATABASE STRUCTURE' as 'INFO';
DROP TABLE IF EXISTS dept_emp,
dept_manager,
titles,
salaries,
employees,
departments;
set storage_engine = InnoDB;
-- set storage_engine = MyISAM;
-- set storage_engine = Falcon;
-- set storage_engine = PBXT;
-- set storage_engine = Maria;
select CONCAT('storage engine: ', @@storage_engine) as INFO;
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)
);
SELECT 'LOADING departments' as 'INFO';
source load_departments.dump ;
SELECT 'LOADING employees' as 'INFO';
source load_employees.dump ;
SELECT 'LOADING dept_emp' as 'INFO';
source load_dept_emp.dump ;
SELECT 'LOADING dept_manager' as 'INFO';
source load_dept_manager.dump ;
SELECT 'LOADING titles' as 'INFO';
source load_titles.dump ;
SELECT 'LOADING salaries' as 'INFO';
source load_salaries.dump ;