MySQL基础使用速查

在日常学习和工作使用MySQL中的总结,方便自己查看,没有的说明我没有遇到或用到。

一、Windows下的基本操作

1.1 数据库存放目录:

C:\ProgramData\MySQL\MySQL Server 版本号\data

(该目录下每个目录表示一个数据库)

1.2 MySQL服务:

1.2.1 启动:

net start mysql

1.2.2 关闭:

net stop mysql

1.3 数据库登录&登出:

1.3.1 登录:

mysql -u用户名 -p密码 -hIP

1.3.2 登出:

/* 二选一即可 */
quit
exit

1.4 卸载MySQL:

  1. 关闭MySQL服务
  2. 卸载MySQL
  3. 删除MySQL安装目录
  4. 查看注册表(regedit)并删除MySQL:
    1. HKEY_LOCAL_HACHINE\SYSTEM\CurrentControlSet\Services\MySQL
    2. HKEY_LOCAL_HACHINE\SYSTEM\ControlSet001\Services\MySQL
    3. HKEY_LOCAL_MACHTNE\SYSTEM\ControlSet002\ Services\MySQL

1.5 bin目录中的重要文件:

  • MySQL服务器端程序:mysqld.exe
  • MySQL客户端程序:mysql.exe
  • 服务器配置文件:my.ini

1.6 my.ini文件配置:

1.6.1 配置MySQL 的端口:3306(默认)

1.6.2 配置字符编码:

[client] 下配置客户端编码:

default-character-set=gbk

[mysqld]下配置服务器编码:

character-set-server=utf8

1.6.3 配置二进制数据大小上限:

[mysqld]下配置:

max_allowed_packet=8M

1.7 MySQL编码问题:

1.7.1 查看MySQL数据库编码:

SHOW VARIABLES LIKE 'char%';

1.7.2 编码解释:

 character_set_client = utf8

MySQL把我们客户端传递的数据都当成是utf8。

若客户端发送的是GBK,服务器会当成utf8对待,

结果:乱码

处理问题的两种办法:

  • 人客户端发送utf8的数据(行不通)
  • 把character_set_client修改为GBK
  • 只在当前窗口内有效;重新打开窗口又会还原。
character_set_results = utf8

MySQL发送给客户端的数据都是utf8的。

若服务器发送给服务器的是utf8的数据,客户端会它当成GBK

结果:乱码

处理问题的办法:

  • 让服务器发送GBk的数据:character_set_results = gbk

1.7.3 在配置文件(my.ini)中修改才能一劳永逸

[client]

Port=3306

 
[mysql]

default_character_set=gbk /* 它可以修改三个变量:client、resylts、connection */

1.8 备份与恢复

mysqldump -u用户名 -p密码 数据库名>生成的脚本文件路径
/*
注意:
	不要打分号
	不要登录MySQL,直接在cmd下运行
	生成的脚本文件中不包含create database语句
*/

1.8.2 执行SQL脚本

第一种方式:

mysql -u用户名 -p密码 数据库名<脚本文件路径
/*
不要打分号
不要登录MySQL,直接在cmd下运行
*/

第二种方式:

/* 第一步:登录mysql */

/* 第二步:输入代码 */
SOURCE SQL脚本路径

二、DDL 数据定义语言

2.1 库:

2.1.1 查看所有数据库:

SHOW DATABASES

2.1.2 切换数据库:

USE 数据库名

2.1.3 创建数据库:

CREATE DATABASE [IF NOT EXISTS] 数据库名 [CHARSET=utf8]

2.1.4 删除数据库:

DROP DATABASE [IF EXISTS] 数据库名

2.1.5 修改数据库编码:

ALTER DATABASE 数据库名 CHARACTER SET utf8

2.2 表:

2.2.1 创建表:

CREATE TABLE [IF NOT EXISTS] 表名(
	列名 列类型 ,
	…
	列名 列类型
);

2.2.2 查看当前数据库所有表名称:

SHOW TABLES

2.2.3 查看指定表的创建语句:

SHOW CREATE TABLE 表名;

2.2.4 查看表结构:

DESC 表名;

2.2.5 删除表:

DROP TABLE 表名;

2.3 列:

即:对表的修改

2.3.1 添加列:

ALTER TABLE 表名
	ADD (
		列名 列类型,
		…
		列名 列类型
	);

2.3.2 修改列类型:

ALTER TABLE 表名
	MODIFY 列名 列新的类型;

2.3.3 修改列名:

ALTER TABLE 表名
	CHANGE 原列名 新列名 列类型;

2.3.4 删除列:

ALTER TABLE 表名
	DROP 列名;

2.3.5 修改表名称:

ALTER TABLE 表名
	RENAME TO 新表名;

三、DML 数据操作语言

3.1 插入记录:

3.1.1 插入所有列:

INTERT INTO 表名(列名1,列名2,) VALUES(列值1,列值2,);

3.1.2 插入部分列:

没有插入的列为默认值NULL

INTERT INTO 表名(列名1,列名2) VALUES(列值1,列值2);

3.1.3 不给出插入列,默认为插入所有列。

值的顺序要与创建表时列的顺序相同。

INTERT INTO 表名 VALUES(列值1,列值2,,列值last);

在数据库中所有的字符串类型必须使用单引号,不能使用双引号。日期类型也要使用单引号。

3.2 修改记录:

UPDATE 表名 SET 列名1=列值1, 列名2=列值2,… 
	[WHERE 筛选条件]

【筛选条件】

条件必须是一个boolean类型的值或表达式;

【运算符】

	=
	!=
	<>
	>
	<
	>=
	<=
	BETWEENAND
	IN()
	IS NULL
	NOT
	OR
	AND

3.3 删除记录:

DELETE FEOM 表名
	[WHERE 筛选条件];

四、DCL 数据控制语言

4.1 建议:

  • 一个项目创建一个用户!一个项目对应的数据库只有一个!
  • 这个用户只能对这个数据库有权限,其他数据库你就操作不了了!

4.2 创建用户:

4.2.1 用户只能在指定的IP地址上登录

CREATE USER 用户名@IP地址 IDENTIFIED BY  '密码';

4.2.2用户可以在任意IP地址上登录

CREATE USER 用户名@'%' IDENTIFIED BY  '密码';

4.3 给用户授权:

4.3.1 给用户分派在指定数据库上的指定权限

GRANT 权限1,,权限n ON 数据库名.* TO 用户名@IP地址;

4.3.2 给用户分派指定数据库上的所有权限

GRANT ALL ON 数据库名.* TO 用户名@IP地址;

4.4 撤销授权:

4.4.1 撤销指定用户在指定数据库上的指定权限

REVOKE 权限1,,权限n ON 数据库名.* FROM 用户名@IP地址;

4.5 查看权限:

4.5.1 查看指定用户的权限

SHOW GRANTS FOR 用户名@IP地址;

4.6 删除用户:

DROP USER 用户名@IP地址;

五、DQL 数据查询语言

5.1 列控制

5.1.1 查询所有列:

SELECT * FROM 表名;

5.1.2 查询指定列:

SELECT1 [,2,, 列N] FROM 表名;

5.1.3 完全重复的记录只一次

DISTINCT :当查询结果中的多行记录一模一样时,只显示一行。

-- 查询所有列,完全重复的记录只显示一行 --
SELECT DISTINCT * FROM 表名;

-- 查询指定列,完全重复的记录只显示一行 --
SELECT DISTINCT1 [,2,, 列N] FROM 表名;

5.2 列运算:

5.2.1 数量类型的列可做加,减,乘,除运算:

SELECT 列名A+1 FROM 表名;

SELECT 列名B-列名C FROM 表名;

SELECT 列名D*列名E FROM 表名;

SELECT 列名F/2 FROM 表名;

/* 任何数值与NULL相加 = NULL。 */

5.2.2 字符串类型可以做连接运算:

SELECT CONCAT ('字符串', 列名B) FROM 表名;

5.2.3 转换NULL值:

SELECT IFNULL(列名, 0) +1000 FROM 表名;

--IFNULL(列名, 0)
--如果指定列中存在NULL值,那么当成0来运算。

5.2.4给列起别名:

SELECT 列运算表达式 AS 别名 FROM 表名;
/* 其中AS可以省略 */

5.3 条件控制

5.3.1 条件查询:

SELECT语句也可以使用WHERE子句来控制记录。

5.3.2 模糊查询:

模糊查询需要使用运算符LIKE

通配符:

"_" 匹配一个任意字符

"%" 匹配0~N个任意字符

示例:

查询姓张并且姓名一共两个字

SELECT * FROM emp WHERE ename LIKE '张_';

查询姓名由算工作组成的员工

SELECT * FROM emp WHERE ename LIKE '___';

查询姓张,名字不限的员工

SELECT * FROM emp WHERE ename LIKE '张%';

查询姓名中有以“阿”(包括开头或结尾)的员工

SELECT * FROM emp WHERE ename LIKE '%张%';

条件等同于不存在,但如果姓名为NULL的查询不出来。

SELECT * FROM emp WHERE ename LIKE '%';

5.4 排序

5.4.1 升序

SELECT * FROM 表名 ORDER BY 列名 ASC;
/* ASE可以省略 */

5.4.2 降序

5.4.2.1 使用单列作为排序条件
SELECT * FROM 表名 ORDER BY 列名 DESC;
/* DESC不可以省略 */
5.4.2.2 使用多列作为排序条件
SELECT * FROM 表名 ORDER BY 列名A ASC, 列名B DESC;

5.5 聚合函数

5.5.1 查询个数:

SELECT COUNT(列名) FROM 表名;

SELECT COUNT(*) FROM 表名;

SELECT COUNT(1 ) FROM 表名;

5.5.2 查询最高数值:

SELECT MAX(列名) FROM 表名;

5.5.3 查询最低数值:

SELECT MIN(列名) FROM 表名;

5.5.4 查询数值总和:

SELECT SUM(列名) FROM 表名;

5.5.5 查询平均数值:

SELECT AVG(列名) FROM 表名;

5.6 分组查询

语法格式:

SELECT 列名A, 聚合函数 FROM 表名
	[WHERE 筛选条件]
	GROUP BY 列名A;
		[HAVING 分组后的筛选条件]
		[ORDER BY 排序]

【注意】

  1. 查询列表必须是分组函数和GROUP BY后出现的字段。
  2. 分组函数做条件一定放在HAVING子句中。
  3. 能用分组前筛选的优先使用分组前筛选。
  4. GROUP BY子句支持单个字段分组、多个字段分组(多个字段之间用逗号隔开,没有顺序要求)、表达式或函数。
  5. 可以添加排序(排序放在整个分组查询最后)
  6. 一般不在GROUP BY和HAVING后使用别名。

5.7 LIMIT子句

LIMIT用来限定查询结果的起始行,以及总行数。

ELECT * FROM 表名 LIMIT 0,5;

--LIMIT 起始行下标,最大显示记录的行数

优点在于分页查询方便

示例:

要求:1. 一页的记录数:10行;2. 查询第3页
ELECT * FROM 表名 LIMIT 20,10;

六、约束

6.1 主键约束

6.1.1 创建表时设置主键约束:

列名 列类型 PRIMARY KEY [];

6.1.2 修改表时设置主键约束:

ALTER TABLE 表名
    ADD PRIMARY KEY (列名);

6.1.3 删除主键约束:

ALTER TABLE 表名
    DROP PRIMARY KEY ;

6.2 主键自增长

自增长需要加在整数类型的列

6.2.1 创建表时设置主键自增长:

列名 列类型 PRIMARY KEY AUTO_INCREMENT;

6.2.2 修改表时设置主键自增长:

ALTER TABLE 表名
    CHANGE 列名
        列名 INT AUTO_INCREMENT;

6.2.3 删除主键自增长:

ALTER TABLE 表名
    CHANGE 列名
        列名 INT;

6.3 非空约束

6.3.1 创建表时设置非空约束:

列名 列类型 NOT NULL;

6.4 唯一约束

6.4.1 创建表时:

列名 列类型 UNIQUE;

6.5 外键约束

外键必须是另一表的主键的值(外键要引用主键!)
外键可以重复
外键可以为空

6.5.1创建表时设置外键约束:

CREATE TABLE 表名B(
    B表主键列名1 INT PRIMARY KEY AUTO_INCREMENT,
    …
    外键列名2 列类型,
    CONSTRAINT fk_表名B_表名A FOREIGN KEY(列名2) REFERENCES 表名A(A表主键列名)
);

6.5.2 修改表时设置外键约束:

CREATE TABLE 表名B(
B表主键列名1 INT PRIMARY KEY AUTO_INCREMENT,
…
外键列名2 列类型
);

ALTER TABLE 表名B
ADD CONSTRAINT fk_表名B_表名A FOREIGN KEY(列名2) REFERENCES 表名A(A表主键列名)

七、关系模型

7.1 一对多关系

从表新创建列作为外键,连接主表主键

CREATE TABLE class( 
    cid INT PRIMARY KEY AUTO_INCREMENT,
    sname VARCHAR(15) NOT NULL 
);

INSERT INTO class VALUES(NULL, '软件工程一班'); 
INSERT INTO class VALUES(NULL, '软件工程二班');

SELECT * FROM class; 

/*在sql语句末端添加*/ 
CREATE TABLE student( 
    sid INT AUTO_INCREMENT, 
    sname VARCHAR(10), 
    s_cid INT, 
    PRIMARY KEY(sid), 
    FOREIGN KEY (s_cid) REFERENCES class(cid)
);

INSERT INTO student VALUES(NULL, '谢俊锋',2); 
INSERT INTO student VALUES(NULL, '何诺燃',3);/*约束生效  插入失败*/ 

SELECT * FROM student; 

/*fk的使用*/
CREATE TABLE student( 
    sid INT AUTO_INCREMENT, 
    sname VARCHAR(10) NOT NULL, 
    s_cid INT , 
    PRIMARY KEY(sid), 
    CONSTRAINT fk_student_class FOREIGN KEY(s_cid) REFERENCES class(cid)
); 

INSERT INTO student VALUES(NULL, '谢俊锋',2); 
INSERT INTO student VALUES(NULL, '何诺燃',3);/*约束生效  插入失败*/ 

SELECT * FROM student; 

/*在建表后添加外键*/ 
CREATE TABLE student( 
    sid INT AUTO_INCREMENT, 
    sname VARCHAR(10) NOT NULL, 
    s_cid INT , 
    PRIMARY KEY(sid) 
); 

ALTER TABLE student 
    ADD FOREIGN KEY (s_cid) REFERENCES class(cid); 

INSERT INTO student VALUES(NULL,'谢俊锋',2); 
INSERT INTO student VALUES(NULL,'何诺燃',3);/*约束生效  插入失败*/ 

SELECT * FROM student;

7.2 一对一关系

从表的主键即是外键!

CREATE TABLE husband(
    hid INT PRIMARY KEY AUTO_INCREMENT,
    hname VARCHAR(50)
);

INSERT INTO husband VALUES(NULL, '刘备');
INSERT INTO husband VALUES(NULL, '周瑜');
INSERT INTO husband VALUES(NULL, '孙策');

SELECT * FROM husband;

CREATE TABLE wife(
    wid INT PRIMARY KEY,
    wname VARCHAR(50)
);

INSERT INTO wife VALUES(1,'孙尚香');
INSERT INTO wife VALUES(2,'小乔');
INSERT INTO wife VALUES(3,'大乔');

SELECT * FROM wife;

7.3 多对多关系模型

创建中间表,列分别作为外键,链接对应主表主键

/*创建学生表*/
CREATE TABLE student(
  sid INT PRIMARY KEY AUTO_INCREMENT,
  sname VARCHAR(50)
);
/*创建教师表*/
CREATE TABLE teacher(
  tid INT PRIMARY KEY AUTO_INCREMENT,
  tname VARCHAR(50)
);

/*创建关联表*/
CREATE TABLE stu_tea(
  sid INT,
  tid INT,
  CONSTRAINT fk_student FOREIGN KEY(sid) REFERENCES student(sid),
  CONSTRAINT fk_teacher FOREIGN KEY(tid) REFERENCES teacher(tid)
);

/*往2张表插记录*/
INSERT INTO student VALUES(NULL,'周志轩');
INSERT INTO student VALUES(NULL,'黎永成');
INSERT INTO student VALUES(NULL,'廖科诚');
INSERT INTO student VALUES(NULL,'何景鑫');
INSERT INTO student VALUES(NULL,'陈诗臻');

SELECT * FROM student;

INSERT INTO teacher VALUES(NULL,'曹文文');
INSERT INTO teacher VALUES(NULL,'戴家刚');
INSERT INTO teacher VALUES(NULL,'徐家斌');

SELECT * FROM teacher;

/*建立关系*/
INSERT INTO stu_tea VALUES(3,1);
INSERT INTO stu_tea VALUES(4,1);
INSERT INTO stu_tea VALUES(5,1);

INSERT INTO stu_tea VALUES(2,2);
INSERT INTO stu_tea VALUES(3,2);
INSERT INTO stu_tea VALUES(4,2);

INSERT INTO stu_tea VALUES(1,3);
INSERT INTO stu_tea VALUES(2,3);
INSERT INTO stu_tea VALUES(3,3);
INSERT INTO stu_tea VALUES(4,3);
INSERT INTO stu_tea VALUES(5,3);

/*查关联表*/
SELECT * FROM stu_tea;

八、多表查询

8.1 合并结果集

要求被合并的结果集:

列的类型和列数相同(并非要求表的列类型和列数相同)

关键字:

--去除重复行
UNION

--不去除重复行
UNION ALL

语法格式:

SELECT * FROM 表名A
UNION ALL
SELECT * FROM 表名B

8.2 连接查询

8.2.1 内连接

MySQL语言中内连接可以使用MySQL本身特有的语法,也可以使用SQL标准语法。

8.2.1.1 用内连接的方式连接两个表:
SELECT * FROM1,2
--MySQL方言

SELECT * FROM1 INNER JOIN2
--标准SQL语法

这样连接的结果是一个笛卡尔积。笛卡尔积存在大量无用信息。

【笛卡儿积】

{a, b, c, d}、{1, 2}

{a1, a2, b1, b2, c1, c2, d1, d2}

8.2.1.2 设置条件去除多余的条件:
--MySQL方言
SELECT 表名1.列名A, 表名1.列名B, 表名2.列名D
FROM 表名1, 表名2
WHERE1.列名C =2.列名E

--标准SQL语法
SELECT 表名1.列名A, 表名1.列名B, 表名2.列名D
FROM1 INNER JOIN2
ON1.列名C =2.列名E

--要查询的列
--要查询的表
--两个表连接的条件
8.2.1.3 给表设置别名:
--MySQL方言
SELECT 表名1.列名A, 表名1.列名B, 表名2.列名D 
FROM1 别名1,2 别名2 
WHERE 别名1.列名C = 别名2.列名E

--标准SQL语法
SELECT 表名1.列名A, 表名1.列名B, 表名2.列名D
FROM1 别名1 INNER JOIN2 别名2 
ON 别名1.列名C = 别名2.列名E

开发开发中推荐使用SQL标准语法。

8.2.2 外连接

外连接有一主一次,左外连接即左表为主;右外连接即右表为主。

另外还有全外连接。

8.2.2.1 左外连接

左外连接中,主表中所有的记录无论满足不满足条件,都打印出来;当条件不满足时,右表空缺的记录使用NULL来补位。

下面用左外连接的方式连接两个表:

SELECT 左表.列名A, 左表.列名B, 右表.列名D
FROM 左表 别名L LEFT OUTER JOIN 右表 别名R
ON 别名L.列名C = 别名R.列名E

将指定列补位的NULL替换为指定内容:

SELECT 左表.列名A, 左表.列名B, IFNULL(右表.列名D, '替换内容') AS 列别名
FROM 左表 别名L LEFT OUTER JOIN 右表 别名R
ON 别名L.列名C = 别名R.列名E
8.2.2.2 右外连接

右外连接中,主表中所有的记录无论满足不满足条件,都打印出来。当条件不满足时,左表空缺的记录使用NULL来补位

下面用右外连接的方式连接两个表:

SELECT 左表.列名A, 左表.列名B, 右表.列名D
FROM 左表 别名L RIGHT OUTER JOIN 右表 别名R
ON 别名L.列名C = 别名R.列名E

将指定列补位的NULL替换为指定内容

SELECT IFNULL(左表.列名A, '替换内容') AS 列别名, 左表.列名B, 右表.列名D
FROM 左表 别名L RIGHT OUTER JOIN 右表 别名R
ON 别名L.列名C = 别名R.列名E
8.2.2.3 全外连接

全外连接还返回左表中不符合连接条件单符合查询条件的数据行,并且还返回右表中不符合连接条件单符合查询条件的数据行。

全外连接实际是上左外连接和右外连接的数学合集(去掉重复),即“全外=左外 UNION 右外”。

MySQL是不支持全外的连接的,但是可以通过左外和右外求合集来获取全外连接的查询结果.

下面用全外连接的方式连接两表:

--MySQL的语法
SELECT 左表.列名A, 左表.列名B, 右表.列名D
FROM 左表 别名L LEFT OUTER JOIN 右表 别名R 
ON 别名L.列名C = 别名R.列名E
UNION
SELECT 左表.列名A, 左表.列名B, 右表.列名D
FROM 左表 别名L RIGHT OUTER JOIN 右表 别名R
ON 别名L.列名C = 别名R.列名E

--标准SQL语法
SELECT 左表.列名A, 左表.列名B, 右表.列名D
FROM 左表 别名L FULL OUTER JOIN 右表 别名R
ON 别名L.列名C = 别名R.列名E

8.2.3自然连接

这种连接查询没有存在的价值。自然连接就是系统自动做筛选工作。

8.2.3.1 自然内连接
SELECT * FROM1 别名1 NATURAL JOIN2 别名2
8.2.3.2 左外自然连接
SELECT * FROM1 别名1 NATURAL LEFT OUTER JOIN2 别名2 ON 别名1.xx = 别名2.xx
8.2.3.3 右外自然连接
SELECT * FROM1 别名1 NATURAL RIGHT OUTER JOIN2 别名2 ON 别名1.xx = 别名2.xx
8.2.3.4 全外自然连接
SELECT * FROM1 别名1 NATURAL FULL OUTER JOIN2 别名2 ON 别名1.xx = 别名2.xx

8.3 子查询

8.3.1 实践示例:查询本公司工资最高的员工的详细信息

错误查询示例:聚合函数使用错误

SELECT* FROM emp WHERE sal=MAX(sal);

正确查询示例:使用子查询

SELECT* FROM emp WHERE sal=(SELECT MAX(sal) FROM emp);

8.3.2 两个语法位置可以子查询:

FROM后

SELECT b.列名1, b.列名2
FROM (SELECT * FROM 表A WHERE 筛选条件) 子查询生成的表的别名b
WHERE 筛选条件

WHERE后

子查询语句作为父查询语句的筛选条件。

8.3.3 子查询可分为:

8.3.3.1 单行单列(值):

语法格式:

SELECT *FROM1 别名1 WHERE1 [ =>, >, <, <=, = ] (SELECTFROM2 别名2 WHERE 条件)

示例:查询本公司工资大于公司平均工资的员工

SELECT * FROM emp WHERE sal > ( SELECT AVG(sal) FROM emp)
8.3.3.2 多行单列(集合):

语法格式:

SELECT * FROM1 别名1 WHERE1 [IN, ALL, ANY] (SELECT 列 EROM 表2 别名2 WHERE 条件)

示例:打印本公司工资高于30部门所有员工工资的员工详细信息

SELECT * FROM emp WHERE sal >ALL( SELECT sal FROM emp WHERE deptno=30 )

示例:打印本公司工资高于任意一名经理工资的员工详细信息

SELECT * FROM emp WHERE sal >ANY( SELECT sal FROM emp WHERE job='经理' )
8.3.3.3 单行多列(对象):

语法格式:

SELECT * FROM1 别名1 WHERE (1,列2) IN(SELECT1,列2 FROM2 别名2 WHERE 条件)

示例:

SELECT * FROM emp WHERE (job, deptno,sal) IN ( SELECT job, deptno, sal FROM emp WHERE ename='殷天正' )
8.3.3.4 多行多列(表):

语法格式:

SELECT *FROM1 别名1, (SELECT ....) 别名2 WHERE 筛选条件

附录1:

本篇笔记示例中使用的数据库的表:

CREATE TABLE emp (
    empno NUMERIC(4) NOT NULL,
    ename VARCHAR(10),
    job VARCHAR(9),
    mgr NUMERIC(4),
    hiredate DATETIME,
    sal NUMERIC(7, 2),
    comm NUMERIC(7, 2),
    deptno NUMERIC(2)
);


INSERT INTO emp VALUES (7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800, NULL, 20);
INSERT INTO emp VALUES (7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600, 300, 30);
INSERT INTO emp VALUES (7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250, 500, 30);
INSERT INTO emp VALUES (7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975, NULL, 20);
INSERT INTO emp VALUES (7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250, 1400, 30);
INSERT INTO emp VALUES (7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850, NULL, 30);
INSERT INTO emp VALUES (7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450, NULL, 10);
INSERT INTO emp VALUES (7788, 'SCOTT', 'ANALYST', 7566, '1982-12-09', 3000, NULL, 20);
INSERT INTO emp VALUES (7839, 'KING', 'PRESIDENT', NULL, '1981-11-17', 5000, NULL, 10);
INSERT INTO emp VALUES (7844, 'TURNER', 'SALESMAN', 7698, '1981-09-08', 1500, 0, 30);
INSERT INTO emp VALUES (7876, 'ADAMS', 'CLERK', 7788, '1983-01-12', 1100, NULL, 20);
INSERT INTO emp VALUES (7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950, NULL, 30);
INSERT INTO emp VALUES (7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000, NULL, 20);
INSERT INTO emp VALUES (7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300, NULL, 10);

 
CREATE TABLE dept (
    deptno NUMERIC(2),
    dname VARCHAR(14),
    loc VARCHAR(13)
);


INSERT INTO dept VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO dept VALUES (20, 'RESEARCH', 'DALLAS');
INSERT INTO dept VALUES (30, 'SALES', 'CHICAGO');
INSERT INTO dept VALUES (40, 'OPERATIONS', 'BOSTON');
 

CREATE TABLE bonus (
    empno NUMERIC(4),
    job VARCHAR(9),
    sal NUMERIC,
    comm NUMERIC
);

 
CREATE TABLE salgrade (
    grade NUMERIC,
    losal NUMERIC,
    hisal NUMERIC
);


INSERT INTO salgrade VALUES (1, 700, 1200);
INSERT INTO salgrade VALUES (2, 1201, 1400);
INSERT INTO salgrade VALUES (3, 1401, 2000);
INSERT INTO salgrade VALUES (4, 2001, 3000);
INSERT INTO salgrade VALUES (5, 3001, 9999);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值