Monday, March 30, 2009

MySQL数据类型列表

名称
长度
用法
TINYINT(M)
BIT,BOOL,BOOLEAN
1
如果为无符号数,可以存储从0到255的数;
否则可以存储从-128到127的数。
SMALLINT(M)
2
如果为无符号数,可以存储从0到65535的数;
否则可以存储从-32768到32767的数。
MEDIUMINT(M)
3
如果为无符号数,可以存储从0到16777215的数;否则可以存储从-8388608到8388607的数
INT(M)
INTEGER(M)
4
如果为无符号数,可以存储从0到4294967295的数,否则可以存储从-2147483648到2147483647的数。
BIGINT(M)
8
如果为无符号数,可以存储从0到18446744073709551615的数,否则可以存储从-9223372036854775808到9223372036854775807的数。
FLOAT(precision)
4或8
这里的precision是可以直达53的整数。如果precision<=24则转换为FLOAT,如果precision>24并且precision<=53则转换为DOUBLE。
FLOAT(M,D)
4
单精度浮点数。
DOUBLE(M,D),
DOUBLE PRECISION,
REAL
8
双精度浮点。
DECIMAL(M,D),
DEC,NUMERIC,FIXED
M+1或M+2
未打包的浮点数。
DATE
3
以YYYY-MM-DD的格式显示。
DATETIME
HH:MM:SS
8
以YYYY-MM-DD的格式显示。
TIMESTAMP
4
以YYYY-MM-DD的格式显示。
TIME
3
以HH:MM:SS的格式显示。
YEAR
1
以YYYY的格式显示。
CHAR(M)
M
定长字符串。
VARCHAR(M)
最大M
变长字符串。M<=255.
TINYBLOB,
TINYTEXT
最大255
TINYBLOB为大小写敏感,而TINYTEXT不是大小写敏感的。
BLOB,
TEXT
最大64K
BLOB为大小敏感的,而TEXT不是大小写敏感的。
MEDIUMBLOB,
MEDIUMTEXT
最大16M
MEDIUMBLOB为大小写敏感的,而MEDIUMTEXT不是大小敏感的。
LONGBLOB,
LONGTEXT
最大4G
LONGBLOB为大小敏感的,而LONGTEXT不是大小敏感的。
ENUM(VALUE1,….)
1或2
最大可达65535个不同的值。
SET(VALUE1,….)
可达8
最大可达64个不同的值。

Saturday, March 28, 2009

MySQL常用命令

1、显示数据库列表。

show databases;

刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。

2、显示库中的数据表:

use mysql;

show tables;

3、显示数据表的结构:

describe 表名;

4、建库:

create database 库名;

5、建表:

use 库名;

create table 表名 (字段设定列表);

6、删库和删表:

drop database 库名;

drop table 表名;

7、将表中记录清空:

delete from 表名;

8、显示表中的记录:

select * from 表名;

Linux下创建软链接

ln -s target_filename symlink_filename
亦可用于文件夹,将创建的软链接指向某文件夹;
普通的文件操作命令(如cp、rm等)都能直接作用于符号链接。

Thursday, March 26, 2009

R语言主成份分析(Principal Component Analysis)语句

predata = read.table("file", header=TRUE) #读入数据文件,若无header,则header=FALSE

data = scale(data, center = TRUE, scale = TRUE)
#若只标准化不中心化,则为center = FALSE, scale = TRUE, vice versa

R commands for PCA

Here are some R commands for PCA

pcdat = princomp(data) - It does actual job and put the results to pcdat. It will use covariance matrix

pcdat = princomp(data,cor=TRUE) - It will use correlation matrix

summary(pcdat) - It will print standard deviation and proportion of variances for each component

screeplot(pcdat) - It will plot screeplt

biplot(pcdat) or biplot.princomp(pcdat,scale=1) - It will give you biplot

loadings(pcdat) - it will give information how much each variable contribute to each component. For principal components you can ignore loading subsection of the output from this command

pcdat$scores - It will plot scores of each observation for each variable

For further details about this and other R commands type

help.start()

linux下常用解压和压缩命令

.tar
解包: tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
---------------------------------------------
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
---------------------------------------------
.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
---------------------------------------------
.bz
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知
.tar.bz
解压:tar jxvf FileName.tar.bz
压缩:未知
---------------------------------------------
.Z
解压:uncompress FileName.Z
压缩:compress FileName
.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
---------------------------------------------
.tgz
解压:tar zxvf FileName.tgz
压缩:未知
.tar.tgz
解压:tar zxvf FileName.tar.tgz
压缩:tar zcvf FileName.tar.tgz FileName
---------------------------------------------
.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
---------------------------------------------
.rar
解压:rar a FileName.rar
压缩:r ar e FileName.rar

rar请到:http://www.rarsoft.com/download.htm 下载!
解压后请将rar_static拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
[root@www2 tmp]# cp rar_static /usr/bin/rar
---------------------------------------------
.lha
解压:lha -e FileName.lha
压缩:lha -a FileName.lha FileName
lha请到:http://www.infor.kanazawa-it.ac.jp/.../lhaunix/下载!
>解压后请将lha拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
[root@www2 tmp]# cp lha /usr/bin/
---------------------------------------------
.rpm
解包:rpm2cpio FileName.rpm | cpio -div
---------------------------------------------
.tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm .deb .slp .arj .rar .ace .lha .lzh
.lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar .cpt .pit .sit .sea
解压:sEx x FileName.*
压缩:sEx a FileName.* FileName
sEx只是调用相关程序,本身并无压缩、解压功能,请注意!
sEx请到: http://sourceforge.net/projects/sex下载!
解压后请将sEx拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
[root@www2 tmp]# cp sEx /usr/bin/

转自:http://blog.chinaunix.net/u/4536/showart_231709.html

Wednesday, March 25, 2009

lftp命令集

lftp支持多种网络传输协议: ftp, ftps, http, https, hftp, fish.(其中ftps和https需要在编译的时候包含openssl库),对于熟悉shell的人,lftp的使用会是非常亲切,因为lftp的命令非常像一个shell: 你可以使用Tab键补全命令;使用上下箭头快速切换到曾经输入的命令。它还允许多个后台任务执行等功能,还有书签、排队、镜像、断点续传、多进程下载等功能。

这里我只记录一些lftp常用的命令和参数,如果想获得全部用法,可以在shell中使用

lftp –help

或者在启动lftp后直接输入

help [command]

例如

help mirror

1、匿名登录ftp站点:

lftp ftp://your-domain/

或者

lftp

然后

open ftp://your-domain/

2、使用用户名(name)和密码(pass)登录ftp站点:

lftp ftp://your-domain/ -u name,pass

或者

lftp ftp://your-domain/ -u name

然后输入密码。

3、指定端口号为9000:

lftp ftp://your-domain/ -p 9000

4、下载单个文件:

get ReadMe.txt

5、断点续传:

get -c ReadMe.txt

6、批量下载文件:

mget *.mp3

7、下载一个目录:

mirror remote_dir_name [local_dir_name]

或者

mget -d remote_dir_name/*

-d参数表示在本地创建与远端目录相同名字的目录并把远端目录下所有文件下载到本地新建目录。

8、上传一个本地目录:

mirror -R local_dir_name [remote_dir_name]

或者

mput -d local_dir_name/*

9、10线程镜像一个目录:

mirror –parallel=10 remote_dir_name [local_dir_name]

10、8线程下载一文件:

pget -n 8 ReadMe.txt

该命令缺省线程为5。

11、只上传本地目录中比远程目录中新的文件:

mirror -R -N local_name [remote_name]

12、后台任务管理:
使用CTRL+Z使当前任务转入后台,或者在执行任务命令时加上“&”符号,这些和shell中一样,使用”jobs”查看后台进程,使用“queue”排队新的任务。如果lftp在退出时还有任务在进行,则lftp自动进入后台执行。

13、读取站点中所有文件的大小到本地记录文件:

du remote_dir_name log.txt

14、书签功能:

bookmark [SUBCMD]

子命令:
add []:把当前位置或特定位置加入以“name”命名的书签。
del :删除指定书签。
edit:编辑书签。
list:列出书签。

15、删除目录:

rm -r dir_name

建立目录:

mkdir dir_name

16、搜索文件:

ls -R | grep ReadMe.txt

或者

find -d 3 | grep ReadMe.txt

此处搜索深度为3。

转自:http://www.leninlee.cn/?p=306

Tuesday, March 24, 2009

使用Python操作MySQL之基础篇

使用Python操作MySQL
首先下载MySQLdb,地址:http://sourceforge.net/projects/mysql-python/

1. 使用
import MySQLdb
1.1. 连接
conn = MySQLdb.Connection(host, user, password, dbname)
1.2. 选择数据库,如果上面没有指定数据库,则使用此方法指定!
conn.select_db(’database name’)
1.3. 获得cursor
cur = conn.cursor()
1.4. cursor位置设定
cur.scroll(int, mode)
mode可为相对位置或者绝对位置,分别为relative和absolute。
1.5. select
cur.execute(‘select clause’)
例如
cur.execute(‘select * from mytable’)

row = cur.fetchall()
或者:
row1 = cur.fetchone()
1.6. insert
cur.execute(‘inset clause’)
例如
cur.execute("insert into user (Name, Password) values ('maggie','12345')")
conn.commit()

1.7. update
cur.execute(‘update clause’)
例如
cur.execute("update user set Name = 'eric chau' where id = 1")
conn.commit()

1.8. delete
cur.execute(‘delete clause’)
例如
cur.execute("delete from user where id = 1")
conn.commit()

完整代码:

from MySQLdb import Connect

def conn():
#conn = Connect('localhost','root','root')
#conn.select_db('eric')
conn = Connect('localhost','root','root','eric')
cur = conn.cursor()
cur.execute('select * from user')
cur.scroll(0)
row1 = cur.fetchone()
print 'id:', row1[0]
print 'name:', row1[1]
print 'password:', row1[2]
#cur.execute("insert into user (Name, Password) values ('maggie','12345')")
#cur.execute("update user set Name = 'eric chau' where id = 1")
cur.execute("delete from user where id = 11")
conn.commit()
if __name__=='__main__':
conn()

由于python的数据库模块有专门的数据库模块的规范,所以,其实不管使用哪种数据库的方法都大同小异的,这里就给出一段示范的代码:

#-*- encoding: gb2312 -*-
import os, sys, string
import MySQLdb

# 连接数据库 
try:
conn = MySQLdb.connect(host='localhost',user='root',passwd='xxxx',db='test1')
except Exception, e:
print e
sys.exit()

# 获取cursor对象来进行操作

cursor = conn.cursor()
# 创建表
sql = "create table if not exists test1(name varchar(128) primary key, age int(4))"
cursor.execute(sql)
# 插入数据
sql = "insert into test1(name, age) values ('%s', %d)" % ("zhaowei", 23)
try:
cursor.execute(sql)
except Exception, e:
print e

sql = "insert into test1(name, age) values ('%s', %d)" % ("张三", 21)
try:
cursor.execute(sql)
except Exception, e:
print e
# 插入多条

sql = "insert into test1(name, age) values (%s, %s)"
val = (("李四", 24), ("王五", 25), ("洪六", 26))
try:
cursor.executemany(sql, val)
except Exception, e:
print e

#查询出数据
sql = "select * from test1"
cursor.execute(sql)
alldata = cursor.fetchall()
# 如果有数据返回,就循环输出, alldata是有个二维的列表
if alldata:
for rec in alldata:
print rec[0], rec[1]

cursor.close()

conn.close()

转自:http://hi.baidu.com/cheneychen/blog/item/064f9d2b1b5d50fde6cd40dd.html