MySql复习之约束与常用函数

MySql复习之约束与常用函数

约束,是为了数据的正确性

1.非空约束,一定要给值才能插入

  • NOT NULL
CREATE TABLE a(
	id INT NOT NULL,
	sname VARCHAR(20)
)
    
 --  提示错误:Field 'id' doesn't have a default value

2.唯一性约束,值不能重复

CREATE TABLE b(
	id INT not NULL UNIQUE
	)

3.默认约束,给一个默认值

CREATE TABLE c(
	id INT not NULL DEFAULT 6,
	sname VARCHAR(3)
	)

4.主键约束,主键列自动增长,无需赋值,表格必须要有一个主键
一张表中最多只有一个主键

CREATE TABLE t_stu(
-- 主键自增
	sid INT PRIMARY KEY auto_increment,
	sname VARCHAR(10) NOT NULL,
	sgender char(1),
	score FLOAT(4,1) NOT NULL,
	birthday TIMESTAMP,
	sutid VARCHAR(30) UNIQUE
	)

5.外键约束

一张表的外键代表着另外一张表的主键,外键的值必须从另外一张表的主键中进行选择

ALTER TABLE t_stu add CONSTRAINT fk_cid FOREIGN KEY(courseid) REFERENCES course(id);

标志列:自增长列

一个表只能有一个标志列

SET auto_increment_increment=2;
-- 查看标志列起始和步长
SHOW VARIABLES LIKE '%auto_increment%';

常用函数

**注意:**MySQL中的+就只有运算符的功能;会试图将字符型数值转换为数值型再继续操作,转换失败则转为0;若其中有null则结果为null;字符串可以使用concat函数拼接;

字符函数:

​ length(str)得到的是字节个数 utf8中中文是3个字节

​ concat() 拼接字符串

​ upper /lower(str)

​ substr,substring 截取字串 MySQL的索引是从1开始的,截取的是字符长度

​ trim() 去除前后空格

​ replace 替换全部符合的

sql中的索引是从1开始的

-- 字符串连接
SELECT concat('java','sun','aa');
-- length() 字节长度
SELECT length(sname),sname FROM tb_stu;
-- 字符长度
SELECT CHAR_LENGTH('java');
-- 去除前后空格
SELECT trim('  ja  va    ');
-- 重复指定次数
SELECT repeat('ja',4);
-- 字符串替换
SELECT REPLACE('javaoror','or','sun');
-- 截取字串
SELECT substring('javasun',5,3);

数学函数:

  • round()四舍五入
  • ceil()向上取整
  • floor()向下取整
  • truncate()截断
  • mod()取余
-- 取绝对值
SELECT abs(-32);
-- 向上取最小整数
SELECT ceil(3.2);
-- 向下取最大整数
SELECT floor(3.2);
SELECT floor(score),score FROM tb_stu;
-- 取余数
SELECT mod(21,3);
-- 得到 0-1之间的随机值
SELECT rand();
-- 有2位小数的四舍五入值
SELECT round(5.678,2);
-- 截断,小数位保持2位
SELECT TRUNCATE(5.67888,2);

日期函数:

日期 时间

  • now() 返回当前的日期+时间
  • curdate()返回系统日期,不包含时间
  • curtime() 返回当前时间,不包含日期
  • year()年 获取指定的年 month() monthname()
-- 当前日期,当前时间,日期和时间
SELECT CURDATE(),CURTIME(),now();
-- 指定日期是一年中的第几周
SELECT WEEK(now());
-- 返回指定日期的年份
SELECT YEAR(now());
-- 返回指定时间的小时
SELECT hour(now()),hour(CURTIME());
-- 返回date的月份名
SELECT MONTHNAME(now());

其他函数:

  • version() 版本号
  • user()当前用户
  • if(exp1,exp2,exp3)如果exp1为true,取exp2的值 否则取exp3的值 和三元运算符相似
    SELECT VERSION();
    SELECT USER();
    SELECT DATABASE();
    SELECT IF(10>2,'10','2') a;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值