SQL基本用法一 Li.015

1. 建立表 4个表关系 1.学生表 Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 2.课程表 Course(c_id,c_name,t_id) – –课程编号, 课程名称, 教师编号 3.教师表 Teacher(t_id,t_name) –教师编号,教师姓名 4.成绩表 Score(s_id,c_id,s_s_score) –学生编号,课程编号,分数 -- 学生表 CREATE TABLE Student( s_id VARCHAR(20), s_name VARCHAR(20) NOT NULL DEFAULT '', s_birth VARCHAR(20) NOT NULL DEFAULT '', s_sex VARCHAR(10) NOT NULL DEFAULT '', PRIMARY KEY(s_id) ); -- 课程表 CREATE TABLE Course( c_id VARCHAR(20), c_name VARCHAR(20) NOT NULL DEFAULT '', t_id VARCHAR(20) NOT NULL, PRIMARY KEY(c_id) ); -- 教师表 CREATE TABLE Teacher( t_id VARCHAR(20), t_name VARCHAR(20) NOT NULL DEFAULT '', PRIMARY KEY(t_id) ); -- 成绩表 CREATE TABLE `Score`( s_id VARCHAR(20), c_id VARCHAR(20), s_score INT(3), PRIMARY KEY(s_id,c_id) ); 1.1 插入对应的数据 -- 插入学生表测试数据 insert into Student values('01' , '赵雷' , '1990-01-01' , '男'); insert into Student values('02' , '钱电' , '1990-12-21' , '男'); insert into Student values('03' , '孙风' , '1990-05-20' , '男'); insert into Student values('04' , '李云' , '1990-08-06' , '男'); insert into Student values('05' , '周梅' , '1991-12-01' , '女'); insert into Student values('06' , '吴兰' , '1992-03-01' , '女'); insert into Student values('07' , '郑竹' , '1989-07-01' , '女'); insert into Student values('08' , '王菊' , '1990-01-20' , '女'); insert into Student values('09' , '如花' , '1991-02-15' , '女'); -- 课程表测试数据 insert into Course values('01' , '语文' , '02'); insert into Course values('02' , '数学' , '01'); insert into Course values('03' , '英语' , '03'); insert into Course values('04' , '体育' , '01'); -- 教师表测试数据 insert into Teacher values('01' , '张三'); insert into Teacher values('02' , '李四'); insert into Teacher values('03' , '王五'); -- 成绩表测试数据 insert into Score values('01' , '01' , 80); insert into Score values('01' , '02' , 90); insert into Score values('01' , '03' , 99); insert into Score values('02' , '01' , 70); insert into Score values('02' , '02' , 60); insert into Score values('02' , '03' , 80); insert into Score values('03' , '01' , 80); insert into Score values('03' , '02' , 80); insert into Score values('03' , '03' , 80); insert into Score values('04' , '01' , 50); insert into Score values('04' , '02' , 30); insert into Score values('04' , '03' , 20); insert into Score values('05' , '01' , 76); insert into Score values('05' , '02' , 87); insert into Score values('06' , '01' , 31); insert into Score values('06' , '03' , 34); insert into Score values('07' , '02' , 89); insert into Score values('07' , '03' , 98); insert into Score values('09', '01', 50); insert into Score values('09', '02', 40); insert into Score values('09', '03', 90); insert into Score values('09', '04', 99); 2. SQL练习 查询姓"张"老师的个数 select count(t_id) from Teacher where t_name like "张%"; 查询1990年出生的学生名单 select s_id, s_name from Student where year(s_birth)=1990; 查询课程编号为"02"的总成绩 select c_id,sum(s_score) as '总成绩' from Score where c_id=02; 查询选了课程的学生人数 思路学生唯一, 然后再计算总数 select count(distinct s_id) as "选课人数" from Score; 查询各科成绩最高和最低的分: 以如下的形式显示: 课程ID, 最高分, 最低分 select c_id as 课程ID, max(s_score) as 最高分, min(s_score) as 最低分 from Score group by c_id; 查询每门课程被选修的学生数 select c_id, count(s_id) from Score group by c_id; 查询男生,女生人数 select s_sex as 性别, count(s_id) as 人数 from Student group by s_sex; 查询平均成绩大于60分的学生的学号和平均成绩 学号与平均成绩都在Score表中可以获取到 ...

July 26, 2021 · 8 分钟 · Lizicai

MariaDB MySQL连接的2种常见错误 Li.014

1. 常见MySQL Mariadb连接的2种错误 1.1 错误一 ERROR 1045 (28000): Access denied for user 'usera'@'localhost' (using password:YES) 1.2 错误二 ERROR 1045 (28000): Access denied for user 'usera'@'localhost' (using password:NO). 2. 错误一 常见错误是密码错误 重置密码即可 3. 错误二 输入账号密码时没有输入密码. 3.1 命令行中没有-p进行无密码登录 3.2 如果是IDE中的yaml文件确定password的缩进正确 cat application.yaml spring: datasource: driver-class-name: org.mariadb.jdbc.Driver url: jdbc:mariadb://localhost:3306/admin username: admin password: 123456 上面的password缩进错误, 就会提示(using password:No) 正确的是 spring: datasource: driver-class-name: org.mariadb.jdbc.Driver url: jdbc:mariadb://localhost:3306/admin username: admin password: 123456

July 25, 2021 · 1 分钟 · Lizicai

编译安装Nginx支持tls1.3 Li.013

1. 直接脚本安装, 分别安装openss 1.1.1k和Nginx. 步骤2 3分步安装是脚本的解释. 步骤4是配置和验证. curl -O https://raw.githubusercontent.com/leezicai/share/master/nginx/yum_install_openssl.sh sh yum_install_openssl.sh curl -O https://raw.githubusercontent.com/leezicai/share/master/nginx/yum_install_openssl_nginx.sh sh yum_install_openssl_nginx.sh 2. 分步安装, 安装Opentssl, tls1.3需要openssl 1.1.1以上版本, 默认CentOS中openssl版本1.1.1以下, 不支持. install_openssl.sh # 安装需要编译的软件 yum install -y gcc gcc-c++ pcre-devel zlib-devel make unzip gd-devel perl-ExtUtils-Embed libxslt-devel openssl-devel perl-Test-Simple yum groupinstall -y 'Development Tools' cd /usr/src wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz tar xvf openssl-1.1.1k.tar.gz cp -r openssl-1.1.1k openssl cd openssl ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl --libdir=/lib64 shared zlib-dynamic make -j4 make test make install mv /usr/bin/openssl /usr/bin/openssl-backup ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl 3. 分步安装, 编译安装Nginx, 编译安装nginx脚本 3.1 编译安装Nginx, 需要指定openssl的路径. # 编译安装nginx cd /usr/src wget http://nginx.org/download/nginx-1.21.1.tar.gz tar xvf nginx-1.21.1.tar.gz cd nginx-1.21.1 # 使用命令nginx -V查看编译参数, 和官方源保持一致, 仅用添加--with-openssl=/usr/src/openssl即可. ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' --with-openssl=/usr/src/openssl make -j4 make install 3.2 创建Nginx服务, 参考官方 # 创建nginx服务 vi /lib/systemd/system/nginx.service # 输入以下内容 [Unit] Description=The NGINX HTTP and reverse proxy server After=syslog.target network-online.target remote-fs.target nss-lookup.target Wants=network-online.target [Service] Type=forking PIDFile=/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t ExecStart=/usr/sbin/nginx ExecReload=/usr/sbin/nginx -s reload ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target 3.3 启动nginx服务, 已经支持tls1.3. # nginx.service生效 systemctl daemon-reload systemctl enable nginx systemctl start nginx 4. 配置和验证tls1.3 4.1 配置支持tls1.3 在https服务中服务以下参数即可. ...

July 25, 2021 · 2 分钟 · Lizicai

安装Nginx可用服务 Li.012

1. Nginx 简介, 本篇主要Nginx安装. Nginx是免费的开源软件,根据类BSD许可证的条款发布。 Nginx是异步框架的网页服务器,也可以用作反向代理、负载平衡器和HTTP缓存。 根据W3Techs的数据,前100万个网站中的37.7%,前10万个网站中的49.7%,以及前10000个网站中的57.0%被使用. 2. Nginx 安装. 2.1 CentOS 使用默认源安装 yum install nginx 2.2 CentOS 使用Nginx官方源安装, 安装脚本地址 .    创建Nginx官方源 vim /etc/yum.repos.d/nginx.repo # 存入写下面数据 [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true    使用yum安装nginx # 默认安装 最新稳定版本nginx. yum install nginx    检查安装成功 nginx -version 2.3 如需编译安装可参考, 编译安装Nginx地址 . 3. 创建Nginx可访问的服务, 开通端口. 仅安装Nginx外部仍然是无法访问的, 需要解决如下问题. 3.1 云服务器开启安全组, 对外网开放可以访问的端口和协议. 以腾讯云为例添加Nginx的80和443端口.    云服务商有无安全组, 蓝色有, 灰色标记无 类型 腾讯云 阿里云 亚马逊云 谷歌云 搬瓦工 有无安全组    以腾讯为例如何开通安全组中 80 和 443 端口. 点击对应的云服务 ...

July 25, 2021 · 1 分钟 · Lizicai

安装MariaDB和设置utf-8mb4字符集 Li.011

1. 安装MariaDB. 二种方式, 使用默认源和自建官方源. 1.1 使用默认源 yum -y install mariadb-server mariadb-client 安装后执行, mysql_secure_installation是初始化 systemctl enable mariadb systemctl start mariadb mysql_secure_installation 1.2 使用自建官方源, 可安装MariaDB 10.5稳定版. 官方文档地址    创建MariaDB.repo vim /etc/yum.repos.d/MariaDB.repo # MariaDB 10.7 CentOS repository list - created 2022-02-16 06:02 UTC # https://mariadb.org/download/ [mariadb] name = MariaDB baseurl = https://tw1.mirror.blendbyte.net/mariadb/yum/10.7/centos7-amd64 gpgkey=https://tw1.mirror.blendbyte.net/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck=1    再执行安装命令即可, 并初始化 yum install -y mariadb-server mariadb-client systemctl enable mariadb systemctl start mariadb # 初始化 mysql_secure_installation 2. 设置MariaDB字符集. 需要设置1个文件my.cnf 即可 2.1 vim /etc/my.cnf 增加以下内容 [client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE init_connect='SET NAMES utf8mb4' character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci !includedir /etc/my.cnf.d character-set-client-handshake=FALSE 可以影响collation_connection的结果为utf8mb4_unicode_ci,而不是utf8mb4_general_ci。当然,使用SET collation_connection = utf8mb4_unicode_ci或collation_connection = utf8mb4_unicode_ci也可以。 SET NAMES 指示客户端连接使用的字符集,即向服务器发送 SQL 语句的字符集。 character-set-server 设置服务器字符集。要正确使用 utf8mb4,需要确保客户端、服务器和连接都设置为 utf8mb4。 init_connect等所有其他有关字符集的默认设置都会继承自character-set-server,也即单独指定init-connect、character_set_client, character_set_results,character_set_connection等都是不必须的。因此,上面设置中的init_connect可以省略 3. 重启MariaDB, 连接数据库,检查字符集. 3.1 重启MariaDB systemctl restart mariadb 3.2 连接数据库. # 回车输入密码即可 mysql -uroot -hlocalhost -P3306 -p 3.3 检查字符集 show variables like '%character%'; show variables like '%collation%'; ...

July 21, 2021 · 2 分钟 · Lizicai

Crontab定时任务使用 Li.010

1. 使用Crontab的原因. 每次更新博客都要登录服务器(ssh延迟容易中断)手动去拉取代码, 不方便. 故设置成自动获取最新代码. 2. 选择crontab定时 查看下资源, 觉得crontab简单可行, 直接来用就好了. 3. 定时任务需需要做事情. 特定目录执行git pul的shell脚本. 这里配置ssh key vim git_pull.sh #!/bin/bash # 进入目录中 cd ~/nginx-hugoBlog/lizicai.com/ # 拉取github中的代码 git pull 添加crontab任务文件 vim git_pull.cron 设置5分钟拉取一次代码 */5 * * * * cd /root && ./git_pull.sh 把定时任务文件内容加到crontab中 # 添加root账户中 crontab -uroot git_pull.cron # 查询当前任务, root是账户, 添加的定时任务会放到这个目录中 crontab -uroot -l cat /var/spool/cron/root # 删除root用户的定时任务 crontab -uroot -r 日志的地址, 相当重要. # 日志文件 /var/spool/mail/root # 查看日志 # 可以把时间设置1分钟, 可以很快看到执行情况, 方便调试. tail -f /var/spool/mail/root 4. crontab 时间配置 # 格式是 # 分 时 月份中第日 月份 星期中第几天 运行的命令 # 每分钟执行一次, */1 * * * * 命令 # 每小时第20, 30分钟执行一次 20,30 * * * * 命令 # 8-20时, 每小时第20, 30分执行一次 20,30 8-20 * * * 命令 # 每2天执行一次命令 0 0 */2 * * 命令 # 周六周日执行命令 0 0 0 0 6,0 命令 # 每月初一, 十五去执行 0 0 1,15 * * 命令

July 21, 2021 · 1 分钟 · Lizicai

Ag Fasd Fzf终端模糊搜索神器 Li.009

ag比grep快速的速度, 同时打印出搜索词的行数. Fasd 时空机, 瞬间跳到去过的目录, 或定位打开过的文件. Fzf 模糊搜索工具. 1. 安装ag fasd fzf 1.1 Mac安装ag fasd fzf. brew install the_silver_searcher fzf fasd # 以下内容添加到~/.zshrc或~/.bashrc中 eval "$(fasd --init auto)" # 重新生效 source ~/.zshrc 或 source ~/.bashrc 1.2 Linux安装ag fasd fzf. yum install the_silver_searcher fasd git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf ~/.fzf/install 2. 别名 alias jan='fasd -a' # any alias js='fasd -si' # show / search / select alias jd='fasd -d' # directory alias jf='fasd -f' # file alias jsd='fasd -sid' # interactive directory selection alias jsf='fasd -sif' # interactive file selection alias j='fasd_cd -d' # cd, same functionality as j in autojump alias jz='fasd_cd -d -i' # cd with interactive selection alias jdd='fasd -D' # 删除一个路径 alias v='jf -e vim' alias nv='jf -e nvim' alias catf='jf -e cat' alias py3f="jf -e python3" alias lsf="jd -e ls" alias shf='jf -e sh' alias commandf='jf -e command' # preview file alias ffp='fzf --preview '"'"'[[ $(file --mime {}) =~ binary ]] && echo {} is a binary file || (rougify {} || highlight -O ansi -l {} || coderay {} || cat {}) 2> /dev/null | head -500'"'" # 跳到最近匹配的目录中 jj() { [ $# -gt 0 ] && fasd_cd -d "$*" && return local dir dir="$(fasd -Rdl "$1" | fzf -1 -0 --no-sort +m)" && cd "${dir}" || return 1 } jje() { [ $# -gt 0 ] && fasd_cd -d "$*" && return local dir dir="$(fasd -Rdl "$1" | fzf -e -1 -0 --no-sort +m)" && cd "${dir}" || return 1 } # 从当前路径搜索并跳转 jcd() { local dir dir=$(find ${1:-.} -path '*/\.*' -prune \ -o -type d -print 2> /dev/null | fzf +m) && cd "$dir" } jcde() { local dir dir=$(find ${1:-.} -path '*/\.*' -prune \ -o -type d -print 2> /dev/null | fzf -e +m) && cd "$dir" } alias ffall="find / -type f | fzf | pbcopy" alias ffm="find ~/ -type f | fzf | pbcopy" alias ffd="find . -type f | fzf | pbcopy" alias ffec="find ~/ -type f | fzf -e | pbcopy" 3. 使用效果 3.1 ag, ag与fasd联用. ...

July 20, 2021 · 2 分钟 · Lizicai

Homebrew Mac下最好用的软件管理工具 Li.008

1. Homebrew是什么? Homebrew能做什么? Homebrew是Mac下神一样的软件管理工具. Homebrew几乎安装任何你想到的开源软件(没有界面Gui的, 有界面的) Homebrew同样支持相当多的商业应用安装, 像jetbrains IDEA全家桶, 网易云音乐 QQ也都支持. 2. Homebrew 安装 打开终端Terminal, 输入下面命令即可. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 3. Homebrew 使用. 3.1 brew install –cask与brew install合并为brew install. brew install 可安装有界面或无界面的软件与应用. 如果重名, 仍然需要brew install –cask # 搜索软件 brew search git brew search google-chrome # 安装 brew install vim brew install neteasemusic # 重新安装 brew reinstall vim brew reinstall neteasemusic # 升级软件 brew upgrade curl brew upgrade google-chrome # 不升级软件 brew pin curl # 卸载软件与应用 brew uninstall git brew uninstall QQ # 查看软件与应用 brew info git brew info sourcetree brew list # 启动软件 brew services start mariadb # 重新启动软件 brew services restart nginx # 关闭软件 brew services stop mariadb 3.2 使用别名, 更快速, 下面别名写~/.zshrc或~/.bashrc中, source ~/.zshrc或.bashrc重新生效. # Brew alias bsearch='brew search' alias bupdate='brew update' alias blist='brew list' alias boutdated='brew outdated' alias bupout='brew update && brew outdated' alias binstall='brew install' alias buninstall='brew uninstall' alias breinstall='brew reinstall' alias bupgrade='brew upgrade' alias bremove='brew remove' alias binfo='brew info' # brew services alias bservices='brew services' alias bstart='brew services start' alias bsrestart='brew services restart' alias bstop='brew services stop' alias bslist='brew services list' # brew cask alias bcinstall='brew install --cask' alias bcreinstall='brew reinstall --cask' alias bcinfo='brew --cask info' alias bcuninstall='brew uninstall --cask' alias bcremove='brew remove --cask' alias bcupgrade='brew upgrade --cask' alias bcoutdated='brew --cask outdated' alias bclist='brew list --cask ' alias bcask='brew --cask' alias bcua='brew cu -a' alias buca='brew cu -a' 3.3 查看所有有界面Gui可更新软件.    安装brew-cask-upgrade, 升级管理 brew tap buo/cask-upgrade    查看所有有界面可升级的软件 brew cu -a 选择Y更新所有, 也可brew upgrade visual-studio-code, 更新指定软件 ...

July 19, 2021 · 2 分钟 · Lizicai