当前位置: 首页 > news >正文

MySQL(基础篇)——函数、约束

一.函数 

1.定义 

        函数是指一段可以直接被另一段程序调用的程序或代码。

2.字符串函数

        常见如下:

-- 字符串拼接
SELECT CONCAT('hello','MySql') AS CONCAT
-- 将字符串全部转为小写
SELECT LOWER('HEllo MYSql') AS LOWER
-- 将字符串全部转为大写
SELECT UPPER('Hello MYSql') UPPER
-- LPAD(str,n,pad) 左填充,用字符串pad对str的左边进行填充,达到n个字符串的长度
SELECT LPAD('11',5,'-') LPAD
-- 右填充
SELECT RPAD('11',5,'-') RPAD
-- 去掉字符串前后的空格
SELECT TRIM(' 1.11 ') TRIM
-- 截取子字符串
SELECT SUBSTRING('Kyrie Irving',1,5) SUBSTRING
3.数值函数 

        常见如下:

-- 向上取整
SELECT CEIL(1.1) CEIL
-- 向下取整
SELECT FLOOR(1.6) FLOOR
-- 取模
SELECT MOD(10,2) MOD
-- 返回0-1之间的随机数
SELECT RAND() RAND
-- ROUND(x,y) 求参数x的四舍五入值,保留y位小数
SELECT ROUND(3.1458,2) ROUND-- 例题
-- 生成随机的六位验证码
SELECT LPAD(ROUND(RAND()*1000000,0),6,0) AS num
4.日期函数

 

-- 返回当前日期
SELECT CURDATE()
-- 返回当前时间
SELECT CURTIME()
-- 返回当前日期和时间
SELECT NOW()
-- 获取指定date的年份
SELECT YEAR(NOW())
-- 获取指定date的月份
SELECT MONTH(NOW())
-- 获取指定date的日期
SELECT DAY(NOW())
-- 返回一个日期/时间值加上一个时间间隔expr后的时间值
SELECT DATE_ADD(NOW(),INTERVAL 10 DAY)
-- 返回起始时间date1和结束时间date2之间的天数
SELECT DATEDIFF('2022-10-21','2022-9-22')
5.流程函数 

二.约束

1.概述 

a.概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。 

b.目的:保证数据库中数据的正确性、有效性和完整性。

c.分类:

注:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束 。

2.外键约束 

a.语法

CREATE  TABLE  表名(

        字段名  数据类型,

        ...

        [CONSTRAINT]  [外键名称]  FOREIGN  KEY(外键字段名)  REFERENCES  主表(主表列名)

)

ALTER  TABLE  表名  ADD  CONSTRAINT  外键名称  FOREIGN  KEY(外键字段名)  REFERENCES  主表(主表列名)

eg:

-- 添加外键约束后,在对表中的数据进行任意操作,不能导致外键列和主键列对应不上
-- CONSTRAINT 约束名(有固定的约束名规则)
ALTER TABLE student ADD CONSTRAINT fk_student_major_majorid FOREIGN KEY(majorid) REFERENCES major(id)

b.删除/更新行为

ALTER  TABLE  表名  ADD  CONSTRAINT  外键名称  FOREIGN  KEY(外键字段名)  REFERENCES  主表(主表列名)  ON  UPDATE  CASCADE

注:ON  UPDATE  CASCADE 设置在进行删除行为进行的操作

 

 

 

相关文章:

  • 最新开源!用C++编写的3D gaussian splatting
  • three 模型对象、材质
  • c# 异常处理
  • 音视频数字化(数字与模拟-电视)
  • LACP——链路聚合控制协议
  • Superset二次开发之Markdown嵌入图片
  • YOLO如何训练自己的模型
  • Swagger接口文档管理工具
  • 【EFK】基于K8S构建EFK+logstash+kafka日志平台
  • EAP-TLS实验之Ubuntu20.04环境搭建配置(FreeRADIUS3.0)(四)
  • ubuntu开发板问题汇总
  • Sentinel 动态规则扩展
  • 设计模式篇---观察者模式
  • 4.5.CVAT——视频标注的详细步骤
  • 皇冠测评:网络电视盒子哪个品牌好?电视盒子排行榜
  • 「译」Node.js Streams 基础
  • ➹使用webpack配置多页面应用(MPA)
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • 3.7、@ResponseBody 和 @RestController
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • ERLANG 网工修炼笔记 ---- UDP
  • IndexedDB
  • Java 多线程编程之:notify 和 wait 用法
  • LeetCode算法系列_0891_子序列宽度之和
  • Linux快速复制或删除大量小文件
  • Magento 1.x 中文订单打印乱码
  • Nodejs和JavaWeb协助开发
  • yii2中session跨域名的问题
  • 关于List、List?、ListObject的区别
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 码农张的Bug人生 - 见面之礼
  • 前端面试题总结
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 小程序button引导用户授权
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • #vue3 实现前端下载excel文件模板功能
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (function(){})()的分步解析
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (九)One-Wire总线-DS18B20
  • (全注解开发)学习Spring-MVC的第三天
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)ObjectiveC 深浅拷贝学习
  • (转)重识new
  • (轉貼) UML中文FAQ (OO) (UML)
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .cfg\.dat\.mak(持续补充)