基本sql查询语句
基础查询方式:
select 字段 from 表名;
select * from 表名;
去重
select distinct 字段 from 表名;
基础条件查询
select 字段 from 表名 where 条件 运算符 值;
运算符 | 名称 |
---|---|
= | 等于 |
<> | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 包含 |
注:
在某些版本的sql中,操作符<>可以写为!=。
sql中使用单引号来环绕文本值(大部分数据库系统也可接受双引号),数值不用引号。
and和or运算符
and:如果第一个条件和第二个条件都成立,则and运算符显示一条记录。
or:如果第一个条件和第二个条件中只有一个成立,则or运算符显示一条记录。
select 字段 from 表名 where 字段 运算符 值 and/or 条件 运算符 值;
注:and与or结合(使用圆括号组成复杂表达式)
select 字段 from 表名 where (条件 运算符 值 and/or 条件 运算符 值) and/or 条件 运算符 值;
order by默认排序
desc 倒序
select 字段 from 表名 order by或desc;
插入
insert into 表名 values (值1,值2,...);
insert into 表名(字段1,字段2) voalues (值1,值2,...);
修改
update 表名 set 字段 = 新值 where 字段 = 某值;
删除
drop 删除表:删除内容和定义,释放空间
drop table 表名;
delete 删除内容,不删除表结构,一行一行删
delete table 表名;
delete from 表名 where 条件 = 值;
truncate 删除内容、释放空间,但不删除表结构;
truncate table 表名;
like模糊查询
select 字段 from 表名 where 字段 like 'N%';
注:“%”可用于第一通配符
通配符 描述
% 替代一个或多个字符
_ 仅替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist]或者[!charlist] 不在字符列中的任何单一字符
in
select 字段 from 表名 where 字段 in (value1,value2,...);
between...and 选取介于两个值之间的数据范围,这些值可以是数值、文本或日期。
select 字段 from 表名 where 字段 between value1 and value2;
Alias别名
表的别名:
select 字段 from 表名 as 名称;
字段的别名:
select 字段 as 名称 from 表名;
join
join字段内容值一致
inner join 内连接
:产生的结果是两边的交集
select 字段 from 表名1 inner jion 表名2 on 表名1.字段=表名2.字段
left join 左连接
:以左边的表为基准,不管是否满足条件都会把左边的数据全部展示,而右边的数据只显示能匹配上的,匹配不上时用null填充;
select 字段 from 表名1 left jion 表名2 on 表名1.字段=表名2.字段
right join 右连接
:理解方式同左连接,只是换成了以右边的表为基准,左边的数据去匹配,只显示能匹配上的,匹配不上用null填充;
select 字段 from 表名1 right jion 表名2 on 表名1.字段=表名2.字段
FULL OUTER JOIN
: 全连接,产生的结果是表A和表B的并集,也就是会全部显示出来
SELECT 字段
FROM 表1
FULL OUTER JOIN 表
ON 表1.字段=表2.字段;
Cross join
:交叉连接
SELECT 字段 FROM 表1 CROSS JOIN 表2 WHERE 条件;
或
SELECT 字段 FROM 表1, 表2 WHERE 条件;
union
内部的select 语句必须拥有相同数量的列。
列必须属于相同类型,同时列名顺序必须相同。
类型不同可强制转换cast (字段 as 类型:int float double varchar char等)
select 字段 from 表名1
union
select 字段 from 表名2
注:默认union操作符选取不同值,若允许重复的值,可使用union all。
select into 加入临时表
select into 语句从一个表中选取数据,然后把数据插入至另一个临时表中。
select * into 临时表 from old表;
select * into 临时表 from old表 where 条件 运算符 值;
select count()
count(*)函数返回表中的记录行数:
select count(*) from 表名;
select sum ()
sum 函数返回数之列的总数(总额)。
select sum(字段) from 表名;
注 :通常配合group by使用;
group by
group by 用于结合合计函数,根据一个或多个列对结果集进行分组;
select 字段1,sum(字段2) from 表名 group by 字段1;
mq安装脚本
#!/bin/bash
#判断使用root用户
if [[ $UID -ne 0 ]];then
echo "使用root 执行此脚本"
exit 1
fi
#预设参数
mqfile=/data/soft/mq
temp=mqtemp
mqport=61616
mqadminport=8161
#mqpath=/data/mq
#jdkpath=/data/jdk1.8
#password="1qaz0p;/"
#开始菜单,界面输入参数
read -p "请输入MQ安装目录名(如:/data/mq):" mqpath
echo -e "MQ部署路径:$mqpath\n"
read -p "请输入JDK安装目录名:(如:/data/jdk1.8):" jdkpath
echo -e "JDK部署路径:$jdkpath\n"
read -p "请输入MQ控制台密码:" password
echo -e "MQ密码设置完成\n"
read -p "请按[Enter]键开始安装MQ程序" een
rm -f /var/run/yum.pid
rm -rf $mqpath
rm -rf data/soft/redis/$temp
echo "清理环境"
#yum安装依赖包
echo -e "\n\n\n Yum 安装依赖包"
yum install -y mpfr cpp ppl cloog-ppl libstdc++-devel gcc gcc-c++ zlib-devel
echo -e "\n\n\n Yum 安装依赖包完成"
#安装MQ
chown -R root.root $mqfile
cd $mqfile
mkdir $temp
tar zxvf apache-activemq-*.tar.gz -C $temp/
mv $temp/apache-activemq-*/ $mqpath
#MQ配置文件修改
echo "MQ配置文件修改"
sed -i -r -e "/^wrapper.java.command\=/c \wrapper.java.command=$jdkpath/bin/java" $mqpath/bin/linux-x86-64/wrapper.conf
sed -i -r -e "/^\<transportConnector name\=\"openwire\"/c \<transportConnector name\=123\> " $mqpath/conf/activemq.xml
sed -i 's/<kahaDB directory="${activemq.data}\/kahadb"\/>/<kahaDB directory="${activemq.data}\/kahadb" journalMaxFileLength="100mb"\/>/g' $mqpath/conf/activemq.xml
sed -i 's/<constantPendingMessageLimitStrategy limit="1000"\/>/<constantPendingMessageLimitStrategy limit="10000"\/>/g' $mqpath/conf/activemq.xml
sed -i 's/<storeUsage limit="100 gb"\/>/<storeUsage limit="100 gb"\/>/g' $mqpath/conf/activemq.xml
sed -i -r -e "/^user\: user/c \#user\: user\, user" $mqpath/conf/jetty-realm.properties
sed -i -r -e "/^admin\: admin/c \admin\: $password, admin" $mqpath/conf/jetty-realm.properties
#添加防火墙端口8161
echo "防火墙Iptable,添加端口策略:$mqport $mqadminport"
sed -i -r -e "12i \#mq端口\n-A INPUT -p tcp -m state --state NEW -m tcp --dport $mqport -j ACCEPT\n" /etc/sysconfig/iptables
sed -i -r -e "12i \#mq后台端口\n-A INPUT -p tcp -m state --state NEW -m tcp --dport $mqadminport -j ACCEPT\n" /etc/sysconfig/iptables
systemctl restart iptables.service
echo -e "MQ部署完成\n部署路径:$mqpath\n启动命令:\ncd $mqpath/bin/linux-x86-64\n./activemq start\nmq后台密码:$password"
nginx日志切割
#!/bin/bash
# Date:2022-3-9
# Author:lizexin
# version:1.0
# Explain:Nginx log slicing script.
# 路径
Log_Path=/data/nginx/logs
# 获取昨天的日期
YESTERDAY=$(date -d "yesterday" +%Y%m%d)
# PID文件路径
Log_PID=/data/nginx/logs/nginx.pid
# 分割日志
mv ${Log_Path}/access.log ${Log_Path}/access_${YESTERDAY}.log
mv ${Log_Path}/error.log ${Log_Path}/error_${YESTERDAY}.log
# 向Nginx主进程发送USR1信号,重新打开日志文件
kill -USR1 `cat ${Log_PID}`