MySQL的函数和约束

sql也是一种编程语言,它里面也有函数,分为内置得函数和自定义得函数(高级)。
内置函数:
1.聚合函数。
2.字符串函数。—操作字符串
3.时间函数—>操作得时间
4.算术函数—>数学操作。
5.其他函数

1. 字符串函数。—操作字符串

常用函数:在这里插入图片描述

-- 字符串拼接函数
select name from t_student;

select concat('我的名字叫:',name,",年龄:",age) as n from t_student;

-- 字符串转换为大写和小写
select name,upper(name),LOWER(name) from t_student;

-- 去除前后空格
select address,trim(address) from t_student;

-- 找到姓李得学生 字符串得截取
select * from t_student where name like '李%';

select * from t_student where substr(name,1,1)='李'

2. 数字函数

常见函数:
在这里插入图片描述

-- 向上取整 5.1你给定得值
select ceil(5.1),floor(5.9),mod(10,3),abs(-5.9) from t_student;

-- 要求如果status为0变为1 为1变为0  update
update aaa set status=abs(status-1); 

3. 时间函数

在这里插入图片描述

-- CURDATE()返回当前日期  后面可以不用跟表名
select curdate();
-- 可以用在where
select * from tb_emp where curdate()-entrydate=1

-- CURTIME()返回当前时间
select curtime() ;

-- NOW()返回当前日期和时间
select now();

-- YEAR(date)获取指定date的年份
select year('2022-04-25');

select * from tb_emp where year(entrydate)=2022

-- DATE_ADD(date, INTERVAL expr  type)返回一个日期/时间值加上一个时间间隔expr后的时间值
SELECT DATE_ADD('2020-04-25', INTERVAL 3 YEAR);

-- DATEDIFF(date1, date2)返回起始时间date1和结束时间date2之间的天数
select datediff('2020-05-25','2020-04-25');
-- 入职30天得员工.
select * from tb_emp where DATEDIFF(now(),entrydate)>30

4. 流程函数

在这里插入图片描述

-- 如果年龄>30妇女  否则少女
select age,if(age>30,'妇女','少女') from tb_emp;

-- ifnull 如果为null,则
select job,ifnull(job,'工作待定') from tb_emp;

5. 约束

在这里插入图片描述
约束是作用于表中字段上的,可以再创建表/修改表的时候添加约束。

create table t_teacher(
    id int primary key auto_increment, -- 要求该列得值必须唯一且不能为null.
	  tname varchar(20) unique, -- unique 唯一约束 表示该列得值必须唯一。但是可以运行多个null
		age int not null, -- not null 非空约束 表示该列得值不能为null.
		sex char(2) default '男' -- default 默认约束 表示如果该列没有给定值 则默认为男
)
select * from t_teacher;
insert into t_teacher(id,tname,age,sex) values(null,'刘德华',15,'女');
-- Duplicate entry '刘德华' for key 'tname' 由于tname具有唯一约束 表中有名字为刘德华 所以不能在添加刘德华名称
insert into t_teacher(id,tname,age,sex) values(null,'刘德华',18,'男');
-- Column 'age' cannot be null 因为age设置了非空约束所以 添加数据时年龄必须有值。
insert into t_teacher(id,tname,age,sex) values(null,'张学友',null,'男');

-- 因为sex有默认约束 所以在添加数据时可以不为sex设置值,则采用默认值。
insert into t_teacher(id,tname,age) values(null,'张学友',22);

6. 外键约束

外键约束用来让两张图的数据之间建立连接,保证数据的一致性和完整性。 
-- 外键
create table t_class(
    cid int primary key auto_increment,
		cname varchar(20)
);
create table t_stu(
     sid int primary key auto_increment,
		 sname varchar(20),
		 classid int -- 表示外键列。
);
-- add contraint 约束得名称  foregin key 外键得列名 REFERENCES 主表名(主键)  

-- alter table 从表名 add contraint 约束名随便起 foreign key 外键列名 references  主表(主键)
alter table t_stu add CONSTRAINT fk_stu_class FOREIGN key (classid) REFERENCES t_class(cid);

insert into t_class values(null,'QY145'),(null,'QY151');

insert into t_stu values(null,'李青华',2);
-- 因为classid=3 这个值 在我们得班级表中不存在。所以不能添加
insert into t_stu values(null,'张青',1);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值