SQL学习笔记
黄黄黄黄黄66
这个作者很懒,什么都没留下…
展开
-
2022转转秋招数据分析sql(2)连续签到天数
计算连续签到的天数!题目信息如下:table_name:t_signcolumns:id–iduid–用户idsign_date–签到日期sign_flag–今日是否签到:0–未签到,1–已签到输出信息如下:输出截至’2021-08-06’当前每个用户已经连续签到的天数,并按照天数降序排列。输出uid,days# 思路:首先,选取出所有的未签到日期;然后,对每个用户的未签到日期进行降序排列,此时每个用户的第一条信息则为该用户最后一次未签到日期,此日期后该用户均为连续签到;最后,计算该日原创 2021-09-19 11:49:21 · 562 阅读 · 0 评论 -
2022转转秋招数据分析sql(1)商品排名前三
查找每个城市商品利润前三的商品及其信息!题目信息如下:table_name:t_ordercolumns:city_name–城市名称order_id–订单号goods_code–商品编码goods_name–商品名称order_status–订单状态:0–未完成,1–已完成product_price–商品金额product_pay_price–实收金额cost_price–商品成本输出信息如下:输出各城市利润额排名前三的商品,并输出对应的订单数与利润率利润率=成本/实收(题目里原创 2021-09-19 10:52:41 · 762 阅读 · 0 评论 -
2022b站秋招sql题(1)
题目:你有一张table_a,需要计算2021年1月1日~6月30日各个内容分区前10%的up主明细填入table_btabel_a如下tid(内容分区)up_idvv(单日播放量)log_date(日期)游戏111120200101游戏132420200102游戏211320200101生活511220200101table_btid(内容分区)up_idvv(累计播放量)vv_rate(占分区播放量比例)原创 2021-08-27 10:16:36 · 531 阅读 · 0 评论 -
MySQL学习日志------窗口函数入门
窗口函数有点类似于LSTM中的时间窗的概念# 窗口函数形式# 如果没有over,则窗口为全部数据function(column1) # 此处function可以为avg、sum等over( partition by # 分组统计,要分列的组,有点类似group by order by # 要排序的列 rows between # 数据窗口范围 )# rows between使用方法rows between 2 preceding and current row # 取原创 2021-08-23 14:14:15 · 151 阅读 · 0 评论 -
MySQL学习------关于index索引
利用explain查看查询运行情况explainselect *from tablewhere condition# 输出如何查询这个条件,一般来说全表扫描创建index# 注意命名create index idx_name on table_name(column_name)查看indexshow indexes in table_name...原创 2021-08-17 10:48:41 · 350 阅读 · 0 评论 -
MySQL学习日志------创建、修改、删除dababase和table以及主键、外键等
创建databasecreate database database_name;create database if not exists database_name;删除databasedrop database if exists database_name创建tableuse database;# 删除table,如果存在drop table if exists table_name;create table table_namecreate table if not e原创 2021-08-13 13:32:42 · 214 阅读 · 0 评论 -
MySQL学习日志------事务transaction(简)
原子性:不论transaction中含有多少语句,只要有一个没有成功执行,则整个transaction都将不会执行创建transactionstart transaction;insert into table_name1set(..................);insert into table_name2set(..................);-- commit; # 确认以上操作-- rollback; # 退回以上操作查询当前# 显示当前的isolation原创 2021-08-12 15:38:25 · 103 阅读 · 0 评论 -
MySQL学习日志------数据类型2(JSON)
JSON类型创建JSON类型# key-value 类似dict# 首先插入一个json列columns_json(利用鼠标插入)# case1update table_nameset columns_json = '{ "key1" : [1,2,3], "key2" : 10, "key3" : { "key" : "value"}}'where condition # case2 # 使用mysql内置函数json_objectupdate table_name原创 2021-08-12 14:01:59 · 90 阅读 · 0 评论 -
MySQL学习日志------数据类型1(string、int、float、boolean、mnum、set、time、blob)
字符串类型CHAR(n) # 固定数据长度VARCHAR(n) # max:65535 (64KB)MEDIUMTEXT # max:16MBLONGTEXT # max:4GBTINYTEXT # max:255bytesTEXT # max:64KB 类似VARCHAR但一般使用后者 后者可以编入索引# 注意:# 英文占用1个字节,# 欧洲与中东语言占2个字节,# 亚洲语言(中文、日文等)占用3个字节整数类型TINYINT # 1B -128~127UNSIGNED TI原创 2021-08-12 13:58:37 · 254 阅读 · 0 评论 -
MySQL学习日志------event事件
有点类似定期任务查找event、开关event# 查找show variables like 'event%';show events; # 查看所有的events# 开关set global event_name =off/on创建/修改eventdelimiter $$create/alter event event_name # 创建或修改# 设置时间on schedule # 选一个就行 at '2021-08-21' # 指定事件执行 every 1 hour st原创 2021-08-12 10:32:25 · 133 阅读 · 0 评论 -
MySQL学习日志------触发器
触发器是涉及到插入、删除、更新前自动执行的一段SQL1、通常利用触发器增强数据的一致性2、记录数据改动情况创建触发器例如添加数据后对某合计列进行自动更新可以实现跨表更新,例如往A表中增加数据,触发器可以自动更新B表中的某些数据delimiter $$create trigger triggerr_name # 触发条件 after/before insert/update/delete on table_name1 for each row # 对每个插入的行都执行一次触发器b原创 2021-08-12 10:18:25 · 120 阅读 · 0 评论 -
MySQL学习日志------创建用户及权限管理
创建用户# 创建一个用户create user user_name identified by 'password'查看某个表格的用户权限select * from db_name.tabel_name.user# 输出某个数据库某个表格的用户权限查看某个用户的权限# 查看某个用户的权限show grants for user_name# 查看当前登录用户的权限show grants赋予权限grant all # 所有权限grant select,insert,update,原创 2021-08-12 09:32:00 · 76 阅读 · 0 评论 -
MySQL学习日志------关于函数function
函数只能返回单一值procedure可以返回多行多列的tabel创建function# 创建过程与procedure基本相同delimiter $$ # 使用sql自带的创建可省略create function function_name( parameter int )returns int # 定义输出类型 # 使用属性,可同时使用多个属性reads sql data # 读取modifies sql data # 修改,如果函数中upadte、insert、deletedet原创 2021-08-11 11:37:02 · 153 阅读 · 0 评论 -
MySQL学习日志------关于procedure
关于procedure:1、相当于一个封装的函数,可以用来输出相应条件下的数据,这一点和直接写where相同,但其可以用于程序化的更新update创建procedure# 创建proceduredilimiter $$ # 修改分隔符create procedure procedure_name()begin select * from tabel; # 每条语句后用;分隔end$$dilimiter ; # 修改分隔符调用procedure# 调用procedurecal原创 2021-08-11 11:24:02 · 323 阅读 · 0 评论 -
MySQL学习日志------关于视图view
视图的好处:1、信息安全,改动不涉及到原数据2、权限问题,没有某些表的修改权限创建视图create view view_name asselect *from table_name更新和删除视图# 删除视图drop view view_name# 更新视图create view or replace view_name asselect *from table_name可更新的视图# 视图内不含distinct# 视图内不含任何聚合函数:sum、max、min# 视图原创 2021-08-10 11:01:51 · 91 阅读 · 0 评论 -
MySQL学习日志------查找指定表名的位置
假如你的数据库较大,你想查找一张表在哪里目录下:SELECT table_schema FROM information_schema.TABLES WHERE table_name = '这里输入你要找的table的名字';输出为数据库名称!原创 2021-08-10 08:49:49 · 656 阅读 · 0 评论 -
MySQL学习日志------if与case
# if()函数 # 判断条件是否成立 # 仅能判断一个条件select if(condition,'True output','False output')from tabel# case函数# 可判断多个函数select case when condition1 then ‘aaaa’ when condition2 then ’bbbb‘ when condition3 then ’cccc‘ else ’dddd' endfrom tabel...原创 2021-08-06 17:21:06 · 66 阅读 · 0 评论 -
MySQL学习日志------ifnull与coalesce函数
# ifnull函数# 将columns中的null 替换成后面的字符串select ifnull(columns,'Not have something')from table# coalesce函数# 首先查找columns1中的null值# 若对应的columns2相应位置也为null值 则返回后面的字符串# 若对应的columns2相应位置不为null值 则返回columns2的值select ifnull(columns1,columns2,'Not have some原创 2021-08-06 16:56:49 · 241 阅读 · 0 评论 -
MySQL学习日志------常用日期函数
MySQL常用日期函数# now()函数 输出当前时间 # 年月日时分秒select now()# curdate()函数 输出当前日期# 年月日 select curdate()# curtime()函数 输出当前时间# 时分秒select curtime()# year()函数 输出时间中的年# 同理有month(),day(),hour(),minute(),second()# 输出类型均为intselect year(now())select month(now()原创 2021-08-06 16:42:24 · 96 阅读 · 0 评论 -
MySQL学习日志------常用的字符串函数
一些常用的字符串函数# length函数 输出字符串长度 3select lenght('aaa')# upper函数 将字符串转成大写 AAAselect upper('aaa')# lower函数 将字符串转成小写 aaaselect lower('AAA')# ltrim函数 删去字符串左侧的空格 aaaselect ltrim(' aaa')# rtrim函数 删去字符串右侧的空格 aaaselect ltrim(' aaa ')# trim原创 2021-08-06 16:14:03 · 91 阅读 · 0 评论 -
SQL学习日志------一些基本的数值函数
一些基本的数值函数:# round函数 四舍五入 1.34select round(1.3353,2)# truncate函数 截断 1.33select truncate(1.3353,2)# ceiling函数 向上取整 2select ceiling(1.33)# floor函数 向下取整 1select floor(1.33)# abs函数 绝对值 5.2select abs(-5.2)# rand函数 0~1内的随机浮点数select rand()...原创 2021-08-06 11:54:59 · 49 阅读 · 0 评论 -
SQL学习日志------regexp入门用法
REGEXP 正则表达式 入门用法select *from tablewhere columns REGEXP '%%%'^AAA ------开头AAA$ ------结尾AAA|BBB ------ orAAA -------含有AAA即可[gi]e ------- ge or iee[gi] ------eg or ei[a-c]h -------ah or bh or ch原创 2021-08-06 11:28:18 · 616 阅读 · 0 评论 -
SQL学习日志------like用法
like用法select *from tablewhere columns like '%%%% '%%%可填入任意构造的组合,例如:^ABscd -------开头为ABscdABscd$ ------结尾为ABscd_y ------第一个字符任意,第二个字符为y%b% -------%为占位符,可代表任意多字符,及只要含有b就行...原创 2021-08-06 11:20:11 · 749 阅读 · 0 评论