MySQL中列的属性

MySQL中列的属性

在这里插入图片描述
一张表单靠一个数据类型来规范是狭隘的,很单一,所以需要一些额外的属性来规范和约束;
NULL , NOTNULL , default , Primary key , auto_increment , comment



1.注释:comment,这个没有实际的约束意义,只是单纯的为了看着更方便,更助于理解的字段;



2.默认值:default,某一种数据经常性出现某个具体的值,可以一开始就定义好,在需要真实数据的时候,用户可以选择性的使用;

比如在插入一条数据的时候,不给该字段赋值,想使用默认值可以不一定要去指定列表,故意不适用字段列表:可以使用default关键字来代替值.
intsert into my_table values (‘老衲’,18,default);



3.主键:primary,一张表中用来唯一约束这一字段的所有数据,不能重复;比如现有一个Student表,一个Student字段只能对应一个主键,这个主键用来唯一标识这个Student字段;

一张表中只能有一个主键,主键不能为空.但可以将多个字段设置成联合主键(不建议使用);
添加主键的方式:
1.直接在所有字段的后面写上、primary key(’’,’’);
CREATE TABLE order2( oid VARCHAR(20) NOT NULL, oname VARCHAR(20) NOT NULL, PRIMARY KEY (oid) );
2.直接在字段后面加上primary key 关键字即可;
CREATE TABLE order3( oid VARCHAR(20) NOT NULL PRIMARY KEY , oname VARCHAR(20) NOT NULL);
3.当表已将创建之后,再次额外追加主键,可以修改字段属性,也可以直接追加
alter table 表名 modify 字段名 primary key;
alter table 表名 add primary key (字段列表);
主键的前提:
主键使用的字段本身是单一的,不可重复;
主键约束:
主键对应得字段中的数据不允许重复,一旦重复,数据操作失败
更新主键&删除主键
不能更新主键,只能在删除后添加主键;
删除主键:
alter table 表名 drop primary key;
主键分类:
业务主键:在真正的项目中很少使用业务数据来当做业务主键;
逻辑主键:使用与业务数据无关的属性来当做逻辑主键;



4.自动增长:auto_increment
一张表只能有一个自增字段
MySQL 每张表只能有1个自动增长字段,这个自动增长字段即可作为主键,也可以用作非主键使用,但是请注意将自动增长字段当做非主键使用时必须必须为其添加唯一索引,否则系统将会报错;

当对应的字段,不给值,或者默认为NULL的时候,会自动的被系统出发,系统会从当前字段中已有的最大值进行+1操作,得到一个新的不同的字段. 自增长通常是作为主键的;

1.任何一个字段要自增必须是一个索引;
2.该字段必须是数值类型,其余类型不可以;
3.一张表只能有一个自增的字段;

其实我是有一个问题的,不过到现在也没有解决:我就是纳闷,当初设计MySQL的人员到底是出于什么的考虑,才要求一张表只能有一个自增的字段??如果看见这个文章的小哥哥小改改了解的话,感谢您能给我解惑,谢谢!

自增长为什么是从1开始?为什么每次都增长1?
所有系统的变量(如字符集,校对集)都是有系统变量控制的
查看自增长对应的变量: show variables like ‘auto_increment%’;

auto _increment_offset 起始值
auto _increment_increment 步长
修改变量实现不同的效果:修改是对整个数据库修改,而不是单张表(一般没有必要修改)
修改自增长步长: set auto _increment_set = 5;
删除自增长
alter table 表名 drop id int ;
注意在删除的时候,不要加主键 primary key;



5.唯一键:unique key,
一张表可能会有多个字段需要有唯一性,但是一张表只能有一个主键,由此产生了unique key唯一键,唯一键便解决了一张表中多个字段需要有唯一约束这个问题的本质;唯一键允许是NUll,因为NULL字段不会参与比较,可以出现多个NULL;

1.创建表的时候,可以在字段后面直接添加unique key 标示
2.在所有的字段之后增加unique key (字段列表),同样支持复合唯一键
3.在创建表之后增加唯一键

alter table 表名 add unique key (字段名);
唯一键约束:
可以为空,可以多个为空.如果唯一键NOT NULL那就和主键约束完全一致
更新唯一键 & 删除唯一键
删除:alter table 表名 drop index 索引名字;
–唯一键默认时候字段名作为索引名.(删除的是唯一键约束而不是字段)
唯一键和主键的区别:
主键不可以是NULL,唯一键可以是NULL;一张表中只能有一个主键,但一张表可以有多个唯一键,可以说唯一键的出现就是为了解决主键的约束性;主键的约束是不重复,唯一键的约束是可为空,也可多个为空,若唯一键NOT NULL,那就和主键约束一样了;



6.索引:
系统根据某种算法,根据已有的字段,单独创建一个文件,文件能够快速实现匹配,能够快速查找对应的数据;
索引最重要的一个特点就是能大大提高查询的效率;
索引的种类:
普通索引:索引,普通的
主键索引:即主键,一张表一个,不可为空且不可重复;
唯一索引:设置成唯一索引的不可重复;
全文索引:全文索引,用于在一篇文章中,检索文本信息的;


MYSQL索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录 开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无 需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。


总体分析

PRIMARY,INDEX,UNIQUE,FULLTEXT有什么区别?各适用于什么场合?
举个例子来说,比如你在为某商场做一个会员卡的系统。
这个系统有一个会员表
有下列字段:
会员编号 INT
会员姓名 VARCHAR(10)
会员身份证号码 VARCHAR(18)
会员电话 VARCHAR(10)
会员住址 VARCHAR(50)
会员备注信息 TEXT

那么这个 会员编号,作为主键,使用 PRIMARY
会员姓名 如果要建索引的话,那么就是普通的 INDEX
会员身份证号码 如果要建索引的话,那么可以选择 UNIQUE (唯一的,不允许重复)
会员备注信息 , 如果需要建索引的话,可以选择 FULLTEXT,全文搜索。

不过 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。
用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。

创建索引使用说明
普通索引
create index on tablename (uid);
这是最基本的索引类型,而且它没有唯一性之类的限制。
创建索引,例如CREATE INDEX <索引的名字> ON tablename (列的列表);
修改表,例如ALTER TABLE tablename ADD INDEX [索引的名字] (列的列表);
创建表的时候指定索引,例如CREATE TABLE tablename ( […], INDEX [索引的名字] (列的列表) )
唯一性索引
这种索引和前面的“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一。
MYSQL主键:
MYSQL主键是一种唯一性索引,但它必须指定为“PRIMARY KEY”
例如“CREATE TABLE tablename ( […], PRIMARY KEY (列的列表) ); ”。但是,我们也可以通过修改表的方式加入主键,例如“ALTER TABLE tablename ADD PRIMARY KEY (列的列表); ”。每个表只能有一个主键。
全文索引
MySQL从3.23.23版开始支持全文索引和全文检索。在MySQL中,全文索引的索引类型为FULLTEXT。全文索引可以在VARCHAR或者TEXT类型的列上创建。它可以通过CREATE TABLE命令创建,也可以通过ALTER TABLE或CREATE INDEX命令创建。对于大规模的数据集,通过ALTER TABLE(或者CREATE INDEX)命令创建全文索引要比把记录插入带有全文索引的空表更快。
主键和唯一索引的区别
主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。
主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。
唯一性索引列允许空值,而主键列不允许为空值。
主键列在创建时,已经默认为空值 + 唯一索引了。
主键可以被其他表引用为外键,而唯一索引不能。
一个表最多只能创建一个主键,但可以创建多个唯一索引。
主键更适合那些不容易更改的唯一标识,如自动递增列、身份证号等。
在 RBO 模式下,主键的执行计划优先级要高于唯一索引。 两者可以提高查询的速度。

总结

本文写出了MySQL的列的属性,还有一些涉及到MySQL底层的原理问题不是很清楚,但是对于我们来说应该是足够了,欢迎大家来"找茬";
在这里插入图片描述
/*************************************************************************
/*************************************************************************
此文章版权方是个人,目的是为自己记录学习历程的同时为大家提供一些参考;如果有不正确的地方,欢迎大家提出!

/*************************************************************************
/*************************************************************************

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要修改MySQL Workbench中的属性,可以按照以下步骤操作: 1. 打开MySQL Workbench并连接到数据库。 2. 在左侧的“SCHEMAS”面板中选择要修改的数据库。 3. 在该数据库下选择要修改的。 4. 在的“Columns”选项卡中选择要修改的。 5. 在属性面板中,可以修改的名称、数据类型、长度、是否为主键、是否自增等属性。 6. 修改完毕后,点击“Apply”按钮保存修改。 7. 最后,点击“Apply”按钮应用所有修改。 以上就是修改MySQL Workbench中列属性的步骤。 ### 回答2: MySQL Workbench是一款MySQL数据库建模和管理工具,它提供了一个可视化的界面,用于更方便地操作数据库。在MySQL Workbench中,修改属性一个很常见的操作,下面我们将介绍如何在MySQL Workbench中修改属性。 1. 打开数据库连接,进入“Schema”页面。 2. 找到需要修改属性,双击打开。 3. 选中需要修改属性,右键单击,选择“Edit”选项。 4. 在弹出的编辑窗口中,可以修改属性,例如名、数据类型、长度、是否允许为空等。 5. 修改完成后,点击“Apply”按钮保存修改。 6. 如果需要撤销修改,可以点击“Revert”按钮回到修改前的状态。 7. 修改完成后,可以点击“Close”按钮关闭编辑窗口。 需要注意的是,在修改属性之前,应该先备份数据,以防修改出现错误导致数据丢失。另外,在修改属性时,应该注意数据类型的兼容性,以避免数据类型不匹配的问题出现。 总的来说,MySQL Workbench提供了一个直观易懂的界面,方便用户操作数据库。通过上述步骤,我们可以轻松地修改属性。 ### 回答3: MySQL Workbench是一款广泛应用在MySQL数据库管理的图形化工具。其中修改属性是其中非常重要的功能之一。下面将介绍如何使用MySQL Workbench来修改属性。 步骤一:打开MySQL Workbench,然后选择要修改属性。 步骤二:选择该中的要修改属性。右键单击该名称,然后选择“Alter Table”。 步骤三:在弹出的对话框中,选择要修改的属性,并输入新的属性。最常见的属性修改包括数据类型、长度和默认值等。 步骤四:保存更改,并在数据库中执行修改。 需要注意的是,在进行属性修改之前,请务必备份数据库以防意外情况发生。此外,如果该已经存在数据,修改属性将可能导致数据丢失或错误。因此,在修改属性之前,请确保你对该和所需的属性做了充分的理解和规划。 在实际应用中,MySQL Workbench修改属性是非常广泛使用的功能之一。因为数据在数据库中占据着极为重要的地位,在数据的规划和管理中,对于每一属性设计和属性的修改将直接影响到整个数据的结构和组织。因此,通过使用MySQL Workbench的修改属性功能,管理员可以有效地管理和优化数据库结构,提高数据库的性能和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值