sql周报
数据库分类
1.关系型数据库
Mysql Qracle MariaDB PostgreSQL
mysql:开源免费 使用最广 性价比最高
Oracle:收费 但安全性高
PostgreSQL:开源免费 优点支持二次开发 兼容性较高
MariaDB:和mysql是一个作者,免费开源
特征:拥有固定的表结构
数据之间可以建立数据库层面的关系
2.非关系型数据库
redis mongoDB
redis:目前最火 使用频率最高的非关系型数据库,基于内容缓存数据
数据读写速度都非常快 是基于内存坐数据存取的但是也具有持久化的功能
mongoDB:文档型数据库,最像关系型的非关系型数据库 主要用于爬虫 大数据等领域
特征:没有固定的表结构 数据存储采用kv键值对的形式
数据之间无法建立数据库层面的关系 需要使用代码建立逻辑关系
SQL与NOSQL
数据库服务端是可以服务多种类型的客户端
客户端可以是自己开发的 也可以是python代码编写 也可以是java代码编写
SQL
操作关系型数据库的语言 mysql oracle mariadb
NoSQL
操作非关系型数据库的语言 redis mongodb
ps:要想跟数据库交互就必须使用数据库指定的语言
"""
SQL有时候也指代关系型数据库
NoSQL有时候也指代非关系型数据库
"""
基本的SQL语句
修改密码
set password=password('新密码')
建立库
create database 库名
查看库
show databases;
编辑库
alter database 库名 要修改的东西
删除库
drop database 库名
切换当前库
use 库名;
创建表
create table 表名
查看表结构
desc 表名
查看当下库里面的所有表名
show tables;
查看创建表时语法
show create table(字段名称 字段类型 字段约束条件)
表重命名
alter table l1 rename l2
删除表
drop table l1;
插入数据 添加数据
insert into l1 values 数据
查看表内数据详情
select * from l1;
编辑数据
update l1 set 字段名=新数据 where 约束条件;
删除数据
delete form 表名;
delete from 表名 where 筛选条件
数据库储存引擎
查看数据引擎
show engines
指定储存引擎
create table l1(id int primary) engine = innodb
存储引擎的优缺点
innoDB :储存速度相对较慢 但是安全性高 创建后生成包含 表结构 表数据 表索引 ,支持事务 行锁 外键等
myisam:mysql 5.5版本之前的默认引擎,安全性较低 因没有事务 行锁等功能,优点 存取数据速度快
Memory
基于内存存储数据,一旦服务端关闭 数据也会消失
仅用于临时数据的存取
blakhole
存入的任何数据都会立即消失
MYSQL基本字段类型
创建表时确定数据类型
eg:create table l1(id int,name char(6),age
enum('男','女'),
hobby set('读书','上网','游戏'))
1.整型
tinyint
smalint
int 最高10位数
bigint 最高20位数
2.浮点型
float(10,2)
# 总共储存10位数 小数点后保留2小数
douule(m,d)
decimal(m.d)
三者不同处 在于精确度不同
float < douule < decimal
3.字符串
char(m)
定长字符串
varchar(m)
变长字符串
char:
优点:存取速度更快 因为是整存整取速度会很快
缺点:占用额外的内容空间,导致内存空间浪费
varchar:
优点:节约储存内容
缺点:存取速度相对没有char那么快
text:
存储文章类数据
3.时间
datetime 年月日时分秒
date 年月日
time 时分秒
4.枚举
enum('内容1','内容2')
单选
5.集合
set('内容1','内容2','内容3')
多选
MYSQL字段约束条件
create table l1(id 数据类型 约束条件1 约束条件2,name char(4))
1.unsigned
去除符号 正负号
一般用于 整型 浮点型的约束
2.zerofill
填充0
整型 浮点型的约束
int(6) zerofill
insert into l3 values(1);
+--------+
| id |
+--------+
| 000001 |
+--------+
3.not null
非空
默认情况下所有的数据类型 都是可以为空的 null 可以不用强制输入
非空就是添加约束 不允许输入空 空字符串除外
4.default
默认值
给字段一个默认数据,
5.unique
唯一值
改字段下数据不可以重复,
联合唯一
unique(字段1,字段2)
数据值相加唯一
6.primary key
主键 自带 非空且唯一属性
一个表里只能有一个主键
主键查询速度较快 一般都是查询主键 所以一般都是把ID设为主键
7.自增
auto_increment
一般搭配ID使用
自增是每次输入过数据后 此数据会自动加一
表数据的筛选 查询 select where
查询语句关键词
select * *查询展示所有字段
select id,name 查询展示指定字段
from
from l1 数据来源于L1;
查询关键字之where筛选
select id from l1 where id > 3;
where id >3 and id <6;
可以使用and链接
where id in(1002,2871,2811);
准确查询 只要符合的条件都显示
where id >3 or id <10;
条件 和 条件 并存
where id like '%66'
模糊查询 %匹配任意字符 尾数为66的id
where id like '66%'
开头为66的id
% 代表 任意个数的任意字符
_代表一个任意字符
where id like '___'
# 查找id为3个字符的
null 代表空
where name is null;
# 也可以查找为空的数据
查询关键字之group by
按照指定的条件将数据组成一个个整体
eg:将所有数据 按照 性别 分组
所有数据 按照 等级 分组 等等
这样可以方便我们更好地统计
eg 查看每个等级 里面的人数
查看分组后 这个组的人均收入
等等
分组后可以使用集合函数
max最大值
min最小值
sun求和
avg平均值
count计数 计算个数
起别名
select post,avg(saraly) as '部门平均薪资' from l1 group by post;
group_concat
把分组内的指定数据返回成一个列表
例如 获取某个部门的所有姓名
select post group_coucat(name) from l1 group by post;
查询关键字之having过滤
having 和 where 作用一样都是作为筛选的
having 是二次筛选 是针对分组后的数据进行筛选的
例如:统计各部门年龄在30岁以上的员工平均工资,并保留大于10000的数据
select post '部门',avg(salary) as a_salary from l1 group by post having a_salary > 10000;
查询关键词去重distinct
去除展示时 某个字段的重复数据
select distinct name from l1;
# 将l1 里面的重复数据去除
必须要完全一模一样
'联合去重'
select distinct name,age from l1;
# 将姓名和年龄一样的去除,必须姓名加年龄都一样哦
关键字之order by 排序
单字段排序
select * from l1 order by age;
单字段排序 默认 从小到大
select distinct age from l1 order by age;
对排序的内容进行去重
select * from l1 order by age desc;
# 改为降序 从大到小
统计各部门年龄在10岁以上的员工平均工资,并且保留平均工资大于1000的部门,然后对平均工资进行排序.
select post,avg(salary) as a_s from l1 where age > 10 group by post having a_s > 1000 order by a_s;
# 展示 各部门 平均工资 筛选条件为 年龄大于10 平均工资大于1000的 并排序
查询之regexp正则表达式
sql语句也可以利用正则表达式 搜索
select * from l1 where name regexp('^j.*');
这里的正则表达式如果不理解的话 可以去搜索一下相正则表达式的编写哦
多表查询
select * from 表1,表2;
这样得到的是交叉数据 是不准确的 也是没有意义的
我们可以使数据对应正确
select * from 表1,表2 where 表一.id = 表二.id
# 这样就对上了哦 会根据筛选结果对应起来
小练习
5. 查询岗位名以及各岗位的最高薪资
select post,max(salary) from l1 group by post;
6. 查询岗位名以及各岗位的最低薪资
select post,min(salary) from l1 group by post;
7. 查询男员工与男员工的平均薪资,女员工与女员工的平均薪资
select gender,avg(salary) from l1 group by gender;
8. 统计各部门年龄在30岁以上的员工平均工资
select post,avg(salary) from l1 where age > 30 group by post;
sql周报的更多相关文章
- 信安周报-第02周:SQL基础
信安之路 第02周 Code:https://github.com/lotapp/BaseCode/tree/master/safe 前言 本周需要自行研究学习的任务贴一下: 1.概念(推荐) 数据库 ...
- 强哥新周报SQL
因为数据口径的更改,所以.强哥的SQL 比较好用.不会出麻烦. 总共有四个 日常记录下,好好看. -- 2019年4月核销新客 SELECT yzm2.consignee_phone AS `会员手机 ...
- ASP.NET MVC (Razor)开发<<周报与绩效考核系统>>,并免费提供园友们使用~~~
过去我们使用过一些周报工具来完成项目组或部门的周报填写与考核工作,但多少有些不理想,要么功能太过简单,要么功能特别繁杂,不接地气,使用不便. 后来我们就考虑自己开发一个简单的,实用的,易用的,接地气的 ...
- 开源 & 免费使用 & 打包下载自行部署 :升讯威 周报系统
这个周报系统大约写于2015年,缘起当时所带的开发团队需要逐步建立或完善一些项目管理方法. 在调研了网上的诸多项目管理或周报/日报管理系统之后,并没有找到符合当时情况的系统,这里最大的问题不是网上既有 ...
- Python3:sqlalchemy对sybase数据库操作,非sql语句
Python3:sqlalchemy对sybase数据库操作,非sql语句 # python3 # author lizm # datetime 2018-02-01 10:00:00 # -*- c ...
- Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句 # python3 # author lizm # datetime 2018-02-01 10:00:00 # -*- co ...
- Sql 复习3之存储管理
一.事务管理 单个工作单元称为事务,我们将若干条sql命令组合在一起,形成存储过程.触发器等,利用存储过程和触发器可以进行事务管理. 二.编程基础介绍 主要有:函数.程序设计语句等. 程序设计语句: ...
- F#周报2019年第51&52期
新闻 介绍DataFrame 介绍System.Threading.Channels ConfigureAwait常见问题 第三次年度C#降临节 .NET会议--2020年1月14日 如何找到F#的工 ...
- SQL Server 50道查询训练题,学生Student表
下面这个是题目所用到的数据库! 首先你需要在你的SQL Sever数据库中创建[TestDb]这个数据库,接下来下面这个代码.直接复制在数据库里运行就好了! 1 USE [TestDb] 2 GO 3 ...
- 最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目
最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目 最近一个来自重庆的客户找到走起君,客户的业务是做移动互联网支付,是微信支付收单渠道合作伙伴,数据库里存储的是支付流水和交易流水 ...
随机推荐
- 【Ceph】Ceph学习理解Ceph的三种存储接口:块设备、文件系统、对象存储
文章转载自:https://blog.51cto.com/liangchaoxi/4048519
- 21. Fluentd输出插件:rewrite_tag_filter用法详解
我们在做日志处理时,往往会从多个源服务器收集日志,然后在一个(或一组)中心服务器做日志聚合分析. 源服务器上的日志可能属于同一应用类型,也可能属于不同应用类型.我们可能需要在聚合服务器上对这些不同类型 ...
- R语言、02 案例2-1 Pelican商店、《商务与经济统计》案例题
编程教材 <R语言实战·第2版>Robert I. Kabacoff 课程教材<商务与经济统计·原书第13版> (安德森) P48.案例2-1 Pelican 商店 PS C: ...
- windows下mysql的数据主主同步
mysql主主备份: 保证各服务器上的数据库中的数据一致,因此需要开启数据库同步机制.由于是一整套系统,并且系统内含数据库.由于任何一台服务器都有可能被选中,因此要让所有的数据库上的数据都是最新的,任 ...
- ARC148游记
A - mod M 题目链接 这道题我们可以首先对于所有的数 $%2$ ,可以证明出答案最多不超过 $2$ ,此时我们就可以把问题转化为:是否存在一个数使得序列 $a$ 中所有元素减去这个数之后的最大 ...
- Hudi 数据湖的插入,更新,查询,分析操作示例
Hudi 数据湖的插入,更新,查询,分析操作示例 作者:Grey 原文地址: 博客园:Hudi 数据湖的插入,更新,查询,分析操作示例 CSDN:Hudi 数据湖的插入,更新,查询,分析操作示例 前置 ...
- java集合框架复习----(1)
文章目录 1 .集合框架思维导图 一.什么是集合 二.collection接口 1 .集合框架思维导图 一.什么是集合 存放在java.util.*.是一个存放对象的容器. 存放的是对象的引用,不是对 ...
- Vue学习之--------组件自定义事件(绑定、解绑)(2022/8/21)
文章目录 1.基础知识 2.代码实例 2.1 App.vue 2.2 school.vue 2.3 student.vue 3.测试效果(略) 4.实际应用(在组件化编码实战三的基础上改进) 4.1 ...
- 齐博x1标签动态调用数据
示例代码如下: {qb:tag name="news_list_page_listdata02" type="cms" union="fid" ...
- 基于vite3+tauri模拟QQ登录切换窗体|Tauri自定义拖拽|最小/大/关闭
前两天有给大家分享tauri+vue3快速搭建项目.封装桌面端多开窗口.今天继续来分享tauri创建启动窗口.登录窗口切换到主窗口及自定义拖拽区域的一些知识.希望对想要学习或正在学习的小伙伴有些帮助. ...