linux怎样运行shell文件和py文件以及SQL的一些常用操作(未完待续)

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。

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值