mysql分组后去重效率_mysql-mb6018ead621887的博客-51CTO博客
目录MySQL讲解一.启动服务
二.MySQL命令之数据库操作
三. MySQL命令之表操作
四.MySQL语法规范
五.DQL语言(主查询)
六.DML语言(对表中的数据操作)
七.DDL语言(表字段操作)
MySQL讲解
一.启动服务用管理员身份运行命令提示符停止服务
net stop + 服务名
启动服务
net start + 服务名
查询服务器连接所用端口信息
select @@port;
查询系统所支持的存储引擎类型
show engines;
登录到MySQL服务端查看服务器版本信息
select version();
未登录到MySQL服务器端查看服务器版本信息
mysql --version/--V;
查看默认存储引擎
show variables like 'default_storage_engine';
二.MySQL命令之数据库操作创建数据库
create database 库名;
查看当前所有数据库
show databases;
打开指定的数据库
use 库名;
删除指定的数据库
drop database 库名;
查看当前在哪个数据库
select database();
查看数据库的存储引擎
show variables like 'storage_engine'
查看数据库的存储引擎
show variables like '%storage_engine%'
三. MySQL命令之表操作创建表
create table if not exists 表名
查看当前数据库的所有表
show tables;
查看其他数据库的所有表
show tables from 库名;
查看表结构
desc 表名;
show index from 表名;
show create table 表名 \g
删除表
drop table [if exists] 表名;
四.MySQL语法规范不区分大小写,但建议关键字大写,表名,列名小写
建议每条命令用分号结尾
每条命令根据需要,可以进行缩进或换行
注释单行注释:# 或 --格 注释文字
多行注释:/.../
MySQL数据类型数据类型系统数据类型整数型TINYINY / SMALLINT / MEDIUMINT / INT / BIGINT
精确数值型DECIMAL(M,D) / NUMERIC(M,D)
浮点型FLOAT / REAL / DOUBLE
位型BIT
二进制型BINARY / VARBINARY
字符型CHAR / VARCHAR / BLOB / TEXT / ENUM / SET
Unicode字符型NCHAR / NVARCHAR
文本型TINTTEXT / TEXT / MEDIUMTEXT / LONGTEXT
BLOB类型TINYBLOB / BLOB / MEDIUMBLOB / LONGBLOB
日期时间型DATETIME / DATE / TIMESTAMP / TIME / YEAR
五.DQL语言(主查询)基础查询select 查询列表 from 表名;system.out.printLn(打印的东西)查询列表可以是
查询结果是一个虚数值
起别名select 要查询的字段 As 别名;select 要查询的字段 别名;
去重
拼接
特点select distinct 要查询的字段 from 表名;select concat(str1,str2,...) As 别名;
类似于
语法表中的字段
常量值
表达式
函数使用空格使用AS
条件查询select 查询列表 from 表名 where 筛选条件;条件运算符
逻辑运算符
模糊查询
筛选条件分类>.<.>.>=.<=&&(与) / ||(或) / !(非) / and / or / notlike / between / and / in / is null / is not nulllike一般与通配符搭配使用
- 通配符
1. %:任意多个字符,包含0个字符
2. _:任意单个字符
语法
排序查询select * from student
where [筛选条件]
order by 排序列表 [asc | desc]语法:支持多字段排序,中间用,分割常见函数select 函数名() [from 表];concat:拼接字符串
length:个数
ifnull:判断是否为空单行函数:
字符函数
获取参数值的字节个数
length
拼接字符串
concat
变大写
upper
变小写
lower
截取字符串
substr/substring
返回str2在str1中第一次出现的起始索引
instr(str1,str2)
去掉str2中前后的str1
trim(str1 form str2)
eg:select trim('a' from 'aaaStudentaaa');
用指定的字符实现左填充指定长度
lpad(str,len,str)
右填充
rpad
替换
replace
数学函数
四舍五入
round
向上取整
ceil
向下取整
floor
截断
truncate()
取余
mod
日期函数
返回当前系统日期和时间
now
返回当前系统的日期,不包含时间
curdate
返回当前系统的时间,不包含日期
curtime
将日期格式字符转换成指定格式
str_to_date('9-13-2020','%m-%d-%y')
将日期转换为字符串
date_format('2020/11/16','%y年%m月%d日')
返回(date1-date2)的天数
DATEDIFF(date1,date2)
其他函数
查看MySQL版本号
version()
查看当前数据库
database()
查看当前用户
user()
流程控制函数
if函数:实现if else的效果
case函数:
--switch case的效果
语法:(当then后面接的是语句的时候,要用';'结尾,值的话就不用)
case 要判断的字段或表达式
when 常量1 then 要显示的值1或语句1
when 常量2 then 要显示的值2或语句2
...
else 要显示的语句n或值
end
--多重if分类
调用
概念:类似Java中的方法单行函数隐藏了实现细节
提高代码的重用性
分组函数分类:
求和
sum
平均值
avg
最大值
max
最小值
min
计算非空的值的个数
countMYISAM存储引擎下,count()效率最高
innodb存储引擎下,count()和COUNT(1)效率差不多,但比COUNT(字段)要高一些特点:
效率:
功能:做统计使用,又称为统计函数、聚合函数、组函数一般sum、avg处理数值类型的数据
max、min、count可以处理任何类型
以上分组函数都忽略null值
可以和distinct搭配去重
count函数的详细介绍
一般用count(*)统计行数
和分组函数一同查询的字段要求是group by后面的字段
分组查询select 分组函数,列(要求出现在group by的后面)
from 表名
【where 筛选条件】
【group by 分组列表】
【order by 子句】语法:
注意:查询列表必须特殊,要求是分组函数和group by后出现的字段
特点:分组查询中的筛选条件分为两类
分组前筛选:从原始表筛选,放在group by前,用where关键字
分组后筛选:分组后的结果集,放在group by后,用having关键字
分组函数做条件一定放在having子句中
group by子句支持
单个字段分组
多个字段分组(多个字段之间用逗号来连接)
表达式
函数
也可以添加排序
连接查询sql92标准:仅仅支持内连接
sql99标准【推荐】:支持内连接+外连接(左外、右外)+交叉连接内连接等值连接
非等值连接
自连接
外连接左外连接
右外连接
全外连接
交叉连接
按功能分类
含义:又称为多表查询,多表连接,当查询的字段涉及/来自多个表时
笛卡尔乘积现象:表1 m 行,表2 n 行,结果=m*n行
如何发生:没有有效的连接条件
如何避免:添加有效的连接条件
分类:
按年代分类
子查询
分页查询
union联合查询
六.DML语言(对表中的数据操作)- 查看
select * from 表名;
- 插入
- 语法一
> insert into 表名 (字段名,...) value(值,[约束]),(值,[约束]);
- 特点
1. 要求值的类型和字段的类型一致或兼容
2. 字段名和值要匹配
- 语法二
> insert into 表名 set=值,...;
- 语法三
> insert into 表名 values();
- 修改
- 语法
> update 表名 set 字段=值,字段=值 [where 筛选条件];
- 删除
- 语法
> delete from 表名 where id=1;标识列关键词:auto_increment
又称为自增长列
含义:可以不用手动的插入值,系统提供默认的序列值
特点
创建表时设置标识列查看标识列
show variables like '%auto_increment%';
{
auto_increment_increment:步长
auto_increment_offset:默认值,MySQL中不支持修改默认值
}标识列必须与一个key搭配使用,可以是primary key、foreign key、unique……
一个表至多一个标识列
标识列类型只能是数值型
标识列可以通过:SET auto_increment_increment=3;设置步长
标识列可以通过手动插入值来设置起始值
七.DDL语言(表字段操作)表的约束约束可以分为表级约束和列级约束
列级约束,在列后面添加
表级约束
常见约束:六大约束非空约束
not null
默认约束
default
主键约束
primary key
外键约束
foreign key
唯一性约束
类似于primary key,可以为空
unique
检查约束
checkconstraint 约束名 约束类型;
修改表名
alter table 旧表名 rename [to] 新表名;
修改列名/字段语法规则
alter table 表名 change 原字段名 新字段名 新字段类型;
添加列
alter table 表名 add column 列名 类型 [first | after 字段名];
修改列类型或约束
alter table 表名 modify column 列名 新类型 [新约束];
删除某列
alter table 表名 drop column 列名;
复制旧表的结构
create table if not exists 表名 like 旧表名;
复制旧表的结构和数据
create table if not exists 表名 select 查询列表 from 旧表名 [where 筛选条件];### 八.TCL语言(事务控制语言)
- TCL语言
- 通过show engines;来查看MySQL支持的存储引擎
- 其中innodb支持事务,而myisam,memory等不支持事务
- 事务的属性/特点:
- 原子性:一个事务不可再分割,要么全部执行,要么全部不执行
- 一致性:一个事务执行会使数据从一个一致状态切换到另一个一致状态
- 隔离性:一个事务的执行不受其他事务的干扰
- 持久性:一个事务一旦提交,则会永久的改变数据库的数据
mysql分组后去重效率_mysql-mb6018ead621887的博客-51CTO博客相关推荐
- mysql分组随机取数据_MySql分组后随机获取每组一条数据的操作
思路:先随机排序然后再分组就好了. 1.创建表: create table `xdx_test` ( `id` int(11) not null, `name` varchar(255) defaul ...
- mysql分组取所有数据_mysql 分组后取每个组内最新的一条数据
首先,将按条件查询并排序的结果查询出来. mysql> select accepttime,user,job from tuser_job where user =8 order by acce ...
- mysql建表影响效率_MySQL建表查询优化技巧
场景 我用的数据库是mysql5.6,下面简单的介绍下场景 课程表: 数据100条 学生表: 数据70000条 学生成绩表SC 数据70w条 查询目的:查找语文考100分的考生 查询语句: selec ...
- mysql左连接去重查询_mysql之单表查询、多表查询
mysql查询 单表查询 """ 增: insert [into] [数据库名.]表名[(字段1[,...,字段n])] values (数据1[,...,数据n])[, ...
- mysql分组后组内排名_SQL实现group by 分组后组内排序
在一个月黑风高的夜晚,自己无聊学习的SQL的时候,练习,突发奇想的想实现一个功能查询,一张成绩表有如下字段,班级ID,英语成绩,数据成绩,语文成绩如下图 实现 查询出 每个班级英语成绩最高的前两名的记 ...
- mysql分组后组内排序_数据小白的转行之路-MYSQL(七)
目录 一. 什么是窗口函数? 1. 什么是窗口函数 窗口函数,可以对数据库数据进行实时分析处理. 基本语法如下: <窗口函数> over by (partition by <要分组的 ...
- mysql安装后第一次操作_MySQL数据库之mysql 安装成功以及第一次安装成功初始化密码操作...
本文主要向大家介绍了MySQL数据库之mysql 安装成功以及第一次安装成功初始化密码操作 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 一 把文件解压到一个目录下 技术分享图 ...
- mysql分组后组内排序_图解排序 3/10 希尔排序
希尔排序,它是由 D.L.Shell 于1959 年提出而得名.根据它的名字很难想象算法的核心思想.[ 所以只能死记硬背了,面试官问:希尔排序的思想是什么?].它的核心思想是把一个序列分组,对分组后的 ...
- mysql数据表去重合并_MySQL数据表合并(两表字段相同)以及数据去重(抄)
数据去重 现有两个表 test_01 test_02 其中test_01有重复数据 统计重复数据 select count(*) as repeat_count,name from test_01 g ...
最新文章
- 基于Hadoop的58同城离线计算平台设计与实践
- windows下安装pygtk报g_assertion_message无法定位libglib-2.0-0.dll错误解决
- 正则表达式在线自动生成器
- EOSIO.DCT 1.3以上版本工具编写EOS智能合约重大更新
- nyoj 931 货物运输(Floyd输出路径)
- Shiro结合redis的统一会话管理:自定义会话管理器
- nokia x7 android 9.0,诺基亚X7升级Android 9.0系统
- 【最佳实践】OSS开源工具ossutil-大文件断点续传
- 深入String 与StringBuffer详解那个更省资源
- oracle分区实战,Oracle分区实战分享
- Android自定义控件学习
- zipf定律,二八定律,流行度,点击率均可使用
- 模拟幅度调制相干解调系统抗噪声性能仿真分析
- java j2se下载_J2SE基础之下载eclipse并创建项目
- 会议论文投稿到接收流程【手里有粮心中不慌】
- TRY HACK ME |RELEVANT「渗透测试挑战」
- 迪赛智慧数——其他图表(盒须图):员工离职率分析
- 简单逆向10(z3-solver)
- Codeforces Global Round 11 ABCD题解
- 基本图形:直线(Line)
热门文章
- java实现发送QQ邮件
- 【算法】剑指 Offer 56 - II. 数组中数字出现的次数 II 【重刷】
- 60-100-022-使用-MySQL 开启全局查询日志
- 【linux】linux Vim编辑器快捷键
- Kafka启动报错:Timed out waiting for connection while in state: CONNECTING
- maven-shade-plugin插件将项目打成可执行的jar包
- scala学习-scala中的元组Tuple概念
- python模拟浏览器下载文件在哪里_python下selenium模拟浏览器基础操作
- 源码角度,分析@Transactional实现原理
- Spring Security Oauth2 之密码模式