mysql中的6钟约束_mysql列类型、列约束

MySQL服务器端数据的逻辑结构:

SERVER=>DATABASE=>TABLE=>ROW=>COLUMN

1.常用的SQL语句:

(1)增:INSERT INTO表 VALUES(值, 值, ...);

(2)删:DELETE  FROM表;

(3)改:UPDATE表 SET 列=值, ...,列=值 ;

(4)查:SELECT  *  FROM表;

2.MySQL中的列类型

(1)数值类型   —— 可用引号括起来也可以不用

整数数值类型:   student(  age TINYINT  )

TINYINT:微整数,占1字节,-128~127

SMALLINT:小整数,占2字节,-32768~32767

INT:整数,占4个字节, -2147483648~2147483647

BIGINT:大整数,占8个字节,.....

小数数值类型:  product( price DECIMAL(7, 4) )  //一共7位,其中4位小数位

FLOAT(M,D):单精度浮点型,占4字节,3.4E38,计算时可能产生四舍五入

DOUBLE(M,D):双精度浮点型,占8字节 1.8E30,计算时可能产生四舍五入

DECIMAL(M,D):定点小数,不会产生精度舍入

布尔数值类型:   product( isOnsale BOOL)

BOOL,布尔/真假类型只能取值为TRUE/FALSE。注意:MySQL数据库中没有真正意义上的布尔类型,TRUE等同于1,FALSE等同于0

(2)日期时间类型  —— 必须用引号括起来

DATE:日期类型,形如'2017-5-10'

TIME:时间类型,形如'22:08:5'

DATETIME:日期/时间类型,形如'2017-10-25 22:8:5'

(3)字符串类型  —— 必须用引号括起来   emp(resume ...)

CHAR(M):定长字符串,比VARCHAR操作速度更快,M不能超过255

VARCHAR(M):变长字符串,比CHAR更能节约空间,M不能超过65535

TEXT(M):大型变长字符串,M不能超过2G

3.MySQL中的列约束

Constraint:约束,数据库中某列上的数据往往必须符合某种规范,如编号不能重复、年龄必须在一定范围、密码有长度限制、员工所在部门必须真的存在......类似的限制/规范就称为“列约束”

(1)主键约束 —— PRIMARY  KEY

声明为主键的列上,不能出现重复值,也不能出现NULL值,所有的记录会自动按照主键列上值由小到大排序 —— 因此一个表中至多只能有一个主键列。

(2)非空约束 —— NOT NULL

声明为非空的列,不能出现NULL,但可以出现重复值。

(3)唯一约束 —— UNIQUE

声明为唯一约束的列,不能出现重复的值,但可以出现NULL,且允许多个NULL出现(两个NULL值是不等的)

(4)检查约束 —— CHECK

检查约束可以检查新插入的数据是否满足指定的条件,如:

student( age INT CHECK(age>=18  AND  age<=60)  )

MySQL不支持此约束!

(5)默认值约束 —— DEFAULT

student(sid INT, sex CHAR(1) DEFAULT '男');

使用默认值的方式

1)INSERT INTO student VALUES(10, DEFAULT);

2)INSERT INTO student(sid) VALUES(20);

(6)外键约束 —— FOREIGN KEY...REFERENCES

4.MySQL中使用自增列

id INT PRIMARY KEY AUTO_INCREMENT

自增列:只能用于整数列,且必须是主键列。自增列无需手工赋值,会自动采用1/2/3....数列,在当前最大值基础上+1。

注意:SQL标准中没有此关键字,它是MySQL所专有的!

例子:

SET NAMES UTF8;

#丢弃数据库

DROP DATABASE IF EXISTS tedu;

#创建数据库

CREATE DATABASE tedu CHARSET=UTF8;

#进入数据库

USE tedu;

#创建部门表

CREATE TABLE dept(

did INTPRIMARY KEY,

dname VARCHAR(32) UNIQUE NOT NULL,

empCount INT

);

INSERT INTO dept VALUES('10','研发部','3');

INSERT INTO dept VALUES('20','市场部I','1');

INSERT INTO dept VALUES('30','市场部II','2');

#创建员工表

CREATE TABLE emp(

eid INT PRIMARY KEY,        #主键列

ename VARCHAR(4),

salary DECIMAL(8,2)DEFAULT 99999.99,

birthday DATE DEFAULT '1990-1-1',

deptId INT,

FOREIGN KEY(deptId) REFERENCES dept(did)

);

INSERT INTO emp

VALUES(1,'丁丁', 8000, DEFAULT, 10);

INSERT INTO emp(eid,ename,salary,deptId)

VALUES(6,'当当', 5000, 10);

INSERT INTO emp

VALUES(3,'豆豆', 3000, '1998-1-3', 10);

INSERT INTO emp

VALUES(4,'丫丫', 7000, '1998-1-4', 20);

INSERT INTO emp

VALUES(5,'明明', 9000, '1998-1-5', 30);

INSERT INTO emp

VALUES(2,'白白', 8500, '1998-1-6', NULL);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值