MYSQL-->函数与约束条件
函数
用法
函数最常用的地方就是查询语句处
select 函数(字段) from 表名;
select 字段列表 from 表名 group by 分组字段 having 函数(字段);
字符串函数(字符串要用引号包裹!)
Concat
Concat(s1,s2,....,sn);
用途:将多个字符串拼接成一个
Lower和Upper
Lower(x)
Upper(x)
用途:Lower将x字符串全部转化为小写,Upper将字符串全部转化为大写
Lpad和Rpad
Lpad(str,n,pad)
Rpad(str,n,pad)
用途:Lpad是左填充,Rpad是右填充,将str字符串左/右边填充pad字符串知道他们之和为n
原本字符串+填充字符串=n时停止
Trim
trim(x)
用途:将字符串x的首尾处空格去掉
Substring
substring(str,star_index,len)
用途:从star_index处截取字符串str,截取len个字符(下标从1开始)
日期函数(日期要用引号包裹!)
获取当前时间
Curdate() ->返回日期,年-月-日
Curtime() ->返回日期,时-分-秒
Now() ->返回日期,年-月-日-时-分-秒
截取当前时间其中一部分
Year(date) ->返回date日期中的年
Month(date) ->返回date日期中的月
day(date) ->返回date日期中的日
修改时间的
Date_add(date,interval 数值 值类型)
用法:
select date_add(now(),interval 70 hour);在当前日期之后增加70小数后是什么时候
值类型有:year,month,day,hour,minute,second
Datediff(day1,day2) ->返回day2与day1之间相差多久
数值函数
对值取整
ceil(x) ->对x向上取整
floor(x) ->对x向下取整
其他
mod(x,y) ->返回x处于y的余数
rand() ->返回0到1之间的小数(精度很长!比如说0.5151915616)
round(x,y) ->求x四舍五入之后的值,保留y位小数
流程控制函数(就if判断这种)
if判断
if(value,t,f) -->如果value的逻辑值是true就返回t值,如果为false就返回f值
ifnull判断
ifnull(value_1,value_2) 如果value_1不为null就返回value_1要不然就返回value_2
value可以为表达式/值,等形式
case 表达式 when 值 形式的判断
语法
case 表达式 when 值a then 返回值1 when 值b then 返回值2 .....else 抄底返回值 end;
解释:如果表达式=值a,就返回值1,如果表达式=值b,就返回值2,如果都不等于就返回抄底返回值
这个就和编程语言中的switch大致一致!
case when 值 形式的判断
语法
case when 条件表达式a then 返回值1 when 条件表达式b then 返回值2 else 抄底返回值 end;
解释:如果条件表达式a成立即为true就返回值1,如果条件表达式b成立就返回值2,都不成立就返回抄底返回值
这个就和编程语言中的if大致一致
约束条件
描述
约束就是限定表数据的规则
目的:保证数据库中的数据的正确性,有效性,完整性
在建表/修表的时候添加约束条件
约束是作用于表中的字段上的
多个约束用空格分割
分类
| 约束 | 描述 | 关键字 |
|---|---|---|
| 非空约束 | 限制字段数据不能为null | not null |
| 唯一约束 | 保证字段数据是唯一不重复的 | unique |
| 主键约束 | 主键是一行数据的唯一标识,要求非空且唯一 | primary key |
| 默认约束 | 保存数据的时候如果没给字段值就给出默认值 | default |
| 检查约束 | 保证数据满足条件 | check |
| 外键约束 | 用于俩张表之间建立连接 | foreign key |
主键约束一般搭配自动增长auto_imporment一起使用
用法
Create table 表名(
字段名1 类型 约束条件,
....
字段名n 类型 约束条件,
);
check用法举例
age int check(age>5 && age<10)
default用法举例
age int default 1
修改字段约束
Alter table 表名 add 字段 类型 约束;
Alter table 表名 change 旧字段 新字段 类型 约束
外键
具有外键的表叫子表,外键关联的表叫父表
语法
创建外键
alter table 子表 add foreign(子表关联字段) references 父表(父表的关联字段);
alter table 子表 add constraint 外键名 foreign key(子表字段) referencnes 父表(父表关联字段名);
在创建表的时候创建外键
foreign key(子表关联字段) references 父表(父表关联字段);
如果在创建外键的时候没有设置外键名字那么mysql会默认给一个外键名
查看外键名
show create table 表名;
删除外键
alter table 子表名 drop foreign key 自定义的外键名;
默认删除/更新外键数据行为
Alter table 子表名 add constraint 外键名 foreign key(外键名) references 父表(关联字段) on update 关键字 on delete 关键字;
行为关键字:
| 行为 | 描述 |
|---|---|
| No action | 当在父表中删除/更新记录的时候,首先检查该记录是否存在外键,如果存在就不允许删除/更新 |
| restrict | 与no action一致 |
| cascade | 当在父表中删除/更新记录的时候,首先检查该记录是否存在外键,如果存在,就也删除/更新子表中的记录 |
| set null | 当在父表中删除/更新记录的时候,首先检查该记录是否存在外键,如果存在,如果有就设置子表外键值为null(注意子表约束是否运行为null) |
| set default | 父表有变更的时候,子表将外键值设为一个默认值(innodb引擎中不支持) |
MYSQL-->函数与约束条件的更多相关文章
- Mysql - 函数
Mysql提供的函数是在是太多了, 很多我都见过, 别说用了. 园子里面, 有人弄了一个比较全的. MYSQL函数 我这里会将他写的完全拷贝下来, 中间会插入一些自己项目中使用过的心得 一.数学函数 ...
- mysql连接查询,封装mysql函数
连接查询 交叉连接语法: select * | 字段列表 from 表1 cross join 表2 内连接: select *|字段列表 from 左表 inner join 右表 on 左表. ...
- MySQL 函数大全
mysql函数大全 对于针对字符串位置的操作,第一个位置被标记为1. ASCII(str) 返回字符串str的最左面字符的ASCII代码值.如果str是空字符串,返回0.如果str是NULL,返回NU ...
- MySQL函数不能创建的解决方法
MySQL函数不能创建,是一个很麻烦的问题,下面就为您提供了一个解决此问题的方法,如果您也遇到过类似的问题,不妨一看. http://database.51cto.com/art/201010/229 ...
- Mysql函数:Last_insert_id()语法讲解
Mysql函数可以实现许多我们需要的功能,下面介绍的Mysql函数Last_insert_id()就是其中之一,希望对您学习Mysql函数能有所帮助. 自动返回最后一个INSERT或 UPDATE 查 ...
- linux下mysql函数的详细案列
MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *pas ...
- MySQL函数讲解(MySQL函数大全)
讲mysql函数之前先给大家展示一下利用mysql函数的一个例子: SELECT i.item_id, i.item_name, i.cid, i.last_update_time, u.url, u ...
- mysql函数全解析
本文摘自:http://www.cnblogs.com/cocos/archive/2011/05/06/2039469.html mysql函数大全 对于针对字符串位置的操作,第一个位置被标记为1. ...
- MySQL函数笔记
MySQL函数笔记 日期函数 SELECT t1.xcjyrq, t1.* FROM view_sbxx t1 WHERE t1.syzt ; SELECT t1.xcjyrq, t1.* FROM ...
- 【转】mysql函数
MySQL函数 MySQL数据库提供了很多函数包括: 数学函数: 字符串函数: 日期和时间函数: 条件判断函数: 系统信息函数: 加密函数: 格式化函数: 一.数学函数 数学函数主要用于处理数字,包括 ...
随机推荐
- 后端Python3+Flask结合Socket.io配合前端Vue2.0实现简单全双工在线客服系统
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_158 在之前的一篇文章中:为美多商城(Django2.0.4)添加基于websocket的实时通信,主动推送,聊天室及客服系统,详 ...
- 别无分号只此一家,Python3接入支付宝身份认证接口( alipay.user.certify)体系(2021年最新攻略)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_184 目前国内身份认证体系做的比较不错的大抵就是支付宝和微信两家了,支付宝的身份验证基于支付宝app的实人认证能力,采用多因子认证 ...
- 故障案例 | 慢SQL引发MySQL高可用切换排查全过程
作者:梁行 万里数据库DBA,擅长数据库性能问题诊断.事务与锁问题的分析等,负责处理客户MySQL日常运维中的问题,对开源数据库相关技术非常感兴趣. GreatSQL社区原创内容未经授权不得随意使用, ...
- Luogu2290 [HNOI2004]树的计数 (组合计数,prufer编码)
这不prufer编码吗,防爆long long就行了啊 #include <iostream> #include <cstdio> #include <cstring&g ...
- Linux操作系统学习(运维必会)
Linux一切皆文件,最高权限的账户root. 1.开机登录 开机会启动很多进程,在Windows上叫"服务"(service),在Linux上叫做"守护进程" ...
- 一个监控工具monit
最近看了一个问题,monit监控在读取配置文件之后,访问的文件是残留在容器中的,导致认为服务异常,其实一开始容器启动,并没有对应的服务. [root@10-36-235-119.fin-wealth- ...
- 面试题:Java序列化与反序列化
目录 序列化和反序列化的概念 应用场景? 序列化实现的方式 继承Serializable接口,普通序列化 继承Externalizable接口,强制自定义序列化 serialVersionUID的作用 ...
- MySQL索引知识点&面试常见问题
来源:BiggerBoy 作者:北哥 原文链接:https://mp.weixin.qq.com/s/fucHvdRK5wRrDfBOo6IBGw 大家好我是北哥,今天整理了MySQL索引相关的知识点 ...
- C#基础_析构函数
C#析构函数 1. 析构函数的定义与注意的问题 析构函数用于释放被占用的系统资源. 析构函数的名字由符号"-"加类名组成. 使用析构函数时,应该注意下面的问题: ?只能在类中使用析 ...
- 【java】学习路径40-Buffer缓冲区输入流
@Testpublic void testBufferInputStream(){ BufferedInputStream bfis = null; try { bfis = new Buffered ...