基本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}`
linux系统文件查看命令
cat
显示文件内容
- 命令格式
cat [选项] 文件名
cat 文件1 文件2 > 文件3
选项 | 含义 |
---|---|
-A | 用户列出文件内所有隐藏符号,相当于使用了-vET选项 |
-E | 列出每行结尾的回车符$ |
-n | 对所有输出行进行编号 |
-b | 对非空行进行边行 |
-T | 把Tab键 ^|显示出来 |
-V | 列出特殊字符 |
-s | 当遇到有连续2行以上的空白行时,就替换为1行的空白行 |
more
显示文本文件,可以逐行阅读文件内容
-
命令格式
more [选项] 文件名
选项 含义 -f 计算行数时,以实际的行数,而不是自动换行过后的行数 -p 不以卷动的方式显示每一页,而是先清除屏幕后在显示内容 -c 跟-p选项相似,不同的是先显示内容在清除其他旧资料 -s 当遇到有连续两行以上的空白行时,就替换为一行的空白行 -u 不显示下引号(根据环境变量TERM指定的终端而有所不同) +n 从第n行开始显示文件内容,n代表数字 -n 一次显示的行数,n代表数字
more命令交互指令及功能
交互指令 | 功能 |
---|---|
h或? | 显示more命令交互命令帮助 |
q或Q | 退出more |
v | 在当前行启动一个编辑器 |
:f | 显示当前文件的文件名和行号 |
!<命令>或:!<命令> | 在子shell中执行指令命令 |
回车键 | 向下移动一行 |
空格键 | 向下移动一页 |
ctrl+l | 刷新屏幕 |
= | 显示当前行的行号 |
ctrl+f | 向下滚动一页 |
. | 重复上次输出的命令 |
d | 向下移动半页 |
b | 向上移动一页 |
head
显示指定文件前若干行的文件内容
-
命令格式
head [选项] 文件名
选项 | 含义 |
---|---|
-n K | 这里的K表示行数,该选项用来显示文件前K行的内容; |
-c K | 这里的K表示字节数,该选项用来显示文件前K个字节的内容 |
-v | 显示文件名 |
less
作用与more相似,不同的是,less命令既可以向后看,也可以向前看
-
命令格式
less [选项] 文件名
选项 | 含义 |
---|---|
-N | 显示每行的行号 |
-S | 行过长时将超出部分舍弃 |
-e | 当文件显示结束后,自动离开 |
-g | 只标志最后搜索到的关键名 |
-Q | 不适用警告音 |
-i | 忽略搜索时的大小写 |
-m | 显示类似more命令的百分比 |
-f | 强迫打开特殊文件,比如外围设备代号、目录和二进制文件 |
-s | 显示连续空行为一行 |
-b <缓冲区大小> | 设置缓冲区大小 |
-o <文件名> | 将less输出的内容保存到指定文件中 |
-x <数字> | 将tab键显示为规定的数字空格 |
less交互指令及功能
交互指令 | 功能 |
---|---|
/字符串 | 向下搜索“字符串”的功能。 |
?字符串 | 向上搜索“字符串”的功能。 |
n | 重复*前一个搜索(与 / 成 ? 有关)。 |
N | 反向重复前一个搜索(与 / 或 ? 有关)。 |
b | 向上移动一页。 |
d | 向下移动半页。 |
h 或 H | 显示帮助界面。 |
q 或 Q | 退出 less 命令。 |
y | 向上移动一行。 |
空格键 | 向下移动一页。 |
回车键 | 向下移动一行。 |
【PgDn】键 | 向下移动一页。 |
【PgUp】键 | 向上移动一页。 |
Ctrl+f | 向下移动一页。 |
Ctrl+b | 向上移动一页。 |
Ctrl+d | 向下移动一页。 |
Ctrl+u | 向上移动半页。 |
j | 向下移动一行。 |
k | 向上移动一行。 |
G | 移动至最后一行。 |
g | 移动到第一行。 |
ZZ | 退出 less 命令。 |
v | 使用配置的编辑器编辑当前文件。 |
[ | 移动到本文档的上一个节点。 |
] | 移动到本文档的下一个节点。 |
p | 移动到同级的上一个节点。 |
u | 向上移动半页。 |
tail
查看文件末尾的数据
-
命令格式
tail [选项] 文件名
选项 含义 -n 指行数,在此基础上如果使用-n 行数,则表示从文件的第n行开始输出 -c 指字节数,在此基础上如果使用-c 字节数,则表示从文件的第n个字节数开始输出 -f 输出文件变化后新增加的数据。
mysql安装脚本
#!/bin/bash
#脚本执行方式:bash yum_install_mysql.sh
#脚本仅支持5.5 5.6 5.7 8.0 这几个版本的MySQL
echo "此脚本用于yum 安装mysql"
if [[ $UID -ne 0 ]];then
echo "使用root 执行此脚本"
exit 1
fi
#if [[ $# != 1 ]];then
# echo "Usage script (5.5|5.6|5.7|8.0)"
# exit 123
#fi
#开始菜单,界面输入参数
read -p "请输入MSYQL版本号(仅支持5.5|5.6|5.7|8.0安装):" mysqlversion
echo -e "MQ安装版本:Mysql$mysqlversion\n"
read -p "请输入mqsql安装目录名(如:/data/mysql):" mysqlpath
echo -e "MQ部署路径:$mysqlpath\n"
read -p "请按[Enter]键开始安装MYSQL程序" een
echo "清理环境"
rm -f /var/run/yum.pid
systemctl stop mysqld mariadb &>/dev/null
yum erase -y `rpm -qa |grep mariadb` 2>/dev/null
yum erase -y `rpm -qa |grep mysql` 2>/dev/null
rm -rvf /etc/my.cnf /var/lib/mysql /var/log/mysql* $mysqlpath
userdel -rf mysql &>/dev/null
ping -c1 -w1 www.baidu.com &>/dev/null
if [[ $? -eq 0 ]];then
yum install -y wget yum-utils &>/dev/null
if [[ $? -ne 0 ]];then
echo "yum 配置错误"
exit 110
fi
wget -O ./mysql8.0.rpm https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
yum install -y mysql8.0.rpm
yum clean all
yum makecache fast
else
echo "网络错误"
exit 22
fi
case $mysqlversion in
5.5)
yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql55-community
yum -y install mysql-community-server
;;
5.6)
yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql56-community
yum -y install mysql-community-server
;;
5.7)
yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql57-community
yum install -y mysql-community-server
;;
8.0)
yum install -y mysql-community-server
;;
*)
yum repolist all |grep mysql
echo "其他版本可自行选择下载并配置"
exit 13
;;
esac
systemctl start mysqld
echo "Mysql Yum安装完成"
#将mysql数据目录转移
systemctl stop mysqld
mv /var/lib/mysql $mysqlpath
usermod -d /data/mysql mysql
echo "Mysql迁移至data目录完成"
sed -i -r -e '/^datadir\=/c \datadir=/data/mysql' /etc/my.cnf
sed -i -r -e "/^socket\=/c \socket=$mysqlpath/mysql.sock" /etc/my.cnf
sed -i -r -e '3i \\n[client]' /etc/my.cnf
sed -i -r -e "5i \socket=$mysqlpath/mysql.sock\n" /etc/my.cnf
echo -e "\n# Master 1" >> /etc/my.cnf
echo -e "server_id = 1" >> /etc/my.cnf
echo -e "default_storage_engine = innodb" >> /etc/my.cnf
echo -e "character-set-server = utf8" >> /etc/my.cnf
echo -e "sql_mode = \"STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\"" >> /etc/my.cnf
echo -e "binlog-ignore-db = mysql" >> /etc/my.cnf
echo -e "binlog-ignore-db = information_schema" >> /etc/my.cnf
echo -e "log-bin = mysql-bin" >> /etc/my.cnf
echo -e "max_allowed_packet = 1G" >> /etc/my.cnf
echo -e "max_connections = 5000" >> /etc/my.cnf
echo -e "max_connect_errors = 1000" >> /etc/my.cnf
echo -e "open_files_limit = 65535" >> /etc/my.cnf
echo -e "table_open_cache = 256" >> /etc/my.cnf
echo -e "tmp_table_size = 1000M" >> /etc/my.cnf
echo -e "read_rnd_buffer_size = 32M" >> /etc/my.cnf
echo -e "sort_buffer_size = 32M" >> /etc/my.cnf
echo -e "join_buffer_size = 128M" >> /etc/my.cnf
systemctl start mysqld
echo "启动成功,初始密码如下(mysql5.7前版本没有初始密码)"
grep -o 'root@localhost.*' /var/log/mysqld.log
echo "my.conf配置完成"
sed -i -r -e '12i \-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT' /etc/sysconfig/iptables
systemctl restart iptables.service
echo "iptables防火墙3306端口配置完成"
echo "MYSQL安装脚本完成"
echo "MYSQL部署路径:$mysqlpath"
echo "MYSQL初始密码如下(mysql5.7前版本没有初始密码):"
grep -o 'root@localhost.*' /var/log/mysqld.log
echo "MYSQL登录命令:mysql -uroot -p"
echo "MYSQL登录后修改密码命令:set password for 'root'@'localhost' = password('此处修改密码');"
echo "MYSQL登录后对所有IP授权登录密码:GRANT ALL PRIVILEGES ON *.* TO root@\"%\" IDENTIFIED BY \"此处填写密码\";"
apache安装脚本
#!/bin/bash
echo -e "\033[31m此脚本用于安装apache\033[0m"
echo -e "\033[31m开始检查gcc依赖......\033[0m"
if [[ $(rpm -qa|grep -c gcc) = '0' ]];then
yum -y install gcc
else
echo "gcc已存在无需安装!"
fi
echo -e "\033[31m开始检查make依赖......\033[0m"
if [[ $(rpm -qa|grep -c make) = '0' ]];then
yum -y install make
else
echo "make已存在无需安装!"
fi
echo -e "\033[31m开始检查pcre-devel依赖......\033[0m"
if [[ $(rpm -qa|grep -c pcre-devel) = '0' ]];then
yum -y install pcre-devel
else
echo "pcre-devel已存在无需安装!"
fi
echo -e "\033[31m开始检查openssl-devel依赖......\033[0m"
if [[ $(rpm -qa|grep -c openssl-devel) = '0' ]];then
yum -y install openssl-devel
else
echo "openssl-devel已存在无需安装!"
fi
echo -e "开始检查expat-devel依赖......"
if [[ $(rpm -qa|grep -c expat-devel) = '0' ]];then
yum -y install expat-devel
else
echo "expat-devel已存在无需安装!"
fi
# 安装apr
echo -e "准备解压apr......"
read -p "请输入apr所在在路径,如(/data/soft/apr):" APR_PATH
read -p "请输入apr解压路径,如(/data):" apr_path
echo -e '\033[31m开始解压apr\033[0m'
tar -zxvf "$APR_PATH"/apr-1*.tar.gz -C "$apr_path"
sleep 1
# 安装apr-util
echo -e "准备解压apr-util......"
read -p "请输入apr所在在路径,如(/data/soft/apr-util):" APRUTIL_PATH
read -p "请输入apr解压路径,如(/data):" aprutil_path
echo -e '\033[31m开始解压apr-util\033[0m'
tar -zxvf "$APRUTIL_PATH"/apr-util*.tar.gz -C "$aprutil_path"
sleep 1
# 安装pcre
echo -e "准备解压pcre......"
read -p "请输入apr所在在路径,如(/data/soft/pcre):" PCRE_PATH
read -p "请输入apr安装路径,如(/data):" pcre_path
echo -e '\033[31m开始解压pcre\033[0m'
tar -zxvf "$PCRE_PATH"/pcre*.tar.gz -C "$pcre_path"
sleep1
# 安装apache
echo -e "准备解压httpd......"
read -p "请输入apr所在在路径,如(/data/soft/apache):" APACHE_PATH
read -p "请输入apr解压路径,如(/data):" apache_path
echo -e '\033[31m开始解压apache\033[0m'
tar -zxvf "$APACHE_PATH"/httpd*.tar.gz -C "$apache_path"
sleep 1
# 将apr和apr-util源码与apache合并
echo -e "准备将apr文件与apr-util文件合并至httpd......"
cp -ar "$apr_path"/apr-1.7.0/ "$apache_path"/httpd-2.4.53/srclib/apr
cp -ar "$aprutil_path"/apr-util-1.6.1/ "$apache_path"/httpd-2.4.53/srclib/apr-util
echo -e '\033[31m合并完成!\033[0m'
# 编译apache
cd "$apache_path"/httpd-2.4.53
echo -e "准备安装http......"
./configure --prefix=/data/apache --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-included-apr --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
sleep 1
make
sleep 3
make install
sleep 3
# 修改配置文件开启80端口
echo -e "开启默认端口"
sed -e 's/^#ServerName www.example.com\:80/ServerName localhost\:80/g' /data/apache/conf/httpd.conf
/data/apache/bin/apachectl -t
echo $?
if [ $? -eq 0 ];then
/data/apache/bin/apachectl start
curl -I "$(ifconfig eth0 |grep "inet"|awk -F '[:" "]+' '{print $3}')"
else
echo "apache启动失败,请检查配置!"
fi