189 8069 5689

mysql主键怎么使用 mysql主键使用什么类型比较好

MySQL如何创建主键,外键和复合主键

1.创建主键语法

网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了大城免费建站欢迎大家使用!

ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名);

2.创建外键语法

ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[约束名] FOREIGN KEY (info_id)[子表列] REFERENCES news_type[主表名] (id)[主表列] ;

3.使用组合主键

如果一列不能唯一区分一个表里的记录时,可以考虑多个列组合起来达到区分表记录的唯一性,形式

①创建时:create table sc (

studentno int,

courseid int,

score int,

primary key (studentno,courseid) );

②修改时:alter table tb_name add primary key (字段1,字段2,字段3);

在MySQL中如何设置主键和外键

1.外键的作用,主要有两个:

一个是让数据库自己通过外键来保证数据的完整性和一致性

一个就是能够增加ER图的可读性

2.外键的配置

1)先创建一个主表,代码如下:

#创建表student,并添加各种约束

create table student

(

id int primary key , #主键约束

name varchar(20) , #唯一约束

age int NOT NULL, #非空约束

sex varchar(2) ,

address varchar(20) default '重庆' #默认约束

) ;

再通过一个外键,创建一个分数表,这样的话,就可以方便查询。代码如下:

#创建分数表

create table score

(

id int primary key ,

sid int ,

china int ,

history int,

english int,

constraint FK_sid foreign key(sid) references student(id) #通过外键创建链接

) ;

创建外键的方法有很多,其中最常见创建外键的格式是:constraint FK_*** foreign key(**) references 链接的外表

删除外键:

alter table drop foreign key '外键名'.

注意:

只有在定义外键时,用constraint 外键名 foreign key .... 方便进行外键的删除

主键是唯一标示这一行的,就好像你的身份证号一样,每个人只有一个,也是唯一能证明你是你的东西。外键是别人执行你的东西。也就是说如果一个人想和你有点关系怎么办,那就要关联起来,怎么关联起来,就通过外键啊

定义主键和外键主要是为了维护关系数据库的完整性,总结一下:

一、主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。

外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。

mysql 主键索引,联合索引,单列索引使用场景

表button 

CREATE TABLE `button` (

`id` bigint(20) NOT NULL AUTO_INCREMENT,  --主键索引

`button_name` varchar(45) NOT NULL COMMENT '功能名称',

`app_id` bigint(20) NOT NULL,

`permission_id` bigint(20) DEFAULT NULL,  -- permission_id 和 app_id 联合索引。

`api_id` bigint(20) NOT NULL, --api_id单独索引

PRIMARY KEY (`id`),

KEY `index_app_permission_lianhe` (`permission_id`,`app_id`) USING BTREE,

KEY `index_api_id_dange` (`api_id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8

主键索引,单独索引,组合索引使用场景及优化

表button 有3个索引,分别是:id主键,联合索引(permission_id,app_id),api_id(单列索引)

button_name 无索引

查询where条件中:

主键索引:

1、主键索引与联合索引同时存在,使用主键索引

2、主键索引与单个索引同时存在,使用主键索引

结论:只要主键索引在,使用主键索引。

联合索引 :

1、联合索引与单列索引列 同时存在,使用单列索引

2、联合索引中列顺序颠倒无影响。

3、联合索引实行最左侧原则,即:单独查询条件中只有permission_id可以使用联合索引,单独查询条件中只有app_id不实用联合索引。

4、如果查询条件中只有app_id,但是select 条件中有 permission_id,则也使用联合索引。

5、select id,app_id from button where app_id=1001; 使用联合索引

6、explain select id,app_id,button_name from button where app_id=1001;不使用联合索引

结论:索引优先级:主键索引,单列索引,组合索引

联合索引中遵从最左侧列原则。

当查询条件和返回结果中仅仅包含联合索引中索引项,也使用联合索引。如第4条。

当查询条件中出现联合索引中非最左侧索引列,返回结果中含义联合索引中的列或者主键则也使用联合索引。

单个索引:

1、查询条件中有单列索引,则使用,无不使用。

事例:

mysql设置主键的代码是什么?

mysql设置主键的代码是PRIMARY KEY (主键字段)。

如:CREATE TABLE Customer (SID integer,Last_Name varchar(30),First_Name varchar(30),PRIMARY KEY (SID))。

主关键字(主键,primary key)是被挑选出来,作表的行的唯一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。

扩展资料:

永远也不要更新主键。实际上,因为主键除了唯一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。

主键应当由计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了唯一标识一行以外的意义。一旦越过这个界限,就可能产生人为修改主键的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中。

MySQL之主键

主键是一个索引,mysql的索引是B+树,Mysql会按照键值的大小进行顺序存放,如果我们设置自增id为主键,这个时候主键是按照一种紧凑的接近顺序写入的方式进行存储数据。如果我们用其他字段作为主键的话,此时Mysql不得不为了将新记录插到合适位置而移动数据,甚至目标页面可能已经被回写到磁盘上而从缓存中清掉,此时又要从磁盘上读回来,这增加了很多额外的开销,同时频繁的移动、分页操作造成了大量的碎片。

- 考虑性能消耗

- 考虑资源消耗

- 考虑分库分表


网站标题:mysql主键怎么使用 mysql主键使用什么类型比较好
文章出自:http://jkwzsj.com/article/dosodsp.html

其他资讯