持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第14天,点击查看活动详情
1.约束
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%';
2.常用函数
注意:MySQL中的+就只有运算符的功能;会试图将字符型数值转换为数值型再继续操作,转换失败则转为0;若其中有null则结果为null;字符串可以使用concat函数拼接;
1.字符函数:
-
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);
2.数学函数:
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);
3.日期函数:
日期 时间
now()返回当前的日期+时间curdate()返回系统日期,不包含时间curtime()返回当前时间,不包含日期year()年 获取指定的年month()返回日期的月份部分,范围为0〜12。monthname()返回日期的月份全名。
// 当前日期,当前时间,日期和时间
SELECT CURDATE(),CURTIME(),now();
// 指定日期是一年中的第几周
SELECT WEEK(now());
// 返回指定日期的年份
SELECT YEAR(now());
// 返回指定时间的小时
SELECT hour(now()),hour(CURTIME());
// 返回date的月份名
SELECT MONTHNAME(now());
4.其他函数:
version()版本号user()当前用户
if(exp1,exp2,exp3)如果exp1为true,取exp2的值 否则取exp3的值和三元运算符相似
SELECT VERSION();
SELECT USER();
SELECT DATABASE();
SELECT IF(10>2,'10','2') a;