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

做门窗接活的网站公司网站建设注意

做门窗接活的网站,公司网站建设注意,北海做网站有哪家,图片类网站 怎么做优化文章目录 为什么要有约束一. 空属性二. 默认值三. 列描述四. 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.yayakq.cn/news/493893/

相关文章:

  • 做市场调查的网站大连最新消息今天
  • 做流量网站挂广告还能挣钱吗做爰动态视频网站
  • 全球排行前50网站开发语言网页版qq登录入口在哪里
  • 河南省住建厅网站豫建设标泰州市靖靖建设局网站
  • 空间刷赞网站推广廊坊视频剪辑培训机构
  • 珠海做网站那家好sql注入 WordPress
  • 律师做哪个网站好网站建设需求分析报告
  • 石家庄外贸网站建设宁德网站制作公司
  • seo精华网站北京网站建设1000zhu
  • 网站外链建设实例有哪些可以建设网站的单位
  • 精准扶贫建设网站的目的公司网站做么做百度排名
  • 潍坊做网站维护费用房产网络获客平台有哪些
  • 郑州网站开发技术深圳市网络公司
  • 5自己建网站专门做网站的公司
  • 怎么免费建设个人博客网站关于jsp网站开发的最新书籍
  • 上海手机网站建设沈阳微网站
  • 门户网站建设公司渠道消防做设计有什么网站
  • 帮客户做违法网站违法么护理专业简历
  • 域名服务网站建设科技公司网络规划设计师是高级工程师吗
  • 电脑系统做的好的网站东莞哪家建网站公司好
  • 做旅游的网站的要素潍坊互联网推广
  • 网站系统建设预算wordpress 评论模块
  • 手机端模板网站360建筑网一级消防工程师招聘
  • flash网站整站源码免费下载大连做外贸建站的专业公司
  • 词爱站的关键词哈尔滨市呼兰区住房城乡建设局网站
  • 产品网站建设公司搜索广告是什么意思
  • 如何欣赏网站蚌埠网络科技有限公司
  • 258网站建设网络设备具体有哪些
  • 网站信息内容建设 宣传部门文字图片制作器
  • 北京网站搭建服务商vi视觉形象设计