数据库分类

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周报的更多相关文章

  1. 信安周报-第02周:SQL基础

    信安之路 第02周 Code:https://github.com/lotapp/BaseCode/tree/master/safe 前言 本周需要自行研究学习的任务贴一下: 1.概念(推荐) 数据库 ...

  2. 强哥新周报SQL

    因为数据口径的更改,所以.强哥的SQL 比较好用.不会出麻烦. 总共有四个 日常记录下,好好看. -- 2019年4月核销新客 SELECT yzm2.consignee_phone AS `会员手机 ...

  3. ASP.NET MVC (Razor)开发<<周报与绩效考核系统>>,并免费提供园友们使用~~~

    过去我们使用过一些周报工具来完成项目组或部门的周报填写与考核工作,但多少有些不理想,要么功能太过简单,要么功能特别繁杂,不接地气,使用不便. 后来我们就考虑自己开发一个简单的,实用的,易用的,接地气的 ...

  4. 开源 & 免费使用 & 打包下载自行部署 :升讯威 周报系统

    这个周报系统大约写于2015年,缘起当时所带的开发团队需要逐步建立或完善一些项目管理方法. 在调研了网上的诸多项目管理或周报/日报管理系统之后,并没有找到符合当时情况的系统,这里最大的问题不是网上既有 ...

  5. Python3:sqlalchemy对sybase数据库操作,非sql语句

    Python3:sqlalchemy对sybase数据库操作,非sql语句 # python3 # author lizm # datetime 2018-02-01 10:00:00 # -*- c ...

  6. Python3:sqlalchemy对mysql数据库操作,非sql语句

    Python3:sqlalchemy对mysql数据库操作,非sql语句 # python3 # author lizm # datetime 2018-02-01 10:00:00 # -*- co ...

  7. Sql 复习3之存储管理

    一.事务管理 单个工作单元称为事务,我们将若干条sql命令组合在一起,形成存储过程.触发器等,利用存储过程和触发器可以进行事务管理. 二.编程基础介绍 主要有:函数.程序设计语句等. 程序设计语句: ...

  8. F#周报2019年第51&52期

    新闻 介绍DataFrame 介绍System.Threading.Channels ConfigureAwait常见问题 第三次年度C#降临节 .NET会议--2020年1月14日 如何找到F#的工 ...

  9. SQL Server 50道查询训练题,学生Student表

    下面这个是题目所用到的数据库! 首先你需要在你的SQL Sever数据库中创建[TestDb]这个数据库,接下来下面这个代码.直接复制在数据库里运行就好了! 1 USE [TestDb] 2 GO 3 ...

  10. 最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目

    最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目 最近一个来自重庆的客户找到走起君,客户的业务是做移动互联网支付,是微信支付收单渠道合作伙伴,数据库里存储的是支付流水和交易流水 ...

随机推荐

  1. 阿里云下配置keepalive,利用HAVIP实现HA

    注:这篇文章参考网络,有些称呼都变了,比如阿里云上的现在是弹性ip 包括阿里云在内的很多云环境,因为不支持浮动IP广受诟病.目前阿里云在VPC网络下发布了HAVIP,能够实现arp宣告IP.这样也就让 ...

  2. 阿里云SLB的http强制转https

    公司的要求:要求强制http转https 我的环境是: 域名<--->slb的ip<-->源服务器nginx 具体做法是: 第一步:证书放到slb的https上,通过443端口 ...

  3. 市面上erp软件那么多,为什么很多卖家选择定制erp?

    为什么选择定制ERP?适合自己的才是最好的啊!就连头部ERP企业提供给用户的ERP系统,应该也没有不进行个性化定制的吧,匹配很重要!规模不同.行业不同.发展阶段不同.生产模式不同.管理理念不同,适用的 ...

  4. NSIS皮肤插件:vcl-styles-plugins

    vcl-styles-plugins简介   NSISVCLStyles  plugin (dll)是一款应用于nsis安装程序的皮肤插件,插件大小约为1.6MB,实际应用在安装程序中压缩后约为550 ...

  5. 『现学现忘』Git后悔药 — 34、git commit --amend 命令

    目录 1.git commit --amend 命令说明 2.使用场景 (1)场景一 (2)场景二 3.git commit --amend 命令原理 这是我们Git中的第三种后悔药. 1.git c ...

  6. 齐博x1模板中常用的TP标签数据处理

    上图是比较常用的, 而下图是比较特殊的场合,比如幻灯片可能会用到 下图使用了TP的循环标签. 上图只使用了条件判断标签 上图不存在 val="xxx" 这个参数,所以会自动循环输出 ...

  7. Trino Worker 规避 OOM 思路

    背景 Trino 集群如果不做任何配置优化,按照默认配置上线,Master 和 Worker 节点都很容易发生 OOM.本文从 Trino 内存设计出发, 分析 Trino 内存管理机制,到限制与优化 ...

  8. XAF新手入门 - 模块(Module)

    模块概述 谈到模块大家应该都不会感到陌生,不管是前端还是后端都有模块的概念,XAF中的模块概念与大多数框架中的模块概念是相通的.XAF模块首先是一个.NET类库,同时它还包含一个继承自ModuleBa ...

  9. 并发编程之 ThreadLocal

    前言 了解过 SimpleDateFormat 时间工具类的朋友都知道,该工具类非常好用,可以利用该类可以将日期转换成文本,或者将文本转换成日期,时间戳同样也可以. 以下代码,我们采用通用的 Simp ...

  10. Codeforces 1670 E. Hemose on the Tree

    题意 给你个数p,n = 2^p: 有一棵树有n个节点,告诉你怎么连边: 每个点有个权值,每条边也有个权值,权值需要自行分配,[1,2,3..n...2n-1],总共2n-1个权值: 你需要选一个节点 ...