焦点数码 發表於 2025-12-23 09:31:05

MySQL数据类型及库和表的操作大全

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">一. 库的操作</a></li><ul class="second_class_ul"><li><a href="#_lab2_0_0">1. 创建</a></li><li><a href="#_lab2_0_1">2. 修改</a></li><li><a href="#_lab2_0_2">3. 删除</a></li><li><a href="#_lab2_0_3">4. 备份</a></li></ul><li><a href="#_label1">二. 表的操作</a></li><ul class="second_class_ul"><li><a href="#_lab2_1_4">1. 创建</a></li><li><a href="#_lab2_1_5">2. 修改</a></li><li><a href="#_lab2_1_6">3. 删除</a></li></ul><li><a href="#_label2">三. 数据类型</a></li><ul class="second_class_ul"><li><a href="#_lab2_2_7">1. 数据类型分类</a></li><li><a href="#_lab2_2_8">2. 数值类型</a></li><ul class="third_class_ul"><li><a href="#_label3_2_8_0">(1)整数类型</a></li><li><a href="#_label3_2_8_1">(2)bit</a></li></ul><li><a href="#_lab2_2_9">3. 小数类型</a></li><ul class="third_class_ul"><li><a href="#_label3_2_9_2">(1)float</a></li><li><a href="#_label3_2_9_3">(2)decimal</a></li></ul><li><a href="#_lab2_2_10">4. 字符串类型</a></li><ul class="third_class_ul"><li><a href="#_label3_2_10_4">(1)char</a></li><li><a href="#_label3_2_10_5">(2)varchar</a></li></ul><li><a href="#_lab2_2_11">5. 日期和时间类型</a></li><ul class="third_class_ul"></ul><li><a href="#_lab2_2_12">6. enum 和 set 类型</a></li><ul class="third_class_ul"></ul></ul></ul></div><p>连接服务器:<span>mysql </span><span>-h </span><span>127</span><span>.0.0.1 </span><span>-P </span><span>3306 </span><span>-u </span><span>root </span><span>-p</span></p>
<p><span>-h 后面指定MySQL服务器地址&nbsp; -P 后面指定端口 -u 后面指定用户名 -p 后面跟随密码</span></p>
<p class="maodian"><a name="_label0"></a></p><h2>一. 库的操作</h2>
<p class="maodian"><a name="_lab2_0_0"></a></p><p class="maodian"><a name="_lab2_1_4"></a></p><h3>1. 创建</h3>
<p>创建数据库</p>
<p>语法:</p>
<div class="jb51code"><pre class="brush:sql;">create database 【数据库名】;</pre></div>
<p>当我们没有指定数据库的字符集和校验规则时,系统默认的字符集是 utf8 ,校验规则是&nbsp;<span>utf8_general_ci。</span></p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202512/2025122309282427.png" /></p>
<p>例如我们这里要指定字符集和校验规则创建库我们可以这样</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202512/2025122309282425.png" /></p>
<p class="maodian"><a name="_lab2_0_1"></a></p><p class="maodian"><a name="_lab2_1_5"></a></p><h3>2. 修改</h3>
<p>我们想要修改库的话首先得知道我们有什么库</p>
<div class="jb51code"><pre class="brush:sql;">show databases;</pre></div>
<p>这串指令可以将现有的库列出</p>
<p>效果:</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202512/2025122309282453.png" /></p>
<p>此时我们需要选择进入一个数据库。&nbsp;</p>
<p>语法:</p>
<div class="jb51code"><pre class="brush:sql;">use 【数据库名】;</pre></div>
<p>我们修改库通常是修改它的字符集和校验规则</p>
<p>语法:</p>
<div class="jb51code"><pre class="brush:sql;">alter database 【数据库】 【更改的字符集和校验规则】;</pre></div>
<p>效果:</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202512/2025122309282471.png" /></p>
<p class="maodian"><a name="_lab2_0_2"></a></p><p class="maodian"><a name="_lab2_1_6"></a></p><h3>3. 删除</h3>
<p>语法:</p>
<div class="jb51code"><pre class="brush:sql;">drop database 【数据库】;</pre></div>
<p>效果:</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202512/2025122309282498.png" /></p>
<p>数据库本质就是一个文件,里面的库就是数据库文件内部的一个子文件。数据这个子文件会连带着整个库内部的文件跟着一块删除,所以非轻易不要删除库。</p>
<p class="maodian"><a name="_lab2_0_3"></a></p><h3>4. 备份</h3>
<p>如果确实是需要删除库,那么删除之前需要进行一下备份。</p>
<p>语法:</p>
<div class="jb51code"><pre class="brush:sql;">mysqldump -h 【IP】 -P 【端口】 -u 【用户】 -p 【库名称】 &gt; 【目标路径】/【目标文件名】.sql</pre></div>
<p>若我们想要还原</p>
<p>语法:</p>
<div class="jb51code"><pre class="brush:sql;">source 【文件路径】/【文件名】</pre></div>
<p class="maodian"><a name="_label1"></a></p><h2>二. 表的操作</h2>
<h3>1. 创建</h3>
<p>语法:</p>
<div class="jb51code"><pre class="brush:sql;">create table 【表名称】(
    【列名】【类型】 comment 【'注释'】,
    【列名】【类型】 comment 【'注释'】
);</pre></div>
<p>效果:</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202512/2025122309282562.png" /></p>
<p>tip:创建表首先得选择库进入</p>
<h3>2. 修改</h3>
<p>我们首先查看表结构</p>
<p>语法:</p>
<div class="jb51code"><pre class="brush:sql;">desc 【表名】;</pre></div>
<p>效果:</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202512/2025122309282587.png" /></p>
<p>field 为字段名字,type 是字段类型,NULL 为约束条件,key 索引</p>
<p>若我们想给表中添加新的字段</p>
<p>语法:</p>
<div class="jb51code"><pre class="brush:sql;">alter table 【表名】 add 【新字段】 【新类型】 【新备注】; </pre></div>
<p>效果:</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202512/2025122309282550.png" /></p>
<p>若我们想给表中添加样例</p>
<p>语法:</p>
<div class="jb51code"><pre class="brush:sql;">insert into 【表名】 values(【表的字段类型】);</pre></div>
<p>这里我们插入两条样例</p>
<p>效果:</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202512/2025122309282542.png" /></p>
<p>若我们想改变表中字段的数据类型</p>
<p>语法:</p>
<div class="jb51code"><pre class="brush:sql;">alter table 【表名】 modify 【字段】 【新类型】;</pre></div>
<p>效果:</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202512/2025122309282585.png" /></p>
<p>若我们想删除某一列</p>
<p>语法:</p>
<div class="jb51code"><pre class="brush:sql;">alter table 【表名】 drop 【列】;</pre></div>
<p>效果:</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202512/2025122309282529.jpg" /></p>
<p>这里我们删除了某一列后,对应先前添加进去的实例也会删除掉对应的列</p>
<p>若我们想更改表名或者更改表内的字段名</p>
<p>语法:</p>
<div class="jb51code"><pre class="brush:sql;">alter table 【旧表名】 rename 【新表名】;</pre></div>
<div class="jb51code"><pre class="brush:sql;">alter table 【当前表名】 change 【旧字段名】 【新字段名】 【数据类型】;</pre></div>
<p>效果:</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202512/2025122309282589.jpg" /></p>
<h3>3. 删除</h3>
<p>语法:</p>
<div class="jb51code"><pre class="brush:sql;">drop table 【表名】;</pre></div>
<p>效果:</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202512/2025122309282580.png" /></p>
<p class="maodian"><a name="_label2"></a></p><h2>三. 数据类型</h2>
<p class="maodian"><a name="_lab2_2_7"></a></p><h3>1. 数据类型分类</h3>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202512/2025122309282556.png" /></p>
<p class="maodian"><a name="_lab2_2_8"></a></p><h3>2. 数值类型</h3>
<p class="maodian"><a name="_label3_2_8_0"></a></p><h4>(1)整数类型</h4>
<p>tinyint 的取值范围在 -128 - 127 之间。smallint 的取值范围在&nbsp;-32768 ~ 32767。mediumint 的取值范围在&nbsp;-8388608 ~ 8388607。int&nbsp;的取值范围在&nbsp;-2147483648 ~ 2147483647。bigint&nbsp;的取值范围在&nbsp;-9.22&times;10&sup1;⁸ ~ 9.22&times;10&sup1;⁸</p>
<p>不同的数值类型存在的意义在于,可以按需匹配数值范围,有效的节省空间。</p>
<p class="maodian"><a name="_label3_2_8_1"></a></p><h4>(2)bit</h4>
<p>bit(n):位字段类型,n表示位数,默认为1,最大为64.</p>
<p>bit 字段在显示时是按照 ASCILL 码的形式显示的。</p>
<p class="maodian"><a name="_lab2_2_9"></a></p><h3>3. 小数类型</h3>
<p class="maodian"><a name="_label3_2_9_2"></a></p><h4>(1)float</h4>
<p>float(m,d),m指定显示长度,d指定小数点后的精确位数</p>
<blockquote><p>当前我们假设 float(4,2)</p>
<p>那么此时就是4位长度,2位精度值</p>
<p>例子1:输入10.986,此时会进行四舍五入得到的结果为 10.99</p>
<p>例子2:输入99.996,此时倘若四舍五入会变成100,与原先的4位不符合,数据库不允许输入</p></blockquote>
<p class="maodian"><a name="_label3_2_9_3"></a></p><h4>(2)decimal</h4>
<p>decimal(m,d),m指定显示长度,d指定小数点后的精确位数</p>
<p>同为小数类型,与float有何区别呢?</p>
<p>float 采用二进制的科学计数法存储,decimal 采用十进制的存储方式将数字解析为字符串</p>
<p>float 会存在精度丢失当小数点后位数多的情况下,而decimal不会</p>
<p>float 一旦创建就不能更改储存大小,decimal 则可以动态的更改大小(m-d+1)</p>
<p>float 运算速度快因为是固定的储存,decimal 灵活但需要的运行时间多</p>
<p class="maodian"><a name="_lab2_2_10"></a></p><h3>4. 字符串类型</h3>
<p class="maodian"><a name="_label3_2_10_4"></a></p><h4>(1)char</h4>
<p>char(l),l 是固定的存储长度,最大为255</p>
<blockquote><p>char(2)</p>
<p>可以存放两个字符,可以是英文也可以是汉字</p></blockquote>
<p class="maodian"><a name="_label3_2_10_5"></a></p><h4>(2)varchar</h4>
<p>varchar(l),l 是可变长的字符串长度,最长为 65535</p>
<blockquote><div><span>关于</span><span>varchar(len),len</span><span>到底是多大,这个</span><span>len</span><span>值,和表的编码密切相关: </span></div>
<div><span>varchar</span><span>长度可以指定为</span><span>0</span><span>到</span><span>65535</span><span>之间的值,但是有</span><span>1 - 3 </span><span>个字节用于记录数据大小,所以说有效字节数是65532</span><span>。 </span></div>
<div><span>当我们的表的编码是</span><span>utf8</span><span>时,</span><span>varchar(n)</span><span>的参数</span><span>n</span><span>最大值是</span><span>65532/3=21844[</span><span>因为</span><span>utf</span><span>中,一个字符占 用3</span><span>个字节</span><span>]</span><span>,如果编码是</span><span>gbk</span><span>,</span><span>varchar(n)</span><span>的参数</span><span>n</span><span>最大是</span><span>65532/2=32766</span><span>(因为</span><span>gbk</span><span>中,一个字符 占用2</span><span>字节)。</span></div></blockquote>
<p class="maodian"><a name="_lab2_2_11"></a></p><h3>5. 日期和时间类型</h3>
<p>日期类型有三个:</p>
<p>date,datetime,timestamp</p>
<p>date:日期 yyyy-mm-dd 只存在年月日</p>
<p>datetime:日期加上具体的时分秒 yyyy-mm-dd hh:mm:ss</p>
<p>timestamp:这是时间戳,记录当前的年月日时分秒</p>
<p class="maodian"><a name="_lab2_2_12"></a></p><h3>6. enum 和 set 类型</h3>
<p>两个都为枚举类型</p>
<p>enum:枚举为单选</p>
<p>set:枚举可以多选</p>
頁: [1]
查看完整版本: MySQL数据类型及库和表的操作大全