mysql中日期相减_SQL介绍——Mysql

一、运算符号

cb6972da82313b94ce575640ebdaea92.png

二、查询关键字

1.各关键字优先级

where > group by > having > order by > limit

2.Select

语法:select 字段名 from 表名 where 条件语句;

说明: - 多个字段名用,隔开,也可用*表示所有字段 - 字段名可用distinct修饰,表示查询结果中该字段相同的数据只会保留第一行数据

3.Where

select、update、delete等其他DDL语句的子句,用来表示执行操作的条件

语法:where 条件字段 运算符 条件值

说明: - 运算符后面的条件值,如果是文本类型,需要使用引号包含,非文本类型的值不要用引号包含。 - where子句中可以跟多个条件,每2个条件之间用逻辑运算符 and 或者 or 分隔开。

4.like

作为where子句中的比较运算符来使用,通常与通配符配合进行模糊匹配。

语法:

where 条件字段  like '[abcd]_%';

5.Top或者Limit或者Rownum

从查询结果中筛选出排序靠前的指定行数数据。

并非所有的数据库管理系统都支持top语句,不同的数据库管理系统中,top语句的语法也不相同。

SQL Server:

语法:select top 5 LastName from Persons
说明:从Persons表中,搜索排序在前5的数据
语法:select top 50 percent from Persons
说明:从Persons表中,搜索排序在前50%的数据

Mysql:

语法:select LastName from Persons limit 5
说明:从Persons表中,搜索排序在前5的数据

Oracle:

语法:select LastName from Persons where rownum<=5
说明:从Persons表中,搜索排序在前5的数据

6.Order By

对搜查的结果进行排序显示,可以指定多列,对搜查结果进行升序或者降序显示

select * from Persons order by FirstName asc,LastName desc

说明:

  • 多个排序字段之间用,分隔开
  • Asc表示升序,Desc表示降序
  • 每个排序字段要单独指定圣墟还是降序

7.Case When

将查询结果某个字段的值,根据指定的条件转换为其他值。

语法1:

case
    when 条件1 then 值1
    when 条件2 then 值2
    else 值3
    end as 字段名

语法2:

case  字段名
    when 现有值1  then 修改值1
    when 现有值2  then 修改值2
    else 修改值3
    end as 字段名

三、查询技巧

1.计算日期差

Mysql中没有直接计算两个日期差值的函数,可以用以下方式计算:

To_Days(date1) - To_Days(date2)

2.时间戳与日期比较

最好将日期转化为时间戳进行比较。因为将时间戳转换为日期的函数from_unixtime不支持负数,可能导致比较结果出错。

3.设置自增数据

Mysql的命令支持自增类型的语法:

set @num:=1;
update devices set imei=(@num:=(@num+1));

4.将查询结果插入其他表

insert into table1(name,type) select name,type from table2

5.SQL嵌套使用

语法:select * from table1 where id in (select id from table2);
说明:若子查询结果只包含一个字段,可作为父查询中符号in的条件
语法:select * from (select * from table1 ) as table2
说明:若子查询结果只包含一个字段,建议给子查询起一个别名,作为父查询中的一张表来使用

四、其他数据操作语句

1.Update

修改指定数据表中,符合条件行的某些字段值

语法:update 表名 set 列名=目标值 where 条件语句
说明:
1.可设定多个字段值,键值对用,隔开
2.where子句表示只更新符合条件的数据

2.Insert into

向指定的数据表中插入数据。

语法:insert into 表名(字段名1,字段名2)  values(值1,值2);

说明:

1. 表名后面的字段数量,比如与values中的值数量保持一致。
2. 表名后面的字段,可以只是数据表中的一部分字段。语句执行后,未指定的字段会设置为默认值。
3. 表名后面的字段名,不要用引号包含。如果values后面的值是字符型,需要用引号包含。
4. 语句执行后,values后面的值会按照编写的顺序,依次插入到表名后面字段中。
语法:insert into 表名 values(值1,值2)

说明:

1. 如果表名后面没有指定字段列表,表示数据表中的每个字段都需要插入值。
2. 此时values后面值得数量,必须与数据表中的所有字段数保持一致

3.Delete

删除指定数据表中,符合条件的数据行

语法:delete from Persons where LastName='Gates'
说明:带有where子句表示只删除符合where条件的数据
语法1:delete from Persons
语法2:delete * from Persons
说明:删除所有数据但是保留表的结构、属性、索引

五、数据库控制语句

1.连接服务器

连接到本地:

语法:mysql -u username -ppassword

说明:

  1. -u和username之间可以有空格,也可以不写空格
  2. 如果用户没有设置密码,不要加上-p+password这部分内容
  3. -p和password之间不要输入空格,否则必须再输入一次密码

连接到其他服务器:

语法:mysql -h 192.168.2.1 -u username -ppassword

说明:

  1. -h和ip地址之间可以有空格,也可以不写空格
  2. 参照“连接到本地”的3条说明

断开连接:

语法:exit

2.设置密码

添加密码:

语法:mysqladmin -u root password "password"

取消密码:

  1. 进入mysql数据库
  2. 将user数据表中,password的字段修改为空
  3. 重启mysql服务,或者使用“重新载入数据”命令

修改密码:

语法:set password for 'root'@'localhost' = password('123456'); 说明:登录Mysql之后使用

语法:mysqladmin -u root -p password "NewPassword"

语法:mysqladmin -u root -pOldPassword password "NewPassword"

语法:update user set Password=password("123456") where user="root"; 说明: 1. 登录Mysql之后使用 2. 修改后重启mysql服务,或者使用“重新载入数据”命令

3.账号管理

创建用户:

语法:create user 'username'@'host' identified by 'password';

说明:

  1. host表示允许用户连接数据库的主机,localhost表示本地,%表示任意主机
  2. password可以为空,表示该用户登录不需要密码

授权:

语法:grant privileges on DatabaseName.TableName to 'username'%'host' with grant option;

说明:

  1. privileges表示赋予用户的权限,权限包括select、insert、update、delete,在授权时,可以指定多个权限,两个权限之间用","分割。也可以用all表示所有权限
  2. Database表示数据库名,可以用*表示所有数据库
  3. TableName表示表名,可以用*表示所有表
  4. with grant option:如果授权命令中没有加入这条选项,那么被授权的用户,不可以对其他用户进行授权
  5. identified by 'password':在授权命令中,也可以加入这条选项,来修改命令或者去掉命令

显示授权:

语法 :show grants for 'username'@'host'

取消授权:

语法 :revoke privileges on DatabaseName.TableName from 'username'@'host' 说明:取消授权时,指定的DatabseName.TableName范围,必须与进行授权时指定的范围一直,取消授权才能生效

六、数据库、数据表操作语句

创建数据库:

语法:create database DatabaseName default character set 编码 collate 编码

显示数据库列表:

语法:show databases;

判断表是否存在:

语法:if exists tablename

创建表:

语法:create tablename if not exists tablename 说明:判断表是否存在,如果不存在的话再创建表

用查询结果创建临时表:

语法:create temporary table TableName ( select ...);

删除表:

语法:drop table if exists TableName; 说明:如果表tablename存在就删除这张表

重新载入数据:

语法:flush privileges

七、函数库

1.数学函数

  • 取模:mod(a,b)
  • 在(0,1)之间随机:rand()
  • 四舍五入取整:round(a,b)

2.字符串函数

  • 字符串拼接:concat(str1,str2...)
  • 字符串替换:replace(字段名,原字符,替换后字符)

3.数据类型转换

  • 字符串to数字:select name+0

4.日期函数

函数:

4b5f88a1d595a79bb801eb9c828165e1.png

f58ca649c2fb10b1a749a020c1cbdeb9.png

时间格式:

de7be77c927a9728297130cd08b95097.png

f7ebfefb60bb8812177cc9305e098ef4.png

4478518ced847e575173be9c9f0415c1.png
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值