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

嘉兴市做外贸网站的百度文库首页

嘉兴市做外贸网站的,百度文库首页,关键词在线听,400电话安装佛山营销网站建设文章目录 为什么要有约束一. 空属性二. 默认值三. 列描述四. zerofill结束语 为什么要有约束 数据库是用来存放数据的,所以其需要保证数据的完整性和可靠性 数据类型也算是一种约束,比如,整型的数据无法插入字符型。 通过约束,让…

文章目录

  • 为什么要有约束
  • 一. 空属性
  • 二. 默认值
  • 三. 列描述
  • 四. zerofill
  • 结束语

为什么要有约束

数据库是用来存放数据的,所以其需要保证数据的完整性和可靠性
数据类型也算是一种约束,比如,整型的数据无法插入字符型。
通过约束,让插入数据库的数据都是符合预期的,倒逼程序员插入正确的数据,而通过约束,在MySQL视角中,只要是插入成功的数据,都是符合预期的

一. 空属性

NULL(空)
NOT NULL(不为空)
' '(空串)
空串和空是不一样的,比如没有建行银行卡是空,空串是有建行银行卡但是没有钱
NULL不参与任何计算

mysql> select 1+NULL;
+--------+
| 1+NULL |
+--------+
|   NULL |
+--------+

我们在建表时,属性如果没有说明not null,默认可以为NULL

mysql> create table student(-> id varchar(6),-> name varchar(3)-> );mysql> desc student;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| id    | varchar(6) | YES  |     | NULL    |       |
| name  | varchar(3) | YES  |     | NULL    |       |
+-------+------------+------+-----+---------+-------+
//插入数据
mysql> insert into student values (1,NULL);
Query OK, 1 row affected (0.01 sec)mysql> select * from student;
+------+------+
| id   | name |
+------+------+
| 1    | NULL |
+------+------+

NULL一列为YES,允许为空。
但是这并不合理,既然要插入数据,学生的姓名和学号都不应该为空。

mysql> create table student(-> id varchar(6) not null,-> name varchar(3) not null-> );mysql> insert into student values (1,NULL);
ERROR 1048 (23000): Column 'name' cannot be null
mysql> insert into student values (1,'张三');
Query OK, 1 row affected (0.00 sec)mysql> select * from student;
+----+--------+
| id | name   |
+----+--------+
| 1  | 张三   |
+----+--------+mysql> show create table student \G;
*************************** 1. row ***************************Table: student
Create Table: CREATE TABLE `student` (`id` varchar(6) NOT NULL,`name` varchar(3) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

建表属性也会显示NOT NULL

二. 默认值

Default 默认值
默认值的使用是在该属性没有显示插入数据时使用
在创建表时,如果没有指定默认值,那么默认值为NULL

mysql> create table t1(-> id int-> );mysql> desc t1;                 //默认为空
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)mysql> show create table t1 \G;
*************************** 1. row ***************************Table: t1
Create Table: CREATE TABLE `t1` (`id` int(11) DEFAULT NULL//默认为空
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

在建表时,指定默认值,那么在插入数据时,若没显示插入该属性数据,则使用默认值

mysql> create table person(->name varchar(4) not null,->age tinyint unsigned default 18
);mysql> insert into person (name) values ('张三');
Query OK, 1 row affected (0.00 sec)mysql> select * from person;
+--------+------+
| name   | age  |
+--------+------+
| 张三   |   18 |
+--------+------+

PS:如果设定属性为NOT NULL,则没有默认值
因为在建表属性中没有default null

mysql> create table t1(-> id int not null-> );mysql> show create table t1 \G;
*************************** 1. row ***************************Table: t1
Create Table: CREATE TABLE `t1` (`id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

三. 列描述

列描述:comment 建表时使用,相当于注释,专门用来描述字段,会根据表创建语句保存,用来给程序员或DBA来进行了解。

mysql> create table person(-> name varchar(4) not null comment '姓名',-> age tinyint unsigned comment '年龄',-> gender varchar(1) comment '性别'-> );mysql> show create table person \G;
*************************** 1. row ***************************Table: person
Create Table: CREATE TABLE `person` (`name` varchar(4) NOT NULL COMMENT '姓名',`age` tinyint(3) unsigned DEFAULT NULL COMMENT '年龄',`gender` varchar(1) DEFAULT NULL COMMENT '性别'
) ENGINE=InnoDB DEFAULT CHARSET=utf8

四. zerofill

创建int类型属性时,显示的是int(10),这个10是什么意思呢?
其实是最大能显示的位数个数,使用zerofill验证

mysql> create table t1( ->id1 int,->id2 int zerofill->);mysql> desc t1;
+-------+---------------------------+------+-----+---------+-------+
| Field | Type                      | Null | Key | Default | Extra |
+-------+---------------------------+------+-----+---------+-------+
| id1   | int(11)                   | YES  |     | NULL    |       |
| id2   | int(10) unsigned zerofill | YES  |     | NULL    |       |
+-------+---------------------------+------+-----+---------+-------+mysql> insert into t1 values (200,200);mysql> select * from t1;
+------+------------+
| id1  | id2        |
+------+------------+
|  200 | 0000000200 |
+------+------------+

使用zerofill会将没有显示的位数用0填充
因为int为4个字节,有符号的int最大表示21亿,10位数足够表示,而无符号的使用11位表示足够

结束语

感谢你的阅读

如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要。
在这里插入图片描述

http://www.15wanjia.com/news/183321.html

相关文章:

  • h5个人网站代码做音乐 交流网站
  • 做个人网站需要多少钱团购网站做二级域名
  • 网站开发工具书网站需要多大空间
  • 网站备案时 首页各大平台的logo图案
  • 开个网站需要什么条件架设网站是自己架设服务器还是租服务器
  • 某网络公司网站源码 蓝色建站企业网站源码电商平台建设内容
  • 北京网页设计公司排名网站优化关键词排名
  • wordpress建一个网站吗如何自己建立网站
  • 被邀请做刷客会不会碰到钓鱼网站电子商务
  • 东莞广告网站建设怎么用手机做游戏
  • 网站优化报价公司的宣传网站应该怎么做
  • 站长工具seo广州购物商城网站
  • 入侵网站被判多少年xcode 网站开发
  • 企业官网建站网站尺寸规范
  • dns设置 看国外网站建设行业门户网站需要什么条件
  • 做毕业设计资料网站好推广平台 赚佣金
  • 丹东做网站的企业网站推荐
  • 一般做网站需要多少钱机票酒店网站建设
  • 如何将vs做的网站备份出来WordPress降低加载时间
  • 全球十大网站访问量排名wordpress用户数据库
  • 用dw做红米网站汽车cms
  • 怎样买网站建设广州百度seo排名优化
  • 做网站的html框架高端网站建设公司有必要做吗
  • 安装php网站dw怎么做网站标题图标
  • 美术类网站建设费用镇江教育平台网站建设
  • 建设外贸英文网站wordpress 架构设计
  • 如何用书签 做网站接口舆情分析报告范文
  • 一级页面的网站怎么做windows优化大师怎么下载
  • 什么网站程序好推广网站发布文章
  • 单页网站怎么做排名东莞网络优化服务商