概览

=> 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)的更多相关文章

  1. 如何用SQL语句实现Mysql数据库的备份与还原

    以前一直做android客户端的项目,根本没有开发asp.net mvc的开发,现阶段做了一个模块,参数设置,以及数据库的备份与还原.其需求如下: 参数设置 本项参数设置为对自动数据备份进行设置,管理 ...

  2. {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句

    MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...

  3. 使用SQL语句修改Mysql数据库字符集的方法

    使用SQL语句修改Mysql数据库字符集的方法   修改库: alter database [$database] character set [$character_set] collate [$c ...

  4. MySQL数据库(一)—— 数据库介绍、MySQL安装、基础SQL语句

    数据库介绍.MySQL安装.基础SQL语句 一.数据库介绍 1.什么是数据库 数据库即存储数据的仓库 2.为什么要用数据库 (1)用文件存储是和硬盘打交道,是IO操作,所以有效率问题 (2)管理不方便 ...

  5. Linux centosVMware mysql用户管理、常用sql语句、mysql数据库备份恢复

    一.mysql用户管理 grant all on *.* to 'user1'@‘127.0.0.1’ identified by 'mimA123'; 创建user1用户 使用user1登录 /us ...

  6. mysql建表和建数据库语句

    一.数据库操作语言 数据库在操作时,需要使用专门的数据库操作规则和语法,这个语法就是 SQL(Structured Query Language) 结构化查询语言. SQL 的主要功能是和数据库建立连 ...

  7. [MySQL数据库之数据库相关概念、MySQL下载安装、MySQL软件基本管理、SQL语句]

    [MySQL数据库之数据库相关概念.MySQL下载安装.MySQL软件基本管理.SQL语句] 数据库相关概念 数据库管理软件的由来 数据库管理软件:本质就是个C/S架构的套接字程序. 我们在编写任何程 ...

  8. PHP中的数据库一、MySQL优化策略综述

    前些天看到一篇文章说到PHP的瓶颈很多情况下不在PHP自身,而在于数据库.我们都知道,PHP开发中,数据的增删改查是核心.为了提升PHP的运行效率,程序员不光需要写出逻辑清晰,效率很高的代码,还要能对 ...

  9. 第一章 数据库概述、MySQL的安装和配置

      第一章 数据库概述.MySQL的安装和配置   1.为什么要使用数据库 最早是纸质文件来存储数据 缺点:不易保存,占用空间大 计算机出现以后,采用软件来进行保存(excel) 缺点:容易损坏 文件 ...

随机推荐

  1. 201621123002《java程序设计》第十三周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 为你的系统增加网络功能(购物车.图书馆管理.斗地主等)-分组完成 为了让你的系统可以被多个用户通过网 ...

  2. Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.codec.digest.DigestUtils.sha1Hex(Ljava/lang/String;)Ljava/lang/String;

    异常:Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.co ...

  3. shell脚本学习-练习写一个脚本2

    # 1.依次展示/var目录下的对象,并说明是文件或者目录.格式如:Hello,$file. # 2.统计一个有多少个文件. #!/bin/bash #Program Description: #Au ...

  4. Flask cookie

    一 什么是cookie        什么是cookie?如果单单从数据结构的角度来说,它可以被理解成用来保存数据的一个dictionary,由一组组键值对组成.如果从作用上来说,我们知道Http协议 ...

  5. JS獲取URL的參數

    function GetQueryString(name) { var reg = new RegExp("(^|&)"+ name +"=([^&]*) ...

  6. Struts2内建拦截器

    params拦截器 负责将请求参数设置为Action属性 staticParams拦截器 将配置文件中action元素的子元素param参数设置为Action属性 servletConfig拦截器 将 ...

  7. #2019-2020-4 《Java 程序设计》第九周总结

    2019-2020-4 <Java 程序设计>第九周知识总结 第十一章:JDBC与MySQL数据库 11.1 MySQL数据库管理系统 下载安装: 11.2 启动MySQL数据库服务器 具 ...

  8. Win7 VS2017编译Blender2.79

    去年在VS2013环境编译过一次,重装系统后换了VS2017,正好刚编译完Godot3.0.2,顺手把Blender也编译了吧. 官方Windows下编译指南 https://wiki.blender ...

  9. linux (ubuntu) 命令学习笔记

    1, md5sum 输出字符串的MD5值 echo -n 123456 | md5sum //-n表示不打印回车符 2, ubuntu设置dock任务栏鼠标点击效果 16.04: 调整位置:gsett ...

  10. 环境搭建文档——Windows下的Python3环境搭建

    前言 背景介绍: 自己用Python开发了一些安卓性能自动化测试的脚本, 但是想要运行这些脚本的话, 本地需要Python的环境. 测试组的同事基本都没有安装Python环境, 于是乎, 我就想直接在 ...