更新了部分文档

pull/25/head
jackfrued 2019-01-25 01:44:42 +08:00
parent 4d9f270350
commit ea9adc68c4
3 changed files with 3296 additions and 54 deletions

View File

@ -1,51 +1,55 @@
-- 创建人力资源管理系统数据库
drop database if exists HRS;
create database HRS default charset utf8;
-- 切换数据库上下文环境
use HRS;
-- 删除表
drop table if exists TbEmp;
drop table if exists TbDept;
-- 创建部门表
create table TbDept
drop database if exists hrs;
create database hrs default charset utf8;
use hrs;
drop table if exists tb_emp;
drop table if exists tb_dept;
create table tb_dept
(
deptno tinyint primary key, -- 部门编号
dname varchar(10) not null, -- 部门名称
dloc varchar(20) not null -- 部门所在地
dno int not null comment '编号',
dname varchar(10) not null comment '名称',
dloc varchar(20) not null comment '所在地',
primary key (dno)
);
-- 添加部门记录
insert into TbDept values (10, '会计部', '北京');
insert into TbDept values (20, '研发部', '成都');
insert into TbDept values (30, '销售部', '重庆');
insert into TbDept values (40, '运维部', '深圳');
-- 创建员工表
create table TbEmp
insert into tb_dept values
(10, '会计部', '北京'),
(20, '研发部', '成都'),
(30, '销售部', '重庆'),
(40, '运维部', '深圳');
create table tb_emp
(
empno int primary key, -- 员工编号
ename varchar(20) not null, -- 员工姓名
job varchar(20) not null, -- 员工职位
mgr int, -- 主管编号
sal int not null, -- 员工月薪
comm int, -- 每月补贴
dno tinyint -- 所在部门编号
eno int not null comment '员工编号',
ename varchar(20) not null comment '员工姓名',
job varchar(20) not null comment '员工职位',
mgr int comment '主管编号',
sal int not null comment '员工月薪',
comm int comment '每月补贴',
dno int comment '所在部门编号',
primary key (eno)
);
-- 添加外键约束
alter table TbEmp add constraint fk_dno foreign key (dno) references TbDept(deptno);
-- 添加员工记录
insert into TbEmp values (7800, '张三丰', '总裁', null, 9000, 1200, 20);
insert into TbEmp values (2056, '乔峰', '分析师', 7800, 5000, 1500, 20);
insert into TbEmp values (3088, '李莫愁', '设计师', 2056, 3500, 800, 20);
insert into TbEmp values (3211, '张无忌', '程序员', 2056, 3200, null, 20);
insert into TbEmp values (3233, '丘处机', '程序员', 2056, 3400, null, 20);
insert into TbEmp values (3251, '张翠山', '程序员', 2056, 4000, null, 20);
insert into TbEmp values (5566, '宋远桥', '会计师', 7800, 4000, 1000, 10);
insert into TbEmp values (5234, '郭靖', '出纳', 5566, 2000, null, 10);
insert into TbEmp values (3344, '黄蓉', '销售主管', 7800, 3000, 800, 30);
insert into TbEmp values (1359, '胡一刀', '销售员', 3344, 1800, 200, 30);
insert into TbEmp values (4466, '苗人凤', '销售员', 3344, 2500, null, 30);
insert into TbEmp values (3244, '欧阳锋', '程序员', 3088, 3200, null, 20);
insert into TbEmp values (3577, '杨过', '会计', 5566, 2200, null, 10);
insert into TbEmp values (3588, '朱九真', '会计', 5566, 2500, null, 10);
alter table tb_emp add constraint fk_emp_dno foreign key (dno) references tb_dept (dno);
insert into tb_emp values
(7800, '张三丰', '总裁', null, 9000, 1200, 20),
(2056, '乔峰', '分析师', 7800, 5000, 1500, 20),
(3088, '李莫愁', '设计师', 2056, 3500, 800, 20),
(3211, '张无忌', '程序员', 2056, 3200, null, 20),
(3233, '丘处机', '程序员', 2056, 3400, null, 20),
(3251, '张翠山', '程序员', 2056, 4000, null, 20),
(5566, '宋远桥', '会计师', 7800, 4000, 1000, 10),
(5234, '郭靖', '出纳', 5566, 2000, null, 10),
(3344, '黄蓉', '销售主管', 7800, 3000, 800, 30),
(1359, '胡一刀', '销售员', 3344, 1800, 200, 30),
(4466, '苗人凤', '销售员', 3344, 2500, null, 30),
(3244, '欧阳锋', '程序员', 3088, 3200, null, 20),
(3577, '杨过', '会计', 5566, 2200, null, 10),
(3588, '朱九真', '会计', 5566, 2500, null, 10);
-- 查询薪资最高的员工姓名和工资
@ -67,22 +71,22 @@ insert into TbEmp values (3588, '朱九真', '会计', 5566, 2500, null, 10);
-- 查询薪资排名4~6名的员工姓名和工资
use HRS;
-- use hrs;
drop procedure if exists sp_avg_sal_by_dept;
-- drop procedure if exists sp_avg_sal_by_dept;
create procedure sp_avg_sal_by_dept(deptno integer, out avg_sal float)
begin
select avg(sal) into avg_sal from TbEmp where dno=deptno;
end;
-- create procedure sp_avg_sal_by_dept(dno integer, out avg_sal float)
-- begin
-- select avg(sal) into avg_sal from tb_emp where dno=dno;
-- end;
call sp_avg_sal_by_dept(10, @avgSal);
-- call sp_avg_sal_by_dept(10, @avgSal);
select @avgSal;
-- select @avgSal;

File diff suppressed because it is too large Load Diff

View File

@ -100,7 +100,7 @@ if __name__ == '__main__':
我们希望录入5个学生3门课程的成绩于是定义了一个有5个元素的列表而列表中的每个元素又是一个由3个元素构成的列表这样一个列表的列表刚好跟一个表格是一致的相当于有5行3列接下来我们通过嵌套的for-in循环输入每个学生3门课程的成绩。程序执行完成后我们发现每个学生3门课程的成绩是一模一样的而且就是最后录入的那个学生的成绩。
要想把这个坑填平我们首先要区分对象和对象的引用这两个概念而要区分这两个概念还得先说说内存中的栈和堆。我们经常会听人说起“堆栈”这个词但实际上“堆”和“栈”是两个不同的概念。众所周知一个程序运行时需要占用一些内存空间来存储数据和代码那么这些内存从逻辑上又可以做进一步的划分。对底层语言如C语言有所了解的程序大都知道程序中可以使用的内存从逻辑上可以为五个部分按照地址从高到低依次是stack、堆heap、数据段data segment、只读数据段static area和代码段code segment。其中栈用来存储局部、临时变量以及函数调用时保存现场和恢复现场需要用到的数据这部分内存在代码块开始执行时自动分配代码块执行结束时自动释放通常由编译器自动管理堆的大小不固定可以动态的分配和回收因此如果程序中有大量的数据需要处理这些数据通常都放在堆上如果堆空间没有正确的被释放会引发内存泄露的问题而像Python、Java等编程语言都使用了垃圾回收机制来实现自动化的内存管理自动回收不再使用的堆空间。所以下面的代码中变量`a`并不是真正的对象,它是对象的引用,相当于记录了对象在堆空间的地址,通过这个地址我们可以访问到对应的对象;同理,变量`b`是列表容器的引用,它引用了堆空间上的列表容器,而列表容器中并没有保存真正的对象,它保存的也仅仅是对象的引用。
要想把这个坑填平我们首先要区分对象和对象的引用这两个概念而要区分这两个概念还得先说说内存中的栈和堆。我们经常会听人说起“堆栈”这个词但实际上“堆”和“栈”是两个不同的概念。众所周知一个程序运行时需要占用一些内存空间来存储数据和代码那么这些内存从逻辑上又可以做进一步的划分。对底层语言如C语言有所了解的程序大都知道程序中可以使用的内存从逻辑上可以为五个部分按照地址从高到低依次是stack、堆heap、数据段data segment、只读数据段static area和代码段code segment。其中栈用来存储局部、临时变量以及函数调用时保存现场和恢复现场需要用到的数据这部分内存在代码块开始执行时自动分配代码块执行结束时自动释放通常由编译器自动管理堆的大小不固定可以动态的分配和回收因此如果程序中有大量的数据需要处理这些数据通常都放在堆上如果堆空间没有正确的被释放会引发内存泄露的问题而像Python、Java等编程语言都使用了垃圾回收机制来实现自动化的内存管理自动回收不再使用的堆空间。所以下面的代码中变量`a`并不是真正的对象,它是对象的引用,相当于记录了对象在堆空间的地址,通过这个地址我们可以访问到对应的对象;同理,变量`b`是列表容器的引用,它引用了堆空间上的列表容器,而列表容器中并没有保存真正的对象,它保存的也仅仅是对象的引用。
```Python
a = object()
@ -188,4 +188,3 @@ Python为什么要做出这样的设定呢用一句广为流传的格言来
需要提醒大家注意的是Python类中的那些魔法方法如\_\_str\_\_、\_\_repr\_\_等这些方法并不是私有成员哦虽然它们以双下划线开头但是他们也是以双下划线结尾的这种命名并不是私有成员的命名这一点对初学者来说真的很坑。
(未完待续)