0%

select

1
2
3
4
5
6
7
8
9
SELECT * FROM table_name; # 选取所有内容

SELECT DISTINCT column_name,column_name
FROM table_name; # 一个列可能包含不同的值,该句可以列出不同的值

SELECT column_name,column_name
FROM table_name
WHERE column_name operator value; # OPERATOR部分可以是: =,>,<,between,in,like
# WHERE后可以跟逻辑符号 and,or,not

mysql语句对大小写不敏感,select == SELECT

1
2
3
4
5
6
7
select * from emp where not sal > 1500;

Select * from emp where comm is null;

Select * from emp where sal in (5000,3000,1500);

SELECT * FROM Websites WHERE alexa > 15 AND (country='CN' OR country='USA'); # AND和OR可以结合使用

Like模糊查询

1
Select * from emp where ename like 'M%';

查询 EMP 表中 Ename 列中有 M 的值,M 为要查询内容中的模糊信息。

  • % 表示多个字值,**_** 下划线表示一个字符;
  • M% : 为能配符,正则表达式,表示的意思为模糊查询信息为 M 开头的。
  • %M% : 表示查询包含M的所有内容。
  • %M_ : 表示查询以M在倒数第二位的所有内容。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC; # 默认是升序

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...); # 这种方式可以向table_name表格中插入一行,可以只向某一列插入,其他自动

UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value; # 用于更新某条记录
# 比如:
UPDATE Websites
SET alexa='5000', country='USA'
WHERE name='菜鸟教程';

DELETE FROM table_name
WHERE some_column=some_value; # 删除某一行记录

高级用法

join

img
1
2
3
4
5
# QL INNER JOIN(简单的 JOIN)。 SQL INNER JOIN 从多个表中返回满足 JOIN 条件的所有行。
SELECT Websites.id, Websites.name, access_log.count, access_log.date
FROM Websites
INNER JOIN access_log
ON Websites.id=access_log.site_id;
  • INNER JOIN:如果表中有至少一个匹配,则返回行
  • LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
  • RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
  • FULL JOIN:只要其中一个表中存在匹配,则返回行

union

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

1
2
3
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

SQL UNION ALL 语法

1
2
3
SELECT column_name(s) FROM table1
UNION ALL
SELECT *column_name(s) FROM table2;

注释:UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

前者只会列出选出的值中不同的一些数据条,后者是所有的都返回。

Count

COUNT() 函数返回匹配指定条件的行数。


SQL COUNT(column_name) 语法

COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):

1
SELECT COUNT(column_name) FROM table_name;

SQL COUNT(*) 语法

COUNT(*) 函数返回表中的记录数:

1
SELECT COUNT(*) FROM table_name;

SQL COUNT(DISTINCT column_name) 语法

COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:

1
SELECT COUNT(DISTINCT column_name) FROM table_name;

注释:COUNT(DISTINCT) 适用于 ORACLE 和 Microsoft SQL Server,但是无法用于 Microsoft Access。

join()

Examples

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
>>> df = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3', 'K4', 'K5'],
... 'A': ['A0', 'A1', 'A2', 'A3', 'A4', 'A5']})
>>> df
key A
0 K0 A0
1 K1 A1
2 K2 A2
3 K3 A3
4 K4 A4
5 K5 A5
>>> other = pd.DataFrame({'key': ['K0', 'K1', 'K2'],
... 'B': ['B0', 'B1', 'B2']})
>>> other
key B
0 K0 B0
1 K1 B1
2 K2 B2

Join DataFrames using their indexes.

1
2
3
4
5
6
7
8
>>> df.join(other, lsuffix='_caller', rsuffix='_other')
key_caller A key_other B
0 K0 A0 K0 B0
1 K1 A1 K1 B1
2 K2 A2 K2 B2
3 K3 A3 NaN NaN
4 K4 A4 NaN NaN
5 K5 A5 NaN NaN

如果不想以现有index为基础去Join,比如上面的例子想用key这个index去Join,可以:

1
2
3
4
5
6
7
8
>> df.join(other.set_index('key'), on='key')
key A B
0 K0 A0 B0
1 K1 A1 B1
2 K2 A2 B2
3 K3 A3 NaN
4 K4 A4 NaN
5 K5 A5 NaN

merge()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
df1 = pd.DataFrame({'lkey': ['foo', 'bar', 'baz', 'foo'],
'value': [1, 2, 3, 5]})
df2 = pd.DataFrame({'rkey': ['foo', 'bar', 'baz', 'foo'],
'value': [5, 6, 7, 8]})
df1
lkey value
0 foo 1
1 bar 2
2 baz 3
3 foo 5
df2
rkey value
0 foo 5
1 bar 6
2 baz 7
3 foo 8


选择多列

有时候需要选择DataFrame中的多个列组成一个新的DataFrame,这时候要用

1
df[['column1','column2']] # 注意这里是双层中括号!

drop 满足条件的行

1
2
3
df_clear = df.drop(df[df['x']<0.01].index)
# 也可以使用多个条件
df_clear = df.drop(df[(df['x']<0.01) | (df['x']>10)].index) #删除x小于0.01或大于10的行

dropna 丢掉某一列中有空的行

1
df.dropna(subset=['column_name'])

apply,applymap,map

apply

官方解释是 apply a function along an axis of the dataframe.

apply内函数的是Series,也就是在Series上做函数操作。index可以是dataframe的index,也可以是dataframe的columns(axis=1)。axis=0时,apply the function to each column,也就是每一列为一个整体去实施函数。axis=1时,每一行作为一个整体去实施函数。

1
2
df.apply(np.sum, axis=0)
df.apply(np.sum, axis=1)

applymap

官方解释是 apply a function to a dataframe elementwise.和apply不一样的是对dataframe中每一个元素分别作函数。

applymap允许实施一个函数,这个函数接受和返回的都是一个标量。

1
df.applymap(lambda x: len(str(x)))

map

map调用的对象只能是Series,而上面两个方法的调用对象是Dataframe。

tar 压缩以及解压

1
2
3
tar -czvf test.tar.gz a.txt   //压缩 a.c文件为test.tar.gz
tar -xzvf test.tar.gz // 解压
tar -tzvf test.tar.gz //列出压缩文件的内容

linux中环境变量

参考https://www.cjavapy.com/article/2250/

1、介绍

Linux中环境变量包括系统级和用户级

1)系统级

/etc/environment:系统在登录时读取的第一个文件,用于为所有进程设置环境变量。系统使用此文件时并不是执行此文件中的命令,而是根据KEY=VALUE模式的代码,对KEY赋值以VALUE,因此文件中如果要定义PATH环境变量,只需加入类似如PATH=$PATH:/xxx/bin的代码即可。

/etc/profile:是系统登录时执行的第二个文件,可以用于设定针对全系统所有用户的环境变量。该文件一般是调用/etc/bash.bashrc文件。

/etc/bash.bashrc:系统级的bashrc文件,为每一个运行bash shell的用户执行此文件。此文件会在用户每次打开shell时执行一次。

注意/etc/environment是设置整个系统的环境,而/etc/profile是设置所有用户的环境,前者与登录用户无关,后者与登录用户有关。 这两个文件修改后一般都要重启系统才能生效。

2)用户级

~/.profile: 是对应当前登录用户的profile文件,用于定制当前用户的个人工作环境。

每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。默认情况下,会设置一些环境变量,执行用户的.bashrc文件。

~/.bashrc: 是对应当前登录用户的bash初始化文件,当用户每次打开shell时,系统都会执行此文件一次。通常设置环境变量修改这个文件。

上述配置文件执行先后顺序如下:

1
/etc/enviroment `–> `/etc/profile` –> `~/.profile` –> `/etc/bash.bashrc `–> `~/.bashrc

2、环境变量的作用

环境变量相当于给系统或用户应用程序设置的一些参数,具体起什么作用这当然和具体的环境变量相关。比如PATH,是告诉系统,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到哪些目录下去寻找;再如tc或vc++中,set include=path1;path2; 是告诉编译程序到哪里去找.h类型的文件;当然不仅仅是指定什么路径,还有其它的作用的,如set dircmd=/4 设置一个环境变量的作用是在使用dir命令时会把/4作为缺省的参数添加到你的dir命令之后,就像你的每个命令都加了/4参数,它实际上是给命令解释程序command设置的一个环境变量,并且是给dir这个内部命令。

3、配置环境变量的方法

1)临时环境变量

linux下设定环境变量时,如果只是临时用一下,可以直接在shell下用setexport命令设定环境变量。但是只能在当前shell环境下可以用,切换或关闭重新进入就会失效。具体配置方法,如下,

1
2
3
4
5
#终端输入:
export MYSQLPATH=/home/mysql #MYSQLPATH设置为该路径
#终端查看一个特定环境变量包含的内容,比如,MYSQLPATH,PATH
echo $PATH
echo $MYSQLPATH

2)永久环境变量

设置的环境变量,需要经常使用的,而不是临时使用,把上面的设置环境变量命令写到上面提到的相应配置文件中即可,则可以每次开机或打开shell时自动设置,

例如,

只需要当前用户生效的环境变量:

终端中输入:sudo vi ~/.bashrc,编辑这个文件,在其末尾添加:

1
2
3
export MYSQLPATH=/home/mysql:$MYSQLPATH
# path采用:来分隔,冒号左右不需要空格.
# :$MYSQLPATH在后面新添加的优先搜索,$MYSQLPATH:在前面说明新添加的最后搜索,不加代表新路径设置为MYSQLPATH路径。

注意:在终端执行,source ~/.bashrc ,使其立即生效,或者重启电脑即可。

设置所有用户生效的环境变更:

终端中输入:sudo vi /etc/profile,编辑这个文件,在其末尾添加:

1
2
3
export MYSQLPATH=/home/mysql:$MYSQLPATH
# path采用:来分隔,冒号左右不需要空格.
# :$MYSQLPATH在后面新添加的优先搜索,$MYSQLPATH:在前面说明新添加的最后搜索,不加代表新路径设置为MYSQLPATH路径。

注意:在终端执行,source /etc/profile ,使其立即生效,或者重启电脑即可。

查看linux版本信息

https://blog.csdn.net/lu_embedded/article/details/44350445

查看进程

https://blog.csdn.net/lechengyuyuan/article/details/16337233

1
2
3
4
ps -ef # 查看所有本机进程
ps -ef |grep python # 查看python进程

kill -9 pid # 杀死某个进程

https://blog.csdn.net/li528405176/article/details/83379164

将程序留在后台运行

1
nohup python -u test.py > out.log 2>&1 &

参考 https://www.jianshu.com/p/4041c4e6e1b0