基本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;

李泽信 发布于 2022-3-23 23:00

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"

李泽信 发布于 2022-3-11 15:22

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}`

李泽信 发布于 2022-3-9 15:40

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 输出文件变化后新增加的数据。

李泽信 发布于 2021-10-13 12:09

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 \"此处填写密码\";"

李泽信 发布于 2021-10-13 10:15

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

李泽信 发布于 2021-8-18 17:49

个人资料

搜索

日历

时间进度

    今日剩余 59.6%
    本周剩余 37.1%
    本月剩余 22.0%
    本年剩余 52.2%

访问统计