数据库练习

一、数据库语句

CREATE TABLE EMP (  
    EMPNO INT(4) NOT NULL PRIMARY KEY,  -- 员工编号
    ENAME VARCHAR(10),  -- 员工姓名
    JOB VARCHAR(9),   -- 工作类型
    MGR INT(4),       -- 上级的员工编号
    HIREDATE DATE,    -- 雇佣日期
    SAL DECIMAL(7, 2),    -- 工资
    COMM DECIMAL(7, 2),   -- 奖金
    DEPTNO INT(2)        -- 部门编号
);


CREATE TABLE DEPT (  
  DEPTNO INT(2) NOT NULL PRIMARY KEY,    -- 部门编号
  DNAME VARCHAR(14),     -- 部门名称
  LOC VARCHAR(13)    -- 部门位置
);



-- 插入示例数据到EMP表
INSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)  
VALUES  
  (7369, 'SMITH', 'CLERK', 7902, STR_TO_DATE('1980-12-17', '%Y-%m-%d'), 800, NULL, 20),  
  (7499, 'ALLEN', 'SALESMAN', 7698, STR_TO_DATE('1981-02-20', '%Y-%m-%d'), 1600, 300, 30),  
  (7521, 'WARD', 'SALESMAN', 7698, STR_TO_DATE('1981-02-03', '%Y-%m-%d'), 1250, 500, 30),  
  (7566, 'JONES', 'MANAGER', 7839, STR_TO_DATE('1981-03-02', '%Y-%m-%d'), 2975, NULL, 20),  
  (7654, 'MARTIN', 'SALESMAN', 7698, STR_TO_DATE('1981-10-22', '%Y-%m-%d'), 1250, 1400, 30),  
  (7698, 'BLAKE', 'MANAGER', 7839, STR_TO_DATE('1981-05-01', '%Y-%m-%d'), 2850, NULL, 30),  
  (7782, 'CLARK', 'MANAGER', 7839, STR_TO_DATE('1981-06-09', '%Y-%m-%d'), 2450, NULL, 10),  
  (7788, 'SCOTT', 'ANALYST', 7566, STR_TO_DATE('1982-12-09', '%Y-%m-%d'), 3000, NULL, 20),  
  (7839, 'KING', 'PRESIDENT', NULL, STR_TO_DATE('1981-11-17', '%Y-%m-%d'), 5000, NULL, 10),  
  (7844, 'TURNER', 'SALESMAN', 7698, STR_TO_DATE('1981-09-08', '%Y-%m-%d'), 1500, 0, 30),  
  (7876, 'ADAMS', 'CLERK', 7788, STR_TO_DATE('1983-01-12', '%Y-%m-%d'), 1100, NULL, 20),  
  (7900, 'JAMES', 'CLERK', 7698, STR_TO_DATE('1981-12-03', '%Y-%m-%d'), 950, NULL, 30),  
  (7902, 'FORD', 'ANALYST', 7566, STR_TO_DATE('1981-12-03', '%Y-%m-%d'), 3000, NULL, 20),  
  (7934, 'MILLER', 'CLERK', 7782, STR_TO_DATE('1982-01-23', '%Y-%m-%d'), 1300, NULL, 10)



-- 插入示例数据到DEPT表
INSERT INTO DEPT (DEPTNO, DNAME, LOC)
VALUES
  (10, 'ACCOUNTING', 'NEW YORK'),
  (20, 'RESEARCH', 'DALLAS'),
  (30, 'SALES', 'CHICAGO'),
  (40, 'OPERATIONS', 'BOSTON');

二、限定查询

--1.查询工资大于1000或者部门是30的员工的编号,姓名,工资 
SELECT EMPNO,ENAME,SAL
FROM EMP
WHERE SAL >1000 AND DEPTNO=30
--2.查询部门10的详细信息,地址,位置等
SELECT DEPTNO, DNAME, LOC
FROM DEPT
WHERE DEPTNO=10
--3.查询职位(JOB)为'PRESIDENT'的员工的工资
SELECT ENAME,JOB,SAL
FROM EMP
WHERE JOB='PRESIDENT'
--4.查询有提成的员工信息 
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
FROM EMP
WHERE COMM > 0
--4.查询名字长度为4 的员工的员工编号,姓名
SELECT EMPNO, ENAME
FROM EMP
WHERE ENAME LIKE'____'
--6.显示10 号部门的所有经理('MANAGER')和20 号部门的所有职员('CLERK')的详细信息 
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
FROM EMP
WHERE (DEPTNO = 10 AND JOB = 'MANAGER') AND (DEPTNO = 10 AND ENAME = 'CLERK')
--7.显示各个部门经理('MANAGER')的工资
SELECT JOB,SAL
FROM EMP
WHERE JOB = 'MANAGER'
--8.显示佣金(COMM)收入比工资(SAL)高的员工的详细信息
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
FROM EMP
WHERE COMM > SAL
--9.检索以S结尾的员工姓名及月收入( 月收入是工资和提成之和 )
SELECT ENAME,SAL+NVL(COMM,0)
FROM EMP
WHERE ENAME LIKE'%S'
--10.查询员工姓名的第三个字母是A的员工姓名 
SELECT ENAME
FROM EMP
WHERE ENAME LIKE'__A%'
--11.查询工资不在1000到2000之间的员工的姓名和工资
SELECT ENAME,SAL
FROM EMP
WHERE SAL < 1000 OR SAL > 2000
--12. 查询公司中没有管理者的员工姓名及job 
SELECT ENAME,JOB
FROM EMP
WHERE MGR IS NULL

三、函数

--1.求ename列的长度,显示员工编号,名字,长度
SELECT LENGTH(ENAME),EMPNO,ENAME
FROM EMP
--2.将ename转成小写,显示员工编号,名字,小写名字
SELECT LOWER(ENAME),EMPNO,ENAME
FROM EMP
--3.将ename中的A,替换成ABC,显示名字,替换前的名字,替换后的名字
SELECT ENAME,REPLACE(ENAME,'A','ABC')
FROM EMP
--4.取ename的第二个字符,显示编号,名字,第二个字符
SELECT SUBSTR(ENAME,2,1)
FROM EMP
--5.取ename的第二个字符到末尾的所有字符,显示编号,名字,截取后的字符
SELECT EMPNO,ENAME,SUBSTR(ENAME,2)
FROM EMP
--6.取ename的第三个到第五个字符,显示编号,名字,截取后的字符
SELECT EMPNO,ENAME,SUBSTR(ENAME,3,3)
FROM EMP
--7.找出ename中A的位置,显示编号,名字,A的位置
SELECT EMPNO,ENAME,INSTR(ENAME,'A')
FROM EMP
--8.从ename中A的位置开始截取,取2个字符,显示名字,截取后的字符
SELECT EMPNO,ENAME,SUBSTR(ENAME,INSTR(ENAME,'A'),2)
FROM EMP
WHERE ENAME LIKE'%A%'
--9.将'abc,bdc,def'变成'abc bdc def',显示变之前的字符串,变之后的字符串
SELECT REPLACE('abc,bdc,def',',',' ')
FROM DUAL
--10.将'ABCDEFADE'变成'mBCDEFmDE',显示变之前的字符串,变之后的字符串
SELECT REPLACE('ABCDEFADE','A','m')
FROM DUAL
--11.将'      abcdef       '变成'abcdef',显示变之前的字符串,变之后的字符串
SELECT  TRIM('      abcdef       '),'      abcdef       '
FROM DUAL
--12.将'     mnop'变成'mnop',显示变之前的字符串,变之后的字符串
SELECT LTRIM('     mnop'),'     mnop'
FROM DUAL
--13.将'nqwd      '变成'nqwd',显示变之前的字符串,变之后的字符串
SELECT RTRIM('nqwd      '),'nqwd      '
FROM DUAL
--14.将'hi    jk     mno'变成'hijkmno',显示变之前的字符串,变之后的字符串
SELECT REPLACE('hi    jk     mno',' ','')
FROM DUAL
--15.求D和d的 ascii码.
SELECT ASCII('D')
FROM DUAL
SELECT CHR(65)
FROM DUAL

你可能感兴趣的:(MySQL,数据库,mysql)