第二单元(数据类型和约束)
<h2>数据类型和约束</h2>
<blockquote>
<p>学习目标</p>
</blockquote>
<ul>
<li>能够知道数据类型和数据约束的作用</li>
</ul>
<hr />
<pre><code>大家都知道数据库中的数据保存在数据表中,在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,比如:数据类型和约束</code></pre>
<h2>1. 数据类型</h2>
<pre><code>数据类型是指在创建表的时候为表中字段指定数据类型,只有数据符合类型要求才能存储起来,使用数据类型的原则是:够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间。</code></pre>
<p>常用数据类型如下:</p>
<ul>
<li>整数:int,tinyint,bit,</li>
<li>小数:decimal</li>
<li>字符串:varchar,char</li>
<li>日期时间: date, time, datetime</li>
<li>枚举类型 enum
数据类型说明:</li>
</ul>
<pre><code>
decimal表示浮点数,如 decimal(5, 2) 表示共存5位数,小数占 2 位.
char表示固定长度的字符串,如char(3),如果填充'ab'时会补一个空格为'ab ',3表示字符数
varchar表示可变长度的字符串,如varchar(3),填充'ab'时就会存储'ab',3表示字符数
对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径.
字符串 text 表示存储大文本,当字符大于 4000 时推荐使用, 比如技术博客</code></pre>
<h2>2. 数据约束</h2>
<blockquote>
<p>约束是指数据在数据类型限定的基础上额外增加的要求.</p>
</blockquote>
<h5>常见的约束如下:</h5>
<ul>
<li>主键 primary key: 物理上存储的顺序. MySQL 建议所有表的主键字段都叫 id, 类型为 int unsigned.</li>
<li>自增 auto_increment 添加如数据时,让id值自动+1</li>
<li>非空 not null: 此字段不允许填写空值.</li>
<li>惟一 unique: 此字段的值不允许重复.</li>
<li>默认 default: 当不填写字段对应的值会使用默认值,如果填写时以填写为准.</li>
<li>外键 foreign key: 对关系字段进行约束, 当为关系字段填写值时, =会到关联的表中查询此值是否存在, 如果存在则填写成功, 如果不存在则填写失败并抛出异常.</li>
</ul>
<h2>3. 小结</h2>
<blockquote>
<p>常用的数据类型:</p>
<ul>
<li>整数:int,bit</li>
<li>小数:decimal</li>
<li>字符串:varchar,char</li>
<li>日期时间: date, time, datetime</li>
<li>枚举类型(enum)</li>
</ul>
<p>常见的约束:</p>
</blockquote>
<ul>
<li>主键约束 primary key</li>
<li>非空约束 not null</li>
<li>惟一约束 unique</li>
<li>默认约束 default</li>
<li>外键约束 foreign key</li>
</ul>
<p>数据类型和约束保证了表中数据的准确性和完整性</p>