子查询学习(2)

exists和not exists关键字

exists操作符检查在子查询中是否存在满足条件的行。exists只返回true或false。

exists和关联子查询:
1、如果在子查询中存在满足条件的行:
如果能找到一行,对于这个子查询来说,不继续查找,exists返回true。
继续下一个子查询。

2、如果在子查询中不存在满足条件的行:
如果没有一行满足子查询条件,子查询的查询结果为空,exists返回false。
继续下一个子查询。

因为exists只返回true或false,所以在子查询中select后面只要写成select 1就行了。
继续阅读子查询学习(2)

子查询学习

子查询规则(初级):

子查询可以写在WHERE子句、HAVING子句、FROM子句中。
子查询分为多行子查询和单行子查询。

如果能够保证返回的行数小于等于1行的,则是单行子查询。
使用单行比较操作符:=、>、>=、<、<=、<>。
否则是多行子查询。
使用多行比较符:IN、> ANY 、> ALL、< ANY、< ALL。

下面我们测试下子查询的效果,还是用之前的TEST_T表。表结构在http://www.live-in.org/archives/2114.html

子查询一般情况下返回一个列的值(单列子查询),也可以返回多个列的值(多列子查询),但要成对匹配。
单列子查询可以在DECODE和CASE语句,还有SELECT中除GROUP BY子句以外的所有子句中使用。

多列子查询例子:

select t1.id 序号, t1.no 班级, t1.s_name 学生名字, t1.score 分数 from test_t t1 where (t1.id,t1.score) in (select t2.id, t2.score from test_t t2);

这里子查询返回两个列,但外层查询也要同时匹配这两个列。
继续阅读子查询学习

Linux rz和sz命令

rz,sz是Linux/Unix同Windows进行ZModem文件传输的命令行工具。
优点就是不用再开一个sftp工具登录上去上传下载文件。

sz:将选定的文件发送(send)到本地机器
rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器

安装命令:

yum install lrzsz

从服务端发送文件到客户端:

sz filename

从客户端上传文件到服务端:

rz

在弹出的框中选择文件,上传文件的用户和组是当前登录的用户

SecureCRT设置默认路径:
Options -> Session Options -> Terminal -> Xmodem/Zmodem ->Directories

Xshell设置默认路径:
右键会话 -> 属性 -> ZMODEM -> 接收文件夹

PS:同事和我说SecureCRT可以方便的上传下载文件,而Xshell没有。我上网一查原来用的是同一个sz/rz工具,Xshell下没有菜单选择要输命令。

group by子句跟多个字段分析

group by子句的作用是对列进行分组,那么如果后面有多个列,它是如何做的呢?下面做一个简单的分析。

以下是使用的SQL语句:

CREATE TABLE
TEST_T
(
ID VARCHAR2(50),
NO VARCHAR2(50),
T_NAME VARCHAR2(50),
S_NAME VARCHAR2(50),
SCORE VARCHAR2(50)
);

insert into TEST_T VALUES(1, 1, 'Peter', '张三', 60);
insert into TEST_T VALUES(2, 2, 'Mary', '李四', 99);
insert into TEST_T VALUES(3, 3, 'Tom', '王五', 76);
insert into TEST_T VALUES(4, 1, 'Peter', '小A', 59);
insert into TEST_T VALUES(5, 2, 'Mary', '小B', 60);
insert into TEST_T VALUES(6, 3, 'Tom', '小C', 99);
insert into TEST_T VALUES(7, 1, 'Peter', 'Zhang', 70);
insert into TEST_T VALUES(8, 2, 'Mary', 'Wang', 88);
insert into TEST_T VALUES(9, 3, 'Tom', 'Li', 90);

继续阅读group by子句跟多个字段分析

excel技巧

1、填充为同个值
在A1填入1,选中A1,把鼠标放到A1右下角,这时鼠标变成实心十字,最后双击鼠标左键,这一列都变成1了

2、按1 2 3 …顺序填充
在A1和A2分别填上1和2,选中A1和A2,把鼠标放到A2的右下角,这时鼠标变成实心十字,最后双击鼠标左键

3、删除重复项
选中一列,数据-删除重复项

4、在一列数值后面都加上逗号
1)假设数据在A列,在B1列输入=A1&”,”
2)鼠标放到右下角,变成实心十字后往下拉
或选中B1单元格,复制,选中和A列数据平行的单元格,粘贴
注:B1列不能是文本格式,文本格式不会引用列

对双引号的转义,用””,两个引号转义一个引号
=”{“”storecode””:”””&A2&”””,””business””:”””&B2&”””,””area””:”””&C2&”””,””address””:”””&D2&”””},”

5、excel截取字符串
MID函数:MID(text,start_num,num_chars)
text是包含要提取字符的文本串。
start_num是文本中要提取的第一个字符的位置。
num_chars是要提取的字符个数,从左边开始提取字符。
如要截取A2列某字符串从第21位开始的4位:mid(A2,21,4)

6、将txt文本文档的报表导入excel
数据-(获取外部数据)自文本-设置分隔符号-完成

7、excel中文本数字求和
复制需要求和的数字,在空格地方选择性粘贴,注意看选择性粘贴后表格左上角出现了一个倒三角的符号,里面选择“转换为数字”,再求和

8、数字格式转换为文本格式后,还是显示如:8.131E+14这样的数字,显示内容需要一个个双击才能变为文本,可以用数据分列功能来实现批量转换
1)选中要转换的单元格
2)数据-分列,原始数据类型(无所谓点下一步),分隔符号(无所谓点下一步),列数据格式(选文本!点完成)

9、找出两列的不同值
有一列A和一列C,C的列值是包含在A列值中,数量上A大于C。现在要找出A中哪些是C中没有的。
在E1列输入如下=IF(COUNTIF(C:C,A1)>0,”重复”,”多余”),往下拉即可。
countif函数表示计数A1在C列的数量,返回大于0表示存在,否则返回0。

10、vlookup函数
=VLOOKUP(E11,'[查询结果4.xls]SQL Results’!$B:$F,5,FALSE)
第一个参数:要查找的字段
第二个参数:查找范围(按列选!!不要框字段)
第三个参数:取值是第几列
第四个参数:true模糊查找,false精确查找

例子:要查A05301在E11,范围是 查询结果4.xls 文档的B列到F列(搜索范围),匹配到A05301的话取第5列的值即F列,精确查找。

vlookup只能匹配一个字段,如果要匹配多个字段:
1)增加一个辅助列,将两个字段拼接起来匹配,=A2&B2
2)使用if({1,0}}
=VLOOKUP(A2&B2,IF({1,0},’OKFEP_R_041367 (3)’!A:A&’OKFEP_R_041367 (3)’!B:B,’OKTMS_R_041367 (2)’!C:C),2,0)
=VLOOKUP(A2&B2,IF({1,0},’OKTMS_R_041367 (2)’!A:A&’OKTMS_R_041367 (2)’!B:B,’OKTMS_R_041367 (2)’!C:C),2,0)

11、分列功能
1)数字转文本,见8

2)文本转数字
分列 – 在弹出的对话框中直接单击“完成”按钮

12、删除空行
(只有为数字格式时),查找和选择 – 定位条件 – 选空值 – 确定
在空行上右键 – 删除 – 下方单元格上移,就会删除所有空行
PS:只有格式为数字时才有效,如果是文本会提示“找不到单元格”

13、excel中E+怎么变成全数字
1)先选中一列,设置单元格格式-选择文本
2)复制值进去

select语句执行顺序

SELECT的定义格式为:

SELECT[ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]…
FROM<表名或视图名>[,<表名或视图名>]…
[WHERE<条件表达式>]
[GROUP BY<列名1>][HAVING<条件表达式>]
[ORDER BY<列名2>][ASC|DESC]

0、先执行子查询。
1、from子句组装来自不同数据源的数据;
2、where子句基于指定的条件对记录行进行筛选;
3、group by子句将数据划分为多个分组;如果group by包含多个列,再分组;
4、使用聚集函数进行计算;对每个分组进行计算;
5、使用having子句筛选分组;
6、计算所有的表达式;
7、返回select选择的列;
8、使用order by对结果集进行排序。
继续阅读select语句执行顺序

9月14日

前几天收到邮件,stylexnetworks于9月30号将要关闭,这也算是VPS界的一则大新闻了。这家我有个3.99刀/半年的VPS,还是在它开业促销的时候买到的。回顾使用历程,他们家在当时是用外面很少见的onapp平台的云VPS,除了初期会自动关机之外,之后都挺稳定的。本来想3.99刀/半年可以永久续费下去,捡了个大便宜,哪知道这个月就关闭了。印证了“永远有多久?”这个命题,所有说永久、终生的都是骗人滴~

CentOS6.5安装Oracle Express Edition

Oracle Express Edition是给个人学习、熟悉Oracle的简化版。

到官网下载软件包,要先注册一个帐号,下载完是一个压缩包,解压出oracle-xe-11.2.0-1.0.x86_64.rpm。Linux下只有64位版本。

网盘下载地址:http://pan.baidu.com/s/1ntJsDOt

1、安装依赖包

yum install libaio libaio-devel bc -y

2、安装Oracle Express Edition
使用root用户操作。

cd ~
wget http://download.oracle.com/otn/linux/oracle11g/xe/oracle-xe-11.2.0-1.0.x86_64.rpm.zip?AuthParam=1409379226_d26581af452e67b3a2b04fe09ee28749 -O oracle-xe-11.2.0-1.0.x86_64.rpm.zip
unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip
cd Disk1
rpm -ivh oracle-xe-11.2.0-1.0.x86_64.rpm

安装时会对系统进行检测,最好内存有1G,SWAP要求是内存的2倍。

[root@server01 Disk1]# rpm -ivh oracle-xe-11.2.0-1.0.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:oracle-xe              ########################################### [100%]
Executing post-install steps...

You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database.


继续阅读CentOS6.5安装Oracle Express Edition

vim使用笔记

vim编辑器安装c.vim插件对C/C++编程有很大的帮助。
官方主页:http://www.vim.org/scripts/script.php?script_id=213

1、下载插件

cd ~
wget http://www.vim.org/scripts/download_script.php?src_id=21803 -O c_vim.zip

我下载的是2014-04-21发布的6.1.1

2、解压安装

mkdir ~/.vim
cd ~/.vim
unzip ~/c_vim.zip

3、激活插件

vim /etc/vimrc

加入:

filetype plugin on

PS:在vim中使用:set runtimepath可以查看插件能安装的位置
PS2:默认插件位置好像在/usr/share/vim/vim72

用vim编程还需要有一个适合的编辑器风格。
继续阅读vim使用笔记

工作体会

做软件开发
1、要有扎实的编程语言基础
2、对开发使用的平台要非常熟悉
3、对软件的业务逻辑要非常熟悉

有的人资历深,其实就是在这个行业做了很多年,对平台和业务逻辑的了解,变成了一种本能反应,不需要多思考和查资料

大公司难免会拉帮结派,最好不加入帮派也不得罪人家

对于程序员来说最最重要的是把领导安排的工作做好,做实!!!

软件及互联网爱好者