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等不支持事务

- 事务的属性/特点:

- 原子性:一个事务不可再分割,要么全部执行,要么全部不执行

- 一致性:一个事务执行会使数据从一个一致状态切换到另一个一致状态

- 隔离性:一个事务的执行不受其他事务的干扰

- 持久性:一个事务一旦提交,则会永久的改变数据库的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值