数据库语句收藏(MySQL)
概览
=> MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
=>关键字不区分大小写
=> SQL语句中,表名/字段名不需要单双引号扩起,字段值根据其数据类型确定。如:数字则不需要单双引号也可,但char等类型就需要单双引号扩起
常用字段类型
【int】 整数类型,范围:(-2 147 483 648,2 147 483 647)
【char(n)】固定字符串类型,n表示固定长度,可变,如果数据长度达不到则自动空格占位,超出后则截取超出部分,检索速度较varchar快,范围:(0-255)
【varchar(n)】可变字符串类型,n表示最大长度,可变,中英文均占一位,数据长度达不到自动缩小,超出后则截取超出部分,范围(0-65535),如果值的长度大于 255,则被转换为 TEXT 类型。。
【text】不可指定长度的字符串类型,范围(0-65535)。
【date】日期值YYYY-MM-DD,范围(1000-01-01~9999-12-31)
【datetime】 日期时间值YYYY-MM-DD HH:MM:SS,范围(1000-01-01 00:00:00~9999-12-31 23:59:59)
基础增删改查
增
其中into单词一般可以省略
全部字段自定义值
insert into 表名 values("字段1值","字段2值","字段3值","字段4值")
确定字段
insert 表名(字段1,字段2) values("字段1值","字段2值")
确定字段2
insert into 表名 set 字段1="字段1值",字段2="字段2值"
一次性插入多行
insert 表名 values(字段1值,"字段2值","字段3值","字段4值"),(字段1值,"字段2值","字段3值","字段4值")
删
删除字段值
delete from 表名 where 字段=值
清空表全部内容
delete * from 表名
改
单个字段
update 表名 set 字段1="字段1值" where 条件字段名=字段值
多个字段
update 表名 set 字段1="字段1值",字段2="字段2值" where 条件字段=值
自增1
update 表名 set 字段=字段+1 where id=2
自减3
update 表名 set 字段=字段-3 where id=2
查
查询表中所有数据
select * from 表名
查询部分字段,并重命名字段名
select 字段1,字段2 as 字段2新名字 from 表名
条件查询
select * from 表名 where 字段="值"
查询无重复结果数据
select distinct * from 表名
排序(降序desc、默认升序asc)
select * from 表名 order by 排序字段 desc
二级排序
order by 字段1 asc,字段2 desc
limit类似分页查询
select * from 表名 limit 跳过行,需要的行数
分组统计
select 字段,count(字段) from 表名 group by 字段
字段值处理
值的大小写转换
全部转为大写
ucase(字段)
全部转为小写
lcase(text3)
提取字段的部分字符
中文占一位,起点为1,范围为闭区间[1,3]
mid(字段,1,3)
统计字段长度
长度根据编码不同而不同,如中文的utf-8编码下长度为3
length(字段)
count数据统计
统计字段的非空数
统计总行数:一般字段为主键,就可以实现统计表的行数,或者count(*)统计总行数
统计不重复的行数:count(distinct 字段)
select count(字段) as dongcount from 表名
计算函数相关
其它有:平均值【avg】、最大值【max】、最小值【min】
select sum(字段) as dongsum from 表名 where id<5
where条件补充
like模糊查询(【%】匹配任意数量的任意字符,【_】仅代替一个字符)
像(like)
where 字段 like "%东%"
不像(not like)
where id not like "4%"
大小判断( >、=、< 可组合作用),其中【<>】和【!=】均表示不等于
where id>=2
区间:
区间内取值([2,3] 闭区间)
where id between 2 and 3
区间之外
where id not between 2 and 3
确定多个存在值
where id in(2,3,46)
确定多个不存在值
where id not in(2,3,46)
and,条件(与)
where id=2 and text2="1234"
or,条件(或)
where id=2 or id=3
and和or综合使用
where (id=2 and text2="1234") or id=3
是否为空
不为空
where 字段 is not null
为空
where 字段 is null
逻辑处理,判断字段是否为空,是空则替换为参数2
ifnull (字段,"替换空值")
连表操作
连表查询
【表名.列名】即可确定对应表
select 表名1.* from 表名1,表名2 where 表名1.id=表名2.id
查询两个表的所有数据符合
on条件的数据,此时表1的数据字段在前面,表2出现表1的字段时会重命名,如【id1】
select * from 表1 join 表2 on 表1.id=表二.id
using确定字段相同值
select * from 表1 join 表2 using(id)
其他连接查询
left join ... on ... 以表1为主,表2无数据则补空
right join ... on ... 以表2为主,表1无数据则补空
full join ... on ... 结合,无则补空,mysql不支持
日期相关函数
curdate(),当前日期,格式为:2019-03-05
curtime(),当前时间,格式为:01:39:54
now (),当前时间,格式为:2019-03-05 01:40:45
date(日期时间字段),返回字段中的日期,2019-03-05
to_days(now()) 得到现在距离0000-00-00的天数
year(now()) 得到当前年份
yearweek("2019-01-01") 返回日期所属年和周,如(2019-01-01 =>201852)(2019-01-08=> 201901)
period_diff("201905","201901") 得到月间隔,输出4,其格式必须为:YYYYMM
datediff("2019-10-02","2019-10-01 01:10:10") AS dayx; 忽略时间的间隔天数(1),值有可能为负数
now()时间函数
设置当前数据,字段类型必须是datetime,显示效果为2019-03-05 01:04:06
update 表名 set 字段=now();
添加显示当前时间
select id,now() as dnow from tb_test
添加/减去时间
添加两天
其中day可以换成:【week】、【year】、【month】、【hour】、【minute】、【second】
对应的减去时间函数为:date_sub ()
date_add(now(),interval 2 day)
提取时间的部分值:
提取到几号
其中day可以换成:【week】、【year】、【month】、【hour】、【minute】、【second】
extract(day from now())
格式化时间函数:
date_format(now(),"%Y-%m-%d %H:%i:%s")
格式化有:
格式 |
描述 |
%a |
缩写星期名 |
%b |
缩写月名 |
%c |
月,数值 |
%D |
带有英文前缀的月中的天 |
%d |
月的天,数值(00-31) |
%e |
月的天,数值(0-31) |
%f |
微秒 |
%H |
小时 (00-23) |
%h |
小时 (01-12) |
%I |
小时 (01-12) |
%i |
分钟,数值(00-59) |
%j |
年的天 (001-366) |
%k |
小时 (0-23) |
%l |
小时 (1-12) |
%M |
月名 |
%m |
月,数值(00-12) |
%p |
AM 或 PM |
%r |
时间,12-小时(hh:mm:ss AM 或 PM) |
%S |
秒(00-59) |
%s |
秒(00-59) |
%T |
时间, 24-小时 (hh:mm:ss) |
%U |
周 (00-53) 星期日是一周的第一天 |
%u |
周 (00-53) 星期一是一周的第一天 |
%V |
周 (01-53) 星期日是一周的第一天,与 %X 使用 |
%v |
周 (01-53) 星期一是一周的第一天,与 %x 使用 |
%W |
星期名 |
%w |
周的天 (0=星期日, 6=星期六) |
%X |
年,其中的星期日是周的第一天,4 位,与 %V 使用 |
%x |
年,其中的星期一是周的第一天,4 位,与 %v 使用 |
%Y |
年,4 位 |
%y |
年,2 位 |
表格来源W3Cschool
查询今天、本周、本月、本年
参考:https://www.cnblogs.com/shuilangyizu/p/8805384.html
--今天 select * from 表名 where to_days(时间字段名) = to_days(now()); --本周 SELECT * FROM 表名 WHERE YEARWEEK( date_format( 时间字段名,'%Y-%m-%d' ) ) = YEARWEEK( now() ) ; --本月 SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, '%Y%m' ) = DATE_FORMAT( CURDATE( ) ,'%Y%m' ) --本年 SELECT * FROM 表名 WHERE YEAR( 时间字段名 ) = YEAR( NOW( ) )
数据库语句收藏(MySQL)的更多相关文章
- 如何用SQL语句实现Mysql数据库的备份与还原
以前一直做android客户端的项目,根本没有开发asp.net mvc的开发,现阶段做了一个模块,参数设置,以及数据库的备份与还原.其需求如下: 参数设置 本项参数设置为对自动数据备份进行设置,管理 ...
- {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句
MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...
- 使用SQL语句修改Mysql数据库字符集的方法
使用SQL语句修改Mysql数据库字符集的方法 修改库: alter database [$database] character set [$character_set] collate [$c ...
- MySQL数据库(一)—— 数据库介绍、MySQL安装、基础SQL语句
数据库介绍.MySQL安装.基础SQL语句 一.数据库介绍 1.什么是数据库 数据库即存储数据的仓库 2.为什么要用数据库 (1)用文件存储是和硬盘打交道,是IO操作,所以有效率问题 (2)管理不方便 ...
- Linux centosVMware mysql用户管理、常用sql语句、mysql数据库备份恢复
一.mysql用户管理 grant all on *.* to 'user1'@‘127.0.0.1’ identified by 'mimA123'; 创建user1用户 使用user1登录 /us ...
- mysql建表和建数据库语句
一.数据库操作语言 数据库在操作时,需要使用专门的数据库操作规则和语法,这个语法就是 SQL(Structured Query Language) 结构化查询语言. SQL 的主要功能是和数据库建立连 ...
- [MySQL数据库之数据库相关概念、MySQL下载安装、MySQL软件基本管理、SQL语句]
[MySQL数据库之数据库相关概念.MySQL下载安装.MySQL软件基本管理.SQL语句] 数据库相关概念 数据库管理软件的由来 数据库管理软件:本质就是个C/S架构的套接字程序. 我们在编写任何程 ...
- PHP中的数据库一、MySQL优化策略综述
前些天看到一篇文章说到PHP的瓶颈很多情况下不在PHP自身,而在于数据库.我们都知道,PHP开发中,数据的增删改查是核心.为了提升PHP的运行效率,程序员不光需要写出逻辑清晰,效率很高的代码,还要能对 ...
- 第一章 数据库概述、MySQL的安装和配置
第一章 数据库概述.MySQL的安装和配置 1.为什么要使用数据库 最早是纸质文件来存储数据 缺点:不易保存,占用空间大 计算机出现以后,采用软件来进行保存(excel) 缺点:容易损坏 文件 ...
随机推荐
- 1,charles的功能能介绍和安装破解
1,charles的功能 1,截取http和https网络包 2,支持重发网络请求,方便后端调试 3,支持网络请求的截获和动态修改 4,支持模拟弱化的网络 2,安装和破解 1,进入官网下载地址:htt ...
- OO第二次作业总结
OO~第二次作业总结 连续三周的电梯作业结束了,总的来说这三次作业做的还算平稳,既没有被刀,也没有刀中别人.那么接下来开始谈谈我对这三次作业的认识. 一.设计策略 我三次作业的设计思路基本上是相同的, ...
- JavaSE编程题
Test1–取出一个字符串中字母出现的次数.如:字符串:”abcdekka27qoq”,输出格式为:a(2)b(1)k(2)… Test2–假如我们在开发一个系统时需要对员工进行建模,[员工]包含3个 ...
- 编写一个javscript函数 fn,该函数有一个参数 n(数字类型),其返回值是一个数组,该数组内是 n 个随机且不重复的整数,且整数取值范围是 [2, 32]。
function fn(n){ if(n<2 || n>32) { return; } if(!n) { return;} //判断n是否为数字 if(!/^[0-9]+.?[0-9 ...
- 【JAVA】学习笔记(2)
Java完整的类的定义 [pubilc][abstact|final] class className [extends superclassName] [implements InterfaceNa ...
- C++标准库第二版笔记 2.1
C++标准库第二版笔记 2.1 1 Range-Based for 循环 for ( decl : coll ) { statements; } // collaborate 类似C# foreach ...
- 85、int 、NSInteger、NSUInteger、NSNumber的区别和联系
NSNumber是NSValue的一个子类,它是一个对象来存储数字值包括bool型,它提供了一系列的方法来存储char a signed or unsigned char, short int, in ...
- JSOI2018 简要题解
潜入行动 复杂度分析题. 定义状态fi,j,0/1,0/1f_{i,j,0/1,0/1}fi,j,0/1,0/1表示以iii为根子树放jjj个机器iii这个放不放,iii这个是否已放来进行dpdpd ...
- 安装完Ubuntu后通过shell脚本一键安装软件
安装完Ubuntu后通过shell脚本一键安装软件 以下代码中#是单行注释 :<<! ! 是多行注释. 运行的时候需要把多行注释去掉. 比如把以下代码保存为install.sh, 那么在终 ...
- XML生成XAMl扩展
所有的WPF控件列为枚举 代码如: 1 public enum ControlType 2 { 3 Window_Resources, 4 Page_Resources, 5 Grid, 6 Stac ...