文章

常用SQL

DCL(Data Control Language)数据控制语言 # DCL 在 mysql 中可以正常使用其他数据库没测试 用户管理 # sql 复制 1 2 3 4 5 6 -- 查询用户 select host,user from mysql.user; -- 添加用户 create user '用户名'@'主机名' identified by '密码'; -- 删除用户 drop user '用户名'@'主机名'; 权限管理 # sql 复制 1 2 3 4 5 6 7 8 9 10 11 12 13 14 -- 查询权限 show grants for '用户名'@'主机名'; -- 查询 root 用户权限 show grants for 'root'@'%'; -- 给予权限 grant 权限列表 on 库名.表名 to '用户名'@'主机名'; -- 给 user授予所有权限 grant all on *.* to 'user1'@'localhost'; -- 撤销权限 revoke 权限列表 on 库名.表名 from '用户名'@'主机名'; -- 撤销 user的所有权限 revoke all on *.* from 'user1'@'localhost'; DDL(Data Definition Language)数据定义语言 # 操作库 # sql 复制 1 2 3 4 5 6 7 8 9 10 11 12 13 14 -- 查看所有数据库 show databases; -- 查看数据库的定义信息 show create database 库名; -- 创建库 create database 库名; -- 检查库是否存在,不存在则创建 create database if not exists 库名; -- 修改数据库字符信息 alter database 库名 character set utf8; -- 删除数据库 drop database 库名; 操作表 # sql 复制 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 -- 查看表结构 desc 表名; -- 查看创建表的SQL语句 show create table 表名; -- 创建表 create table 表名( id int, name varchar(32), age int , score double(4,1), birthday date, insert_time timestamp ); -- 修改表名 alter table 旧表名 rename to 新表名; -- 删除表 drop table 表名; -- 检查表是否存在,存在则删除 drop table if exists 表名; -- 添加一列 alter table 表名 add 列名 数据类型; -- 删除列 alter table 表名 drop 列名; DML(Data Manipulation Language)数据操作语言 # 插入 insert into # sql 复制 1 2 3 4 -- 写列名 insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n); -- 不写列名 insert into 表名 values(值1,值2,...值n); 删除 delete # sql 复制 1 2 3 4 5 6 -- 删除表中数据 delete from 表名 where 列名 = 值; -- 删除表中所有数据 delete from 表名; -- 删除表中所有数据(直接删除表,再创建一张一样的表) truncate table 表名; 修改 update # sql 复制 1 2 3 4 -- 不带条件的修改(修改所有行) update 表名 set 列名 = 值; -- 带条件的修改 update 表名 set 列名 = 值 where 列名 = 值; DQL(Data Query Language)数据查询语言 # 基础关键字 # sql 复制 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 -- 查询年龄大于等于小于等于30 -- &&(并且) select * from 表名 where age >= 20 && age <= 30; -- and(并且) select * from 表名 where age >= 20 and age <= 30; -- between..and(之间) select * from 表名 where age between 20 and 30; -- 查询年龄22岁,18岁,25岁的信息 -- or(或者) select * from 表名 where age = 22 or age = 18 or age = 25; -- in(集合) select * from 表名 where age in (22,18,25); -- 查询英语成绩不为null -- in not null(不为空) select * from 表名 where english is not null; /** like(模糊查询) _(单个字符) %(多个字符) */ -- 查询性王的人 select * from 表名 where name like '王%'; -- 查询第二个字是麻的人 select * from 表名 where name like '_麻%'; -- 查询名字是三个字的人 select * from 表名 where name like '___'; -- distinct(重复的值都只显示一个) -- 查询年龄集合,重复的只显示一个 select distinct age where 表名; 排序查询 # sql 复制 1 2 3 4 -- 根据年龄升序(默认) select * from 表名 order by age; -- 根据年龄降序 select * from 表名 order by age desc; 聚合函数 # sql 复制 1 2 3 4 5 6 7 8 9 10 -- 计算数据行数 select max(*) from 表名; -- 计算年龄最大是多少 select max(age) from 表名; -- 计算年龄最小是多少 select min(age) from 表名; -- 计算年龄总和是多少 select sum(age) from 表名; -- 计算年龄平均数是多少 select avg(age) from 表名; 分组查询 group by # sql 复制 1 2 3 4 5 6 -- 按照性别分组,分别查询男、女的平均分、人数 select sex,avg(math),count(id) from 表名 group by sex; -- 将分数高于60的人按照性别分组,分别查询男、女的平均分、人数 select sex,avg(math),count(id) from 表名 where math > 60 group by sex; -- 按照性别分组,分别查询男、女的平均分、人数。要求:分数大于60,分组后人数大于2 select sex,avg(math),count(id) from 表名 where math > 60 group by sex having count(id) > 2; 分页查询 # sql 复制 1 2 3 4 5 6 7 8 9 10 11 12 /** 该分页只支持mysql limit 开始索引,查询条数 开始索引计算公式:(页数 - 1) * 每页条数 */ -- 每页显示10条 -- 第一页 select * from 表名 limit 0,10; -- 第二页 select * from 表名 limit 10,10; -- 第三页 select * from 表名 limit 20,10; 内连接查询 # sql 复制 1 2 3 4 5 6 7 8 9 10 11 -- 隐式内连接 -- 语法 select 字段列表 from 表1,表2...表n where 条件; -- 例子 select t1.c1,t1.c2,t2.c1 from t1,t2 where t1.t2Id = t2.id; -- 显式内连接 -- 语法 select 字段列表 from 表1 join 表2 on 条件; -- 例子 select * from t1 join t2 on t1.t2Id = t2.id; 外连接查询 # sql 复制 1 2 3 4 5 6 7 8 9 10 11 -- 左外连接 -- 语法 select 字段列表 from 表1 left join 表2 on 条件; -- 例子 select t1.*,t2.c1 from t1 left join t2 ON t1.t2Id = t2.id; -- 右外连接 -- 语法 select 字段列表 from 表1 right join 表2 on 条件; -- 例子 select t1.*,t2.c1 from t1 right join t2 ON t1.t2Id = t2.id; 子查询 # 子查询结果是单行单列 # sql 复制 1 2 3 4 5 6 -- 查询最高的成绩(这里假设最高为98) select max(math) from 表名; -- 查询成绩最高的人的信息 select * from 表名 where math = 98; -- 使用子查询 select * from 表名 where math = (select max(math) from 表名); 子查询结果是多行单列 # sql 复制 1 2 3 4 5 6 -- 查询名称为n1或者n2的id(这里假设id为1,2) select id from 表名 where name = 'n1' or name = 'n2'; -- 查询成绩最高的人的信息 select * from 表名 where id = 1 or id = 2; -- 使用子查询 select * from 表名 where id in (select id from 表名 where name = 'n1' or name = 'n2'); 子查询结果是多行多列 # sql 复制 1 2 -- 这里t1和t2是同一张表,查询结果每列有两个相同的数据 select * from 表名 t1,(select * from 表名) t2 where t1.id = t2.id;

2024-05-05 · 5 分钟 · 2098 字 · Linlccc

管理 SSH

生成新的 SSH 密钥 # 在终端中输入以下指令以提供的电子邮件为标签创建SSH密钥 Bash 复制 1 ssh-keygen -t rsa -b 4096 -C "[email@example.com]" 根据提示输入密钥保存文件,可空保存到默认文件C:\Users\[User]\.ssh\id_rsa 根据提示输入两次密码(建议不设置密码,否者每次 push 都需要输入密码) 将 SSH 密钥添加到 ssh-agent # 以管理员权限打开 PowerShell 启动 ssh agent: Bash 复制 1 2 Get-Service -Name ssh-agent | Set-Service -StartupType Manual Start-Service ssh-agent 将 SSH 私钥添加到 ssh-agent (无需管理员权限) Bash 复制 1 ssh-add C:\Users\[User]\.ssh\id_rsa 移除 SSH 密钥 # 删除C:\Users\[User]\.ssh\文件夹中的两个密钥文件 从ssh agent中移除ssh密钥 Bash 复制 1 2 3 4 # 查看已加载的密钥列表 ssh-add -l # 移除密钥 ssh-add -d C:\Users\[User]\.ssh\id_rsa

2024-04-22 · 1 分钟 · 272 字 · Linlccc

C++ 学习笔记

基础 # 整数类型 # 这些类型里面除了只有 signed 和 int 的都可以省略 signed / int 例如 short, short int, signed short, signed short int 表示一个类型 类型 占用字节数 取值范围 signed char 1 -到 127 unsigned char 1 到 255 short, short int, signed short, signed short int 2 -到 32767 unsigned short, unsigned short int 2 到 65535 int, signed, signed int 4 -到 2147483647 unsigned, unsigned int 4 到 4294967295 long, long int, signed long, signed long int 4 与 int 或 long long 相同 unsigned long, unsigned long int 4 与 unsigned 或 unsigned long long 相同 long long, long long int, signed long long, signed long long int 8 -到 9223372036854775807 unsigned long long, unsigned long long int 8 到 18446744073709551615 浮点类型 # 类型 占用字节数 取值范围 float 4 1.175494351e-到 3.402823466e+38 double 8 2.2250738585072014e-到 1.7976931348623157e+308 long double 12 3.36210314311209350626267781732175260e-到 1.18973149535723176508575932662800702e+4932 无效浮点数信息 # 在 C++中,浮点数类型的值可以是无效的,具体取决于浮点数类型的规范。以下是一些常见的无效浮点数值: ...

2023-02-28 · 6 分钟 · 2753 字 · Linlccc

踩坑记--Safari之正向后行断言

正则表达式 # 1. Safari 处理正则表达式中的正向后行断言时(?<=…),异常 # js 复制 1 2 3 4 5 6 // 以下代码在 Chrome 中正常,但在 Safari 中会报错 "https://linlccc.com?theme=light".replace(/(?<=[?|&]theme=)\w+/, "dark"); // 解决方案,使用捕捉组+替换字符串的方式 "https://linlccc.com?theme=light".replace(/([?|&]theme=)\w+/, "$1dark"); // 以上两个执行结果都是 "https://linlccc.com?theme=dark"

2023-02-24 · 1 分钟 · 107 字 · Linlccc

hugo 模板基本语法

概念 # 每一个模板都有一个名为 Page 数据对象 Page 信息参考: Page 信息参考 基础语法 # 访问变量 # go 复制 1 2 {{ .Titel }} // 访问已存在的变量 {{ $address }} // 访问自定义变量 声明变量与赋值 # go 复制 1 2 3 4 {{ $address := "http://www.baidu.com" }} // 声明自定义变量并赋值 {{ $msg := `Line one. Line two.` }} // 支持多行字符串 {{ $msg = "" }} // 将msg的值修改为空字符串 条件语句 # 条件语句 if/with 都以 {{ end }} 结束 在 hugo 模板中,条件语句的条件可以是任何表达式,而不仅仅是布尔类型的表达式,以下情况会被认为是 false: ...

2023-02-22 · 4 分钟 · 1899 字 · Linlccc

常用js

防抖 # js 复制 1 2 3 4 5 6 7 8 9 10 11 12 13 14 function debounce(fn, delay) { let timer; return function (...args) { timer && clearTimeout(timer); timer = setTimeout(() => fn.apply(this, args), delay); }; } // 测试 function task(arg) { console.log("run task" + arg); } const debounceTask = debounce(task, 1000); window.addEventListener("scroll", () => debounceTask(11)); 节流 # js 复制 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 function throttle(fn, delay) { let last = 0; return function (...args) { const now = Date.now(); if (now - last < delay) return; last = now; fn.apply(this, args); }; } // 测试 function task() { console.log("run task"); } const throttleTask = throttle(task, 1000); window.addEventListener("scroll", throttleTask);

2024-06-16 · 1 分钟 · 130 字 · Linlccc