LINUX中的一些命令:
怎样在服务器上运行sh、py文件
首先写shell文件时,不能直接在windows上直接编写,因为linux与windows的编码方式不一样,
遇到这种情况,需要在服务器上创建shell文件
创建新的shell文件:touch 123.sh #touch就是新建一个文件
编辑文件 vim 123.sh #这是简化文件进行打开,就可以进行编辑了
但是编辑之前需要按一下 i(insert) 表示插入数据,然后就可以编辑了
(其中123.sh里面编辑的内容是:
#!/bin/bash #这一条命令是为了保证shell文件可以识别它
chmod 777 /webapps/amlai/amlai/song/12.py #目的是赋予12.py最高权限,再shell文件里可以执行它
python /webapps/amlai/amlai/song/12.py #执行py文件,但是要保证服务器里面有python
)
文件编辑好以后,按ESC键退出,再按 冒号“:”键,再按“wq”键强制退出,文件就是编辑好了
用cat 123.sh 可以查看123.sh里编辑的内容,如果没有可继续用vim命令来编辑文件
如果想要执行这个123.sh的文件就要赋予这个文件较高的权限
命令如下:
chmod 755 123.sh(也可以绝对路径+文件名) 赋予这个文件可执行的权限
赋予权限后,然后再服务器上输入;
sh 123.sh 就可以执行shell文件了
其中12.py里面的代码是“print “hello world””
在运行123.sh时,就会调用12.py文件,这样就可以在linux上执行py文件了
数据库的常用命令
如何让进入数据库
在cmd命令框中输入mysql -uroot -p 后面不用加分号 密码是123456
查看当前用户的操作是
SELECT user();
退出数据库的操作是:
EXIT;
表相关查询语句
查询数据库有几张表
#查看数据库有多少张表
SELECT
COUNT(*) TABLES,
table_schema
FROM
information_schema.TABLES
WHERE
table_schema = 'yinfneg' #yinfneg是数据库名称
GROUP BY
table_schema;
查询见表的全部信息
DESC TABLE_NAME; #Table_name是表名,也就是要查看建立表时候的结构
结果是这样的:
查看某一列有多少种类
select DISTINCT 产品 #distinct如果是放在最前面表示,后面所有列都适用
FROM c1;
select DISTINCT 产品,区县 from c1
查看表格的前面的几行(LIMIT)(DB2;SQLsever;MySQL、MariaDB、PostgreSQL或者 SQLite)
注意limit无论什么时候都是放在SQL语句的最后面的
如果是DB2中只显示前面的几条
select 区县 FROM c1 fetch first 5 rows only; 筛选出来的结果只显示前面的5条
如果是SQLsever和Access只显示前面的5条
select TOP 5 区县 from c1;
如果是MySQL、MariaDB、PostgreSQL或者 SQLite
select 区县 from c1 LIMIT 5;
如果是 Oracle
SELECT 区县from c1 where rownum <=5;
如果是MYSql的话,还可以指定从第几行开始寻找查找几条
select 区县 from c1 limit 5 offset 3;#表示从第三行
使用注释:单行注释和多行注释
使用#号机型单行注释
使用/*......*/进行多行注释
查询出来的信息进行排序(ORDER BY)(默认是升序)
select * from c1 ORDER BY 产量 LIMIT 5; #利用一个字段进行排序,
select * from c1 ORDER BY 产量 DESC LIMIT 5; #DESC表示降序排列,默认是升序(ASC)排列
select * from c1 ORDER BY 产量 ,产能 LIMIT 5;利用两个字段进行排序
#千万注意DESC是放在哪一个字段后面,哪一个字段的排列是降序排列
#如果是项全部的字段都需要降序排列,那么需要每一个字段的后面都方DESC字段
select * from c1 ORDER BY 产量 DESC ,产能 DESC LIMIT 5;
select * from c1 ORDER BY 产量 DESC ,产能 DESC LIMIT 5;
过滤数据,其实就是where语句
初级的数据过滤
where子句的位置
由以上可知limit肯定是放在最后的,档同时出现order by ,where ,limit怎样放哪
order by 已经要放到where后面
select * from c1 where 产量<5 ORDER BY 产能 DESC LIMIT 10;
#特别注意是不是空值
select * from c1 where 成立年份 is not NULL ORDER BY 产能 DESC LIMIT 10;
#查询可分成单个值(大于,小于,等于,小于等于,大于等于)
#不匹配查询(不等于,)
#范围值查询是BETWEEN value1 and value2
SQL,DB2语句中的between 范围1 and 范围2 ,语句是包括的范围1和范围2的,包括上下边界
select * from c1 where 产量 BETWEEN 1 AND 3.6 ORDER BY 产能 DESC LIMIT 10;
#空值查询 可分成是空值IS NULL,不是空值 IS NOT NULL
select * from c1 where 成立年份 IS NULL ORDER BY 产能 DESC LIMIT 10;
select * from c1 where 成立年份 IS NOT NULL ORDER BY 产能 DESC LIMIT 10;
注意where的操作符(特别注意是不是空值(NULL),between)between(用法是BETWEEN 5 AND 10)
高级的数据过滤(and or 或者and和or的组合;IN 操作符;NOT操作符)
and操作符:不同字段同时满足两个条件,如果使同一个字段可以用between
select * from c1 where 产能<3 and 区县="巩义市" LIMIT 5;
OR操作符:不同字段满足任一条件
select * from c1 where 产能<3 or 区县="巩义市" LIMIT 5;
and和or的操作符组合在一起的时候,and的优先级要高于or佛如优先级
select * from c1 where 区县="巩义市" or 区县="郑州市" or 产能<3 LIMIT 5;
这时候可能并不能按照预期输出自己想要的结果,以为SQL语句在执行or操作符之前,有限执行and操作符
所以为了先满足or操作符需要先加上括号,增大优先级,SQL语句可写如下:
select * from c1 where (区县="巩义市" or 区县="郑州市") or 产能<3 LIMIT 5;
IN操作符,用来指定条件范围,范围中的每一个条件都可以用来匹配,IN取一组由逗号分隔,阔在圆括号中的合法值,
slelect * from c1 where 区县 in ("巩义市","郑州市")
NOT操作符,where中的NOT操作符有且只有一个功能,那就是否定其后所跟的任何条件,
slelect * from c1 where NOT 区县 ="巩义市"
拼接字段
根据你所使用的 DBMS,此操作符可用加号( + )或两个竖杠( || )表示(Access和 SQL Server使用 + 号。DB2、Oracle、PostgreSQL、SQLite和Open Office Base 使用 ||)。在 MySQL和 MariaDB中,必须使用
特殊的函数(Concat)。
下面使MYsql中必须要用到concat函数
select CONCAT(区县,产品) from c1;
去除空格(RTRIM、TRIM、LTRIM)
RTRIM 去掉字符串右边的空格
TRIM 去掉字符串左右两边的空格
LTRIM 去掉字符串左边的空格
select RTRIM(CONCAT(区县,产品)) from c1; RTRIM使为了去掉右边字符串左右的空格
判断条件(case when 条件1 THEN 结果1 ELSE 结果2 END)
单层判断(case when 字段名满足条件 THEN 结果1 ELSE 结果2 END)
多层判断
其实就是前后加case...end,然后中间加when...条件...then...结果...
CASE
WHEN 字段满足条件1 AND 字段满足条件2 THEN 结果1 #有时候满足两个状态的时候,都是同一个结果中间哦那个AND连接
WHEN 字段满足条件2 THEN 结果2
WHEN 字段满足条件3 THEN 结果3
WHEN 字段满足条件4 THEN 结果4
.........
WHEN 字段满足条件N THEN 结果N
ELSE 结果X
END AS 新的字段名(这里是指的取新的字段别名)
例如:
SELECT id, name, cj,
(CASE
WHEN cj < 60 THEN '不及格'
WHEN cj BETWEEN 60 AND 90 THEN '良好'
WHEN cj > 90 THEN '优秀'
else '其他'
END) AS '状态'
FROM stud
时间处理函数(求年、月、日、时、分、秒)(YEAR/MONTH/DATE/HOUR/MINUTE/SECOND)
交易时间(TX_TIME1)日期格式是'2019-04-05 23:45:36'
年 select YEAR(TX_TIME1) FROM 表1 #输出 '2019' 结果为字符串模式
月 select month(TX_TIME1) FROM 表1 #输出 '4' 结果为字符串模式,月份里面直接将0省略
日 select DATE(TX_TIME1) FROM 表1 #输出 '2019-04-05' 结果为字符串模式,如果想取‘05’,只能 用substr函数了
时 select HOUR(TX_TIME1) FROM 表1 #输出 '23' 结果为字符串模式
分 select MINUTE(TX_TIME1) FROM 表1 #输出 '45' 结果为字符串模式
秒 select SECOND(TX_TIME1) FROM 表1 #输出 '36' 结果为字符串模式
字符串处理函数
SQL中的coalesce函数(处理NULL值,注意NULL与空值的区别)
用途:
(1):将控制替换成其他值;
(2):返回第一个非空值
表达式
COALESCE是一个函数, (expression_1, expression_2, ...,expression_n)依次参考各参数表达式,遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返回一个空值。使用COALESCE在于大部分包含空值的表达式最终将返回空值。
SQL实例
select coalesce(success_cnt, 1) from tableA
当success_cnt 为null值的时候,将返回1,否则将返回success_cnt的真实值。
select coalesce(success_cnt,period,1) from tableA
当success_cnt不为null,那么无论period是否为null,都将返回success_cnt的真实值(因为success_cnt是第一个参数),当success_cnt为null,而period不为null的时候,返回period的真实值。只有当success_cnt和period均为null的时候,将返回1。