Skip to content

14.基本操作练习

现有数据结构

sql
CREATE TABLE `dept` (
  `deptno` int(2) NOT NULL,
  `dname` varchar(14) DEFAULT NULL,
  `loc` varchar(13) DEFAULT NULL,
  PRIMARY KEY (`deptno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


insert  into `dept`(`deptno`,`dname`,`loc`) values (10,'ACCOUNTING','NEW YORK'),(20,'RESEARCH','DALLAS'),(30,'SALES','CHICAGO'),(40,'OPERATIONS','BOSTON');


CREATE TABLE `emp` (
  `empno` int(4) NOT NULL,
  `ename` varchar(10) DEFAULT NULL,
  `job` varchar(9) DEFAULT NULL,
  `mgr` int(4) DEFAULT NULL,
  `hiredate` date DEFAULT NULL,
  `sal` decimal(7,2) DEFAULT NULL,
  `comm` decimal(7,2) DEFAULT NULL,
  `deptno` int(2) DEFAULT NULL,
  PRIMARY KEY (`empno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


insert  into `emp`(`empno`,`ename`,`job`,`mgr`,`hiredate`,`sal`,`comm`,`deptno`) values (1,'dog','code',7369,'2018-06-05','5000.00','5000.00',10),(7369,'SMITH','CLERK',7902,'1980-12-17','800.00',NULL,20),(7499,'ALLEN','SALESMAN',7698,'1981-02-20','1600.00','300.00',30),(7521,'WARD','SALESMAN',7698,'1981-02-22','1250.00','500.00',30),(7566,'JONES','MANAGER',7839,'1981-04-02','2975.00',NULL,20),(7654,'MARTIN','SALESMAN',7698,'1981-09-28','1250.00','1400.00',30),(7698,'BLAKE','MANAGER',7839,'1981-05-01','2850.00',NULL,30),(7788,'SCOTT','ANALYST',7566,'1987-04-19','3000.00',NULL,20),(7839,'KING','PRESIDENT',NULL,'1981-11-17','5000.00',NULL,10),(7844,'TURNER','SALESMAN',7698,'1981-09-08','1500.00','0.00',30),(7876,'ADAMS','CLERK',7788,'1987-05-23','1100.00',NULL,20),(7900,'JAMES','CLERK',7698,'1981-12-03','950.00',NULL,30),(7902,'FORD','ANALYST',7566,'1981-12-03','3000.00',NULL,20),(7934,'MILLER','CLERK',7782,'1982-01-23','1300.00',NULL,10);

-- 题目1.通过子查询的方式创建一个表dept10,该表保存10号部门的员工数据。

sql
CREATE TABLE dept10 
 SELECT 

  * FROM
    emp 
    WHERE deptno = 10 ;

-- 创建与dept表相同表结构的表dtest,将dept表中部门编号在40之前的信息插入该表。

sql
CREATE TABLE dtest  SELECT 

  * FROM
    dept 
    WHERE deptno <40 ;

-- 创建与emp表结构相同的表empl,并将其部门编号为前30号的员工信息复制到empl表。

sql
CREATE TABLE empl  SELECT 

  * FROM
    emp 
    WHERE deptno <30 ;

-- 向部门表新增一个部门,部门编号为50,部门名称为HR,工作地点为SY。

sql
INSERT INTO dept  VALUES(50,'HR','SY')

-- 向员工表中新增一个员工,员工编号为8888,姓名为BOB, 岗位为CLERK,经理为号7788,入职日期为1985-03-03,薪资3000,奖金和部门为空

sql
INSERT INTO `java1`.`emp` (
  `empno`,
  `ename`,
  `job`,
  `mgr`,
  `hiredate`,
  `sal`
) 
VALUES
  (
    '8888',
    'BOB',
    'CLERK',
    '7788',
    '1985-03-03',
    '3000'

  ) ;

-- 把emp表中入职日期大于1982年1月1日之前的员工信息复制到emp_back表中

sql
CREATE TABLE emp_back  SELECT 

  * FROM
    emp 
    WHERE hiredate < STR_TO_DATE('1982-01-01' , '%Y-%m-%d' )

-- 修改工作地点在NEW YORK或CHICAGO的员工工资,工资增加500

sql
SELECT * FROM emp 
WHERE deptno IN (
  SELECT deptno FROM dept WHERE loc ='NEW YORK' OR loc ='CHICAGO'
)


UPDATE  emp
SET sal = sal +500
WHERE deptno IN (
  SELECT deptno FROM dept WHERE loc ='NEW YORK' OR loc ='CHICAGO';
)

-- 删除经理编号为7566的员工记录

sql
 DELETE FROM  emp WHERE mgr = 7566;

Released under the MIT License.