自学笔记保存2019-05-12,0点05

E:\深度学习进阶:算法与应用 彭亮
rectified linear function:RELU 避免各个神经层之间的梯度变化太大.
限制boltzman机器:Hinton发明


2019-03-19,13点15
360手柄https://tieba.baidu.com/p/5384445579?red_tag=0835747646 楼主第一个帖子即可.

数学建模十大经典算法
https://wenku.baidu.com/view/2452386abf1e650e52ea551810a6f524ccbfcb2b.html
1.蒙特卡罗方法:随机数统计
2.数据拟合,参数估计,插值:
数据拟合:线性回归,多项式回归
参数估计:据估计,极大似然,区间估计
插值:lagrange,牛顿(https://baike.baidu.com/item/%E7%89%9B%E9%A1%BF%E6%8F%92%E5%80%BC%E5%85%AC%E5%BC%8F/18880731?fr=aladdin):这个牛顿公式特点是计算量比lagrange小非常多,效果也很好.
埃尔米特插值.
https://baike.baidu.com/item/%E5%9F%83%E5%B0%94%E7%B1%B3%E7%89%B9%E6%8F%92%E5%80%BC%E5%85%AC%E5%BC%8F/18983057?fr=aladdin
这里面写的很清楚.注意一个定理给定N+1个条件,那么在多项式P=N次多项式的条件下解唯一.其实本质就是n个方程解n个未知数.
三角插值:
在数学中,三角多项式是一类基于三角函数的函数的总称。三角多项式是可以表示成有限个正弦函数sin(nx) 和余弦函数cos(nx) 的和的函数,其中的x是变量,而n是一个自然数。三角多项式中每一项的系数可以是实数或者复数。如果系数是复数的话,那么这个三角多项式是一个傅里叶级数。 三角多项式在许多数学分支,如数学分析和数值分析中都有应用,例如在傅里叶分析中,三角多项式被用于傅里叶级数的表示,在三角插值法中,三角多项式被用于逼近周期性函数 [2] 。
3.线性规划,整数规划,多元规划,二次规划
4.图论:
1.求有向图的强连通分支.
2.最小生成树mst
3.最小树形图:https://baike.baidu.com/item/%E6%9C%80%E5%B0%8F%E6%A0%91%E5%BD%A2%E5%9B%BE%E9%97%AE%E9%A2%98/18894853
无圈且连通的无向图称为树(所以无圈,无向,连通就是树 2无一连通)

4.最短路径算法:
1.单源最短路径:dijkstra算法,bellman-ford算法
2.all-pairs 最短路径:floyd-warshall算法,johnson算法
5.网络流:
1.最大网络流算法 2.最小费用流
6.图匹配算法
1.匈牙利算法
6.模拟退火,神经网络,遗传算法,蚁群算法
https://cloud.tencent.com/developer/article/1103366

2019-04-04,9点43
论文交完了,继续学电脑.

MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。

2019-04-04,10点37
The type java.io.ObjectInputStream cannot be resolved.怎么弄.
https://blog.csdn.net/qq_15653601/article/details/78532975


2019-04-07,10点58
修改notepad++的背景色:
设置--语言格式设置---


2019-04-07,13点53
破解myeclipse10.
把run.bat改成java -jar me_active.jar 就可以破解软件了.


web开发
request是客户端向服务器端发送的请求
response反过来.


2019-04-08,22点07
网易云课堂:
Java开发工程师(Web方向)

http://www.example.com/
协议schema 域名
响应头

状态码:
200 ok
304 not modified 跟缓存相关,已经客户端已经有了,服务端不用返回了
404 not found 服务器端没找到
500 服务器内部错误

具体其他观看rfc文档

响应体

下面用chrome看一次请求的细节:
F12,发送一个请求,点name里面一个请求,右边就有对应header等东西.

linux下面安装tomcat
1.解压
2.配置catalina环境变量即可.

servlet用来写动态页面,这个就是要学习的地方

maven课程

maven是一个项目管理工具.


2019-04-09,10点03
win10自动启动
如果想要实现应用程序在所有的用户登录系统后都能自动启动,就把该应用程序的快捷方式放到“系统启动文件夹”里;
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

2019-04-09,9点42
安装maven

https://www.cnblogs.com/teach/p/5906425.html
发现自己的JAVA_HOME配置错了,
改成C:\Program Files\Java\jdk1.8.0_151 就可以了.


2019-04-09,15点14
git:不建议使用gui
windows: msysgit http://msysgit.github.io

git-config --global user.name "John EveryThing"

--local 在.git/config中 配置只影响本仓库
--global 影响到所有用户的仓库 ~/.gitconfig
--system 影响系统的git仓库.

git-add 把文件放到暂存区
git-commit 把暂存区提交

servlet技术:

servlet=server+applet

2019-04-09,21点41
关于出现The type java.io.ObjectInputStream cannot be resolved.的问题解决

https://blog.csdn.net/qq_15653601/article/details/78532975

sevlet技术使用get和post方法进行数据传输
区别是
get&post
传输方式:
http header & http body
url可见 & url 不可见
post更安全.


servlet的配置信息:
1.在servlet内部用init-param写在web.xml中.用getservletconfig来读取.
2.在整个web应用中共享的参数信息是context-param写在web.xml中.用getServletContext来获取.
利用setAttribute方法getAttribute方法来动态修改.

cookie:把会话数据保存在浏览器客户端
sessioin:把会话数据保存在服务器端

Cookie 的例子
String username=request.getParameter("username")

Cookie userNameCookie=new Cookie("username",usrName);


response.addCookie(userNameCookie);


Cookie[] cookies=request.getCookies();

下面取回来cookie
if (cookies!=null){
for (Cookie cookie:cookies){
if (cookie.getName().equals("username"))
{username=cookie.getvalue()}
}
}


看出来response是服务器返回数据
request是服务器从客户端拿数据.
所以servlet代码是针对server来写的.

转发和重定向的区别
1.浏览器地址栏的变化
2.请求范围
3.请求过程


jsp:java server pages
是一个简化的servlet

java数据库:
jdbc

2019-04-11,0点18
登陆mysql
mysql -u root -p


2019-04-11,0点28
eclipse使用.
1.一些套路模板,右键选择source里面有一些方法可以写
2.try catch 右键选择surround with就有.

2019-04-11,8点56
java.long.oom 内存溢出异常,超出了虚拟机的内存

2019-04-11,9点24
解决eclipse中出现Resource is out of sync with the file system问题

https://blog.csdn.net/moneyshi/article/details/60576489
解决方法就是在目录结构里面refresh一下
然后去window --设置里面设置一下.

连接池:dbcp
下载:
http://commons.apache.org/downloads/index.html


Unsupported major.minor version 52.0错误:
https://www.cnblogs.com/pangxiansheng/p/5426905.html

2019-04-11,10点03
com.mysql.jdbc.Connection.isValid(I)Z解决:
https://www.cnblogs.com/chenmingjun/p/9265112.html
就是下载最新的jdbc驱动.


防止数据库注入:用preparedstatements


死锁:指2个或者2个伊莎红的事务执行过程中的争资源.


数据库框架:MyBatis


orm:object/relation mappping
数据库和对象的映射

安装mybatis
1.https://github.com/mybatis/mybatis-3/releases
2.安装jdbc的jar包


2019-04-11,15点38
sql语句整了半天都不对,最后发现是括号不对,写了一个中文括号.所以一直报错.


2019-04-11,16点24
spring框架.
面向切面编程:aop:业务逻辑和非业务逻辑的分离.

highfaultin goals 高大的目标


2019-04-11,19点45
斯坦福教程cs224n 深度学习自然语言处理

学英语还是要多读,多背,主动的去学,听了就忘记忆还是不够.


onr-hot改用分布式密度来获得密度型编码

内积表示相似度,然后接softmax就得到了分布


2019-04-12,20点08
MLDS2017-Course-byLiHongyi
这个讲的非常好!!!!!!!

循环神经网络的奥妙在:
h',y=f(h,x)

具体就是
h1,y1=f(h0,x1)
h2,y2=f(h1,x2)
h3,y3=f(h2,x3)
h4,y4=f(h3,x4)

输入(x1,.....xn) 输出(y1,....yn)
奥妙在不管n多大,每一次都扔进去一个xi
参数始终是f里面的参数,这个参数量非常少.
训练很快.每一次的f内部参数都共享.然后训练时候用y1,....yn和groud true做bp算法即可.


diagonal 英[daɪˈægənl]


bidiretional:表示句子
x1,.......xi,.....xn
那么xi的特征是从x1到xi和xn到xi这2个特征,所以效果好.所以效果比unidirection效果好.

training lstm is faster than rnn

convolutional layer --sparse connectivity


computational graph
node:张量
edge:运算函数

然后对图中每一个edge可以求这个edge的导数.

这里面涉及一个parameter sharing的过程.这个编程技巧是1.把所有相同的变量看做不同的变量分别求导2.然后把结果加起来即可.
例如计算y=x*e^(x^2)=e^(x^2)+xe^(x^2)2(x) 就可以看做3个x的导数的求和.

这个在recurrent 网络里面常用,因为他里面的W都是共享的,需要分别算之后求和即可.


language model :
N-gram模型
NN-bases LM
RNN-bases LM

matrix factorization:
学习v1,...vn和h1,....hn乘积表示同时出现,学习这些向量.


softmax的作用:得到一个向量后,向量里面东西可以有负数,那么做softmax后,自动变正数,然后和还是1.自动变成了一个分部函数.效果很好.


spatial transformer layer

因为cnn is not invariant to scaling and rotation

和插值技术

2019-04-15,11点58
notpad关闭自动提醒:
https://www.cnblogs.com/make217/p/5671803.html


mvn安装jar包:

1.解压kaptcha-2.3.jar到c盘
2.mvn install:install-file -Dfile=c:\kaptcha-2.3.jar -DgroupId=com.google.code -DartifactId=kaptcha -Dversion=2.3 -Dpackaging=jar
之后jar包就装到本地仓库了.


看书吧.还是书写的详细.
java.web整合开发王者归来.pdf

非常牛逼的一本书!


2019-04-17,10点10
启动telnet命令
https://jingyan.baidu.com/article/3ea51489ba79e252e61bba97.html

2019-04-17,23点09


java里面字符串嵌套的书写:


"<form action ='"+requestURI+"'method='post'>" 的解释:

"<form action ='" 是一个字符串里面的'表示一个字符而已.
也就是说这个字符串的print后结果是<form action ='

+requestURI+ 表示字符串拼接.

"'method='post'>" 是同理一个字符串
第一个'给的是前面用的,后面的书写就是method ='post' 这个字符串.

综上,字符串""的匹配就是就近原则,"跟最近的"号匹配.


2019-04-19,8点59
LaTeX小技巧——File ended while scanning use of \@writefile错误的
https://www.cnblogs.com/djiankuo/p/6141529.html

2019-04-19,11点29
3个线,1个盘,一个手柄,一个ps4


2019-04-25,19点23
没事的时候应该做的事情:
1.拔罐子
2.滴眼药水
3.眼保健操


2019-04-25,20点12
myeclipse如何关闭断点调试自动跳入debug模式
https://jingyan.baidu.com/article/08b6a591b2d8be14a9092257.html


2019-04-26,19点30
myeclipse运行服务器tomacat
项目右键选择run as ---myeclipse server application

2019-04-27,8点31
百度网盘下载一半断网了,就需要退出百度盘重新登录才行.不然续不上上次下载进度

恶魔之魂模拟器:
1.https://www.bilibili.com/video/av12815458?from=search&seid=17646844454078081222
按照里面说明配置.
2.手柄配置,按快捷按钮里面第五个,configure controls,里面选x-input.就能用360手柄了
3.游戏上面点右键选择confige才行,点最上面一排的标签配置是没用的!

一定用新版本的模拟器我用0.06-8034
固件升级也是版本越高越好
syetem里面改中文就行.


2019-04-28,23点19

JSP页面中文乱码问题解决方法
https://jingyan.baidu.com/article/363872eccf5c266e4ba16f3a.html


2019-05-02,9点35

Java Web整合开发王者归来(源码) 还是能下载到的.
下载完把项目整体文件夹,import到myeclipse里面.

文件很多,需要看代码里面的类名来区分各个文件.类名是唯一的,不能重复.根据书中
代码的类名,来找对应名字是类名的文件.

2019-05-02,10点00
myeclipse的AhtiK Eclipse WordWrap 0.0.5安装
在线装不上,外网关系吧,所以下载zip包之后,install选择archive,选择本地zip包,之后安装
然后下面选项去掉第一个和第四个,左边竖数,禁止更新.就可以安装成功了.


2019-05-02,10点07
继续搞上面这个书的源码,这个书用的java6,所以把项目里面的java基础包切换成java6


2019-05-02,10点31
The method init(FilterConfig) of type CharacterEncodingFilter must override a superclass method

这个bug,在项目上点右键,compile版本选择1.6 才行,1.5版本bug太多.
编译版本,lib版本都用1.6

2019-05-02,14点48
注意地址栏的//符号.

如果写http://localhost:8080/filter/exceptionHandler.jsp 那么会正常显示
如果写http://localhost:8080//filter/exceptionHandler.jsp 那么就不会正常显示,而是只显示修改前的东西.


2019-05-02,14点50

${ pageContext.request.requestURI } 这么写总是错.
改成${ pageContext.request.requestURL } 就可以了.


2019-05-02,15点11
java命名:
首字母大写,后面首字母也大写: 用于类名
首字母小写,后面首字母也大写: 用于对象名

2019-05-02,22点53
欧美动作游戏再也别玩了,都太垃圾.

串行化(Serialization)是计算机科学中的一个概念,它是指将对象存储到介质(如文件、内存缓冲区等)中或是以二进制方式通过网络传输。

串行化和并行化

串行化也叫做序列化,就是把存在于内存的对象数据转化成可以保存成硬盘文件的形式去存储;
并行化也叫反序列化,就是把序列化后的硬盘文件加载到内存,重新变成对象数据.
也就是把内存中对象数据变成硬盘文件.


开库,还库, 观音的一个仪式流程.


basePath:http://localhost:8080/test/

getContextPath:/test
getServletPath:/test.jsp
getRequestURI:/test/test.jsp
getRequestURL:http://localhost:8080/test/test.jsp
getRealPath:D:\Tomcat 6.0\webapps\test\
getServletContext().getRealPath:D:\Tomcat 6.0\webapps\test\
getQueryString:p=fuck


2019-05-04,11点37
继续听章鱼恐怖小说.
http://www.lanren9.com/video/?18948-1-504.html


.class不好使就改成xxx['class'] 或者 .getClass()


2019-05-07,18点31

屏蔽某些编译时的警告信息
在强制类型转换的时候编译器会给出警告
加上

程序代码
@SuppressWarnings("unchecked")
就不会警告了

2019-05-07,20点47
登陆mysql:


cmd中mysql -uroot -proot 即可

2019-05-07,21点53

near'OPTION' SQL_SELECT_LIMIT=DEFAULT' at line 1

错误
解决办法:
是mysql的版本和驱动的版本不匹配导致的,我的mysql版本是5.6的,刚开始使用的驱动是5.1.18,
,但是mysql5.6已经抛弃了这个参数,所以会报上面错误,换成驱动mysql-connector-java-5.1.31-bin.jar后解决。

2019-05-08,9点55
myeclipse里面add struct capability灰色,说明项目已经添加过了,或者项目不是web项目也添加不了.

2019-05-08,15点40

mysql多表联查


CREATE TABLE t_student (
id int(25) PRIMARY KEY auto_increment,
number int(25) UNIQUE not null,
name varchar(25) not null ,
gender varchar(9) not null,
height int(25) default 0,
weight int(25) default 0,
comment varchar(9) default ' '
);
insert into t_student values(null,2018001,'李四','男',167,50,'');
insert into t_student values(null,2018002,'李内','男',173,58,'');
insert into t_student values(null,2018003,'蒙牛','男',172,70,'');


create table t_grade (
id int(26) primary key auto_increment,
number int(26) not null ,
subject varchar(10) not null ,
class varchar(10) not null,
score float(10,2) default 0.0 ,
foreign key (number) REFERENCES t_student(number));

insert into t_grade values(null,2018001,'数学','高一上',89);
insert into t_grade values(null,2018001,'语文','高一上',93);
insert into t_grade values(null,2018001,'英语','高一上',79);

insert into t_grade values(null,2018002,'数学','高一上',84);
insert into t_grade values(null,2018002,'语文','高一上',95);
insert into t_grade values(null,2018002,'英语','高一上',45);

insert into t_grade values(null,2018003,'数学','高一上',84);
insert into t_grade values(null,2018003,'语文','高一上',99);
insert into t_grade values(null,2018003,'英语','高一上',78);

select name,student.number,class,sum(score) from t_student as student,t_grade as grade
where student.number=grade.number and class = '高一上'
GROUP BY grade.number ORDER BY SUM(score) ASC ;

select name,gender,students.number,class,SUM(score) from t_student as students,t_grade as grade
where students.number=grade.number and class= '高一上' and students.gender='女'
GROUP BY grade.number ORDER BY SUM(score) ASC;

2019-05-08,21点46
还是自己刷java就业培训教程高清版pdf


病情分析:
这位朋友你好,飞蚊症分为生理性飞蚊症和病理性飞蚊症。生理性飞蚊症的病因虽然很难找,但治疗生理性飞蚊症不需任何药物,发生的原因可能是由于过度用眼、长期的心理抑郁造成的。因此,生理性飞蚊症患者只需要在平时多注意眼睛健康,多做户外运动,练练体操,这样可以增加自身免疫力。
指导意见:
饮食方面要注意些,要饮存天然矿物质的水。还要以米饭为主食,多吃一些绿色食品,蔬菜最好以凉拌为主。水果要吃一些爽口的。放松心情后眼睛大可恢复正常。

为什么JAVA中的lang包要叫"lang"包?什么意思?_
language,语言包,Java语言的基本功能都在里面。


java.awt----包含了构成抽象窗口工具集( abstract window toolkits)的多个类,这
些类被用来构建和管理应用程序的图形用户界面(GUI)

2019-05-09,13点34

需要的东西:
springboot
Nginx
mysql
mybatis


2019-05-09,14点14

vmware出现VMware提示:已将该虚拟机配置为使用 64 位客户机操作系统。但是,无法执行 64 位操作。解决方案

进入bios里面intel 虚拟化技术 先设置disable重启,然后再设置enable重启后就可以了.
原因未知.


2019-05-09,14点30
安装Nginx

2019-05-09,14点49
配置虚拟机桥连.

IPv4 地址 . . . . . . . . . . . . : 10.20.8.128(首选)
子网掩码 . . . . . . . . . . . . : 255.255.252.0
获得租约的时间 . . . . . . . . . : 2019年5月9日 14:09:08
租约过期的时间 . . . . . . . . . : 2019年5月9日 18:09:08
默认网关. . . . . . . . . . . . . : 10.20.11.254

配置方法:
https://blog.csdn.net/xiayun1995/article/details/83927295
里面我的参数是
ip addr add 10.20.8.127/24 dev eth0
成功登陆百度了.

公用网络防火墙关闭就能让虚拟机ping通主机了.

自己电脑就装图形界面的centos,然后编辑用gedit 后面文件地址.
这样开的是图形界面的编辑器,方便多了.


我自己虚拟机
root
580312

2019-05-09,16点14
centos文件夹打开方式修改.
https://blog.csdn.net/lyd135364/article/details/73732639

2019-05-09,17点01
https://jingyan.baidu.com/article/e8cdb32b136ad637052bad26.html
centos装vmwar-tool
之后就可以右键centos里面设置共享文件夹添加进去文件夹.然后在虚拟机中的mnt/hgfs中可以看到文件夹了.这样双向可以传文件了.


2019-05-09,17点55
开整Nginx

输入“cat /etc/passwd”命令查看所有的用户信息。

https://www.runoob.com/linux/nginx-install-setup.html
完全按照步奏走可以出来,最后输入的ip地址输入不是按照图片里面输入的.而是输入
localhost就可以了.看到welcome画面.

2019-05-09,18点59

Linux中修改环境变量及生效方法
方法一:

  在/etc/profile文件中添加变量【对所有用户生效(永久的)】

  用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。

  要让刚才的修改马上生效,需要执行以下代码

安装mysql
https://www.cnblogs.com/wangdaijun/p/6132632.html

按照这个流程可以成功.注意mysql必须安装到/usr/local里面文件夹名字也必须是mysql否则启动不起来.

2019-05-09,21点48
重学linux


/boot 200mb
/home 2G
/tmp 1-5G
/usr 很大
/var 很大
/swap 2G


sync 将数据由内存同步到硬盘中。

[Shift]+[Page Up] ## 往前翻页

[Shift]+[Page Down] ## 往后翻页


  ETC

  在“etc/bin”中的“etc”真正代表的是“etcetera”(附加物)。在早期的Unix系统中,最为重要的目录是“bin”目录 (“bin”是“binaries”二进制文件――编译后的程序的缩写),“etc”中则包含琐碎的程序,如启动、关机和管理。运行一个Linux必须的东西的列表是:一个二进制程序,etcetera,etcetera――换句话说,是一个底层的重要项目,通常添加一些次等重要的零碎事物。今天, “etc”包含了广泛的系统配置文件,这些配置文件几乎包含了系统配置的方方面面,同样非常重要。


  RC

  在Linux中,最为常用的缩略语也许是“rc”,它是“runcomm”的缩写――即名词“run command”(运行命令)的简写。今天,“rc”是任何脚本类文件的后缀,这些脚本通常在程序的启动阶段被调用,通常是Linux系统启动时。如 /etc/rs是Linux启动的主脚本,而.bashrc是当Linux的bash shell启动后所运行的脚本。.bashrc的前缀“.”是一个命名标准,它被设计用来在用户文件中隐藏那些用户指定的特殊文件;“ls”命令默认情况下不会列出此类文件,“rm”默认情况下也不会删除它们。许多程序在启动时,都需要“rc”后缀的初始文件或配置文件,这对于Unix的文件系统视图来说,没有什么神秘的。


/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。

在以上实例中,mysql 文件是一个目录文件,属主和属组都为 mysql,属主有可读、可写、可执行的权限;
与属主同组的其他用户有可读和可执行的权限;
其他用户也有可读和可执行的权限。


chgrp:更改文件属组
chown:更改文件属主

springboot学习:

https://ke.qq.com/webcourse/index.html#cid=260513&term_id=100307171&taid=1765059760224673&vid=a14278fsd0a


1.一定要用jdk1.8
最终变成一个jar包执行.
如何学习框架-看源码


第五节课:实现springboot helloworld


1.创建maven:
安装破解好myeclipse,然后windows--preferences--myEclipse---maven4Myeclipse--installations----select the installation used to launch Maven----tick Embeddded(3.02/1.00.me201109061757)--ok
所以如果myeclipse有这个插件,就不要用自己安装的,整合的不会出错.


好像自带maven版本太低了.
所以还是要自己配
https://www.cnblogs.com/yangmingyu/p/6908519.html
compile之后maven dependency这个目录就会出现了.


maven设置仓库地址:
https://blog.csdn.net/qq_38225558/article/details/83956373

2019-05-11,12点19
上面的操作最后还是失败了,去官网看,说是用sts这个软件来跑sping很方便.就用了一下,果然好使.记录步奏.

1.创立maven项目,
2.添加parent和dependencies到pom.xml
然后右键pom.xml选择run as---maven build
jdk改成1.8
3.写好controller,运行就跑起来了.

2019-05-11,12点07
还是学mysql吧
这个实用点.
https://study.163.com/course/courseMain.htm?courseId=1004181041&_trace_c_p_k2_=cb2a14f766fa4955a3cf82cae1cb6079


数据和题目都在这里
https://blog.csdn.net/njyr21/article/details/79358938

mysql> select * from dept;

+--------+-------------+----------+
| deptno | dname | loc |
+--------+-------------+----------+
| 10 | ACCOUNTING | NEW YORK |
| 20 | RESEARCHING | DALLAS |
| 30 | SALES | CHICAGO |
| 40 | OPERATIONS | BOSTON |
+--------+-------------+----------+


mysql> select * from emp;
+-------+--------+-----------+------+------------+---------+---------+--------+
| empno | ename | job | mgr | hiredate | sal | comm | deptno |
+-------+--------+-----------+------+------------+---------+---------+--------+
| 7369 | SIMITH | 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 |
| 7782 | CLARK | MANAGER | 7839 | 1981-06-09 | 2450.00 | NULL | 10 |
| 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 | NULL | 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 |
+-------+--------+-----------+------+------------+---------+---------+--------+


mysql> select * from salgrade;
+-------+-------+-------+
| grade | losal | hisal |
+-------+-------+-------+
| 1 | 700 | 1200 |
| 2 | 1201 | 1400 |
| 3 | 1401 | 2000 |
| 4 | 2001 | 3000 |
| 5 | 3001 | 5000 |
+-------+-------+-------+
5 rows in set (0.00 sec)


clerk秘书


as是别名操作,把一个变量做缩写.

第一题:取得每个部门最高薪水的人员名称
select deptno,max(sal) as maxsal
from emp group by deptno;


+--------+---------+
| deptno | maxsal |
+--------+---------+
| 10 | 5000.00 |
| 20 | 3000.00 |
| 30 | 2850.00 |
+--------+---------+


然后拼接,其实join和inner join 一样


select e.ename ,t.*
from emp e
join ( select deptno,max(sal) as maxsal
from emp group by deptno ) t
on t.deptno=e.deptno;


select e.ename ,t.*
from emp e
inner join ( select deptno,max(sal) as maxsal
from emp group by deptno ) t
on t.deptno=e.deptno;

+--------+--------+---------+
| ename | deptno | maxsal |
+--------+--------+---------+
| SIMITH | 20 | 3000.00 |
| ALLEN | 30 | 2850.00 |
| WARD | 30 | 2850.00 |
| JONES | 20 | 3000.00 |
| MARTIN | 30 | 2850.00 |
| BLAKE | 30 | 2850.00 |
| CLARK | 10 | 5000.00 |
| SCOTT | 20 | 3000.00 |
| KING | 10 | 5000.00 |
| TURNER | 30 | 2850.00 |
| ADAMS | 20 | 3000.00 |
| JAMES | 30 | 2850.00 |
| FORD | 20 | 3000.00 |
| MILLER | 10 | 5000.00 |
+--------+--------+---------+

最后加上where即可.

select e.ename ,t.*
from (emp e
inner join ( select deptno,max(sal) as maxsal
from emp group by deptno ) t
on t.deptno=e.deptno)
where e.sal=t.maxsal; #从这里就知道where里面的条件还是初始表里面的表头,跟join之后无关.

#!!!!!!!
关键点,别名一定要写在括号的外面,就是1046行的t,一定要写在括号外面才能识别.否则,会把t误以为是deptno的别名.
所以:规则是!对于不止一个单词的中间表起别名的时候一定要括起来,然后括号的外面写上别名!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


第二题:
哪些人的薪水在部门平均薪水乊上

求部门平均薪水:按照部门分组求平均值

select deptno,avg(sal) as avgsal #select 后面接需要提取的列
from emp #from 后面接从哪个表提取
group by deptno; #group by写分类标准.


#注意不能在中间表上写注释.

select e.ename ,t.*
from

emp e
inner join ( select deptno,avg(sal) as avgsal
from emp
group by deptno ) t
on t.deptno=e.deptno



where e.sal>t.avgsal;

第三题:取得部门中(所有人)平均薪水的等级


第一步:得到部门中(所有人)平均薪水.


(select deptno,avg(sal) as avgsal
from emp
group by deptno ) t


第二部连接表t和表salgrade


select t.deptno , s.grade
from salgrade s
join (select deptno,avg(sal) as avgsal
from emp
group by deptno ) t
on t.avgsal between s.losal and s.hisal;


取得部门中(所有人的)平均的薪水等级


第一步:求每一个员工的薪水等级

select e.ename ,s.grade
from emp e
join salgrade s

on e.sal between s.losal and s.hisal;


第二部:分部门计算均值.


select e.deptno ,avg(s.grade)
from


emp e
join salgrade s
on e.sal between s.losal and s.hisal


group by e.deptno;


第四题:
不准用组函数(MAX),取得最高薪水(给出两种解决
方案)


解法1:select ename,sal from emp order by sal desc limit 1;


select sal
from emp
where sal not in (select a.sal
from emp a join emp b on a.sal<b.sal);

NO:5
取得平均薪水最高的部门的部门编号

求所有部门的部门平均薪水
select e.deptno,avg(e.sal) avsal
from emp e
group by e.deptno

求最大值

select max(t.avsal)
from
(select e.deptno dep2,avg(e.sal) avsal
from emp e
group by e.deptno) t;


注意别名的使用,也就是变量后面进接着写一个变量就表示这个变量的别名.

下面用having这个关键字来实现.


select e.deptno,avg(e.sal) as avgsal
from emp e
group by
e.deptno
having
avgsal=(select max(t.avsal)
from
(select e.deptno dep2,avg(e.sal) avsal
from emp e
group by e.deptno) t
);


#因为是先select后挑选,所以这里面要用having关键字来做.


no6:取得平均薪水最高的部门的部门名称

select emp.deptno, avg(sal)
from emp
group by deptno;

然后排序即可.

select emp.deptno, avg(sal)
from emp
group by deptno
order by avg(sal) desc limit 1;


然后根据部门编号获取部门名称.

select dept.dname
from (

dept join

(select emp.deptno, avg(sal)
from emp
group by deptno
order by avg(sal) desc limit 1 )t


on dept.deptno=t.deptno


)

no7:求平均薪水的等级最低的部门的部门名称

1.平均薪水表.


select deptno, avg(sal)
from emp
group by deptno

2.加入等级.

select * from(


dept inner join
(select *
from (

(select deptno, avg(sal) avgl
from emp
group by deptno)t join salgrade
on t.avgl between losal and hisal


))g
on dept.deptno=g.deptno

)

#语句跑完会发现列重复,原因是别名引起的原因.
#有一种特殊情况,当两个要关联表的字段名是一样的,我们可以使用 USING ,这时候一般合并之后一定会出现重复的列.
有2种处理方法.
1.是使用table.列来限制取的列,下面就是解决方法的展示.

select g.deptno,grade,dname from(


dept inner join
(select *
from (

(select deptno, avg(sal) avgl
from emp
group by deptno)t join salgrade
on t.avgl between losal and hisal


))g
on dept.deptno=g.deptno

)


2.join的2个表里面的列名重复时候,用using来替代on


select * from(


dept inner join
(select *
from (

(select deptno, avg(sal) avgl
from emp
group by deptno)t join salgrade
on t.avgl between losal and hisal


))g
using (deptno)

)
完美解决!第二种用using的方法显然更高级,更方便.


ok继续解决我们的题目.


select * from(


dept inner join
(select *
from (

(select deptno, avg(sal) avgl
from emp
group by deptno)t join salgrade
on t.avgl between losal and hisal


))g
using (deptno)

)order by grade asc limit 1; #轻松解决.

第八题:


取得比普通员工(员工代码没有在mgr上出现的)的
最高薪水还要高的经理人姓名

这个题目叼.emp这个表中mgr编号表示当前行的上司的编号是多少.
所以如果一个员工他的编号不在mgr列中,就表示他不是一个管理者.

select distinct mgr from emp;
这里面是包括null的.所以用in的话会有bug,所以一定要用where除掉null!!!!!!!!!!


select * from emp where empno not in (select distinct mgr from emp);


12.取得每个薪水等级有多少员工


#当表中的名字没有重复时候不用加限制符了.


select * from
emp join salgrade
on sal between losal and hisal;


select grade,count(*) from
emp join salgrade
on sal between losal and hisal
group by grade;

13题:


数据:

drop table if exists s;
drop table if exists c;
drop table if exists sc;

create table s(
sno int(10) primary key,
sname varchar(14)
);

create table c(
cno int(10) primary key,
cname varchar(14),
cteacher varchar(14)
);

create table sc(
sno int(10),
cno int(10),
scgrade int(10),
primary key(sno,cno)
);

insert into s(sno,sname) values(1,'a');
insert into s(sno,sname) values(2,'b');
insert into s(sno,sname) values(3,'c');
insert into s(sno,sname) values(4,'d');

insert into c(cno,cname,cteacher) values(1,'java','王老师');
insert into c(cno,cname,cteacher) values(2,'C++','张老师');
insert into c(cno,cname,cteacher) values(3,'C#','李老师');
insert into c(cno,cname,cteacher) values(4,'mysql','周老师');
insert into c(cno,cname,cteacher) values(5,'oracle','黎明');

insert into sc(sno,cno,scgrade) values(1,1,50);
insert into sc(sno,cno,scgrade) values(1,2,50);
insert into sc(sno,cno,scgrade) values(1,3,50);
insert into sc(sno,cno,scgrade) values(2,2,80);
insert into sc(sno,cno,scgrade) values(2,3,70);
insert into sc(sno,cno,scgrade) values(2,4,59);
insert into sc(sno,cno,scgrade) values(3,1,60);
insert into sc(sno,cno,scgrade) values(3,2,61);
insert into sc(sno,cno,scgrade) values(3,3,99);
insert into sc(sno,cno,scgrade) values(3,4,100);
insert into sc(sno,cno,scgrade) values(3,5,52);
insert into sc(sno,cno,scgrade) values(4,3,82);
insert into sc(sno,cno,scgrade) values(4,4,99);
insert into sc(sno,cno,scgrade) values(4,5,40);

select * from s;
select * from c;
select * from sc;


2019-05-11,23点46

mysql中添加数据时,报错(incorrect string value:'\xf0\x9f ) 字符转换不正确

https://www.cnblogs.com/FanJava/p/8107891.html

mysql> select * from s;
+-----+-------+
| sno | sname |
+-----+-------+
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | d |
+-----+-------+

mysql> select * from c;
+-----+--------+----------+
| cno | cname | cteacher |
+-----+--------+----------+
| 1 | java | 王老师 |
| 2 | C++ | 张老师 |
| 3 | C# | 李老师 |
| 4 | mysql | 周老师 |
| 5 | oracle | 黎明 |
+-----+--------+----------+


mysql> select * from sc;
+-----+-----+---------+
| sno | cno | scgrade |
+-----+-----+---------+
| 1 | 1 | 50 |
| 1 | 2 | 50 |
| 1 | 3 | 50 |
| 2 | 2 | 80 |
| 2 | 3 | 70 |
| 2 | 4 | 59 |
| 3 | 1 | 60 |
| 3 | 2 | 61 |
| 3 | 3 | 99 |
| 3 | 4 | 100 |
| 3 | 5 | 52 |
| 4 | 3 | 82 |
| 4 | 4 | 99 |
| 4 | 5 | 40 |
+-----+-----+---------+


13ti:找出没选过“黎明”老师的所有学生姓名

select cno from c where cteacher ='黎明';
#注意中文需要加单引号.

select sno from sc where cno in (select cno from c where cteacher ='黎明');


select sname from s where s.sno not in (select sno from sc where cno in (select cno from c where cteacher ='黎明'));


13ti:列出2门以上(含2门)bu及格学生姓名及平均成绩

每一个学生的不及格科目数

select sno from sc where scgrade<60 group by sno
having count(*)>=1;

列出所有员工及领导的名字


14.列出所有员工及他的领导的名字


select a.ename as yuangong ,b.ename as lingdao from (

emp a left join emp b
on a.mgr=b.empno

);


注意这里面必须要left join 因为右边可以为null,不在左边出现,这时候也需要左边保留.
所以左边的每一个员工必须要有一个领导.!!!!!!!!!

猜你喜欢

转载自www.cnblogs.com/zhangbo2008/p/10850713.html