首页 > 数据库 >sql周报

sql周报

时间:2022-11-27 21:46:35浏览次数:38  
标签:数据库 sql l1 post 数据 id select 周报

数据库分类

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,l1,post,数据,id,select,周报
From: https://www.cnblogs.com/moongodnnn/p/16930743.html

相关文章

  • SQL语句查询关键字前期数据准备
    前期数据准备createtableemp(idintprimarykeyauto_increment,namevarchar(20)notnull,genderenum('male','female')notnulldefault'male',#大部......
  • MYSQL SQL语句查询关键字
    首先先创建一组数据createtableemp(idintprimarykeyauto_increment,namevarchar(20)notnull,genderenum('male','female')notnulldefault'male',......
  • springBoot mybatis-plus mySql代码生成器
    一、用到的依赖参考官网<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/X......
  • MySQL数据库之索引
    一、索引的概念索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于c语言的链表通过指针指向数据记录的内存地址)。使用索引后可......
  • MySQL数据库之用户管理
    一、数据库用户管理1.1新建用户 CREATEUSER'用户名'@'来源地址'[IDENTIFIEDBY[PASSWORD]'密码'];复制代码'用户名':指定将创建的用户名。'来源地址':指定新......
  • mybatis-执行sql流程
    一、获取mapper代理对象DefaultSqlSession.getMapper(Classtype)public<T>TgetMapper(Class<T>type){returnconfiguration.getMapper(type,this);}Con......
  • pymysql的使用
    importpymysql#连接数据库conn=pymysql.connect(host='101.133.225.166',user='root',password="123456",database='test',port=3306)##获取游标cursor=conn.......
  • 11.27MySQL周末总结
    目录§并发编程§一、线程理论1.本质2.特点3.创建线程的两种方式4.线程对象的其他方法5.同进程内多个线程数据共享二、互斥锁1.互斥锁的作用2.互斥锁lock三、GIL全局解释器......
  • Mysql-事务
    DROPTABLEIFEXISTSaccount;--创建账户表CREATETABLEaccount(idintPRIMARYKEYauto_increment,namevarchar(10),moneydouble(10,2));--添加数据INSER......
  • Mysql事务
    一、事务概述1、事务的概念是一种机制,一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么......