MySQL (三)

1 字段属性

  • 主键、唯一键和自增长。

1.1 主键

  • 主键:primary key,一张表中只能有一个字段可以使用对应的键,用来唯一的约束该字段里面的数据,不能重复。
  • 一张表只能有最多一个主键。

1.1.1 增加主键

  • 在SQL操作中欧有多种方式可以给表增加主键,大体分为三种:
  • 方案1:在创建表的时候,直接在字段之后,跟primary key关键字(主键本身不能为空)。
-- 增加主键
create table my_pri(
   id int primary key,
   name varchar(20) not null comment ‘姓名‘
)charset utf8;

    • 优点:非常直接;缺点:只能使用一个字段作为主键。  
  • 方案2:在创建表的时候,在所有的字段之后,使用primary key(主键字段列表)来创建主键,如果有多个字段作为主键,可以是复合主键。
create table my_pri2(
   number char(10) comment ‘学号‘,
   course char(10) comment ‘课程代码:3901+0000‘,
   score tinyint unsigned default 60 comment ‘成绩‘,
   -- 增加主键限制:学号和课程代码应该是唯一的
   primary key (number,course)
)charset utf8;

  • 方案3:当表已经创建好之后,额外追加主键:可以通过修改表字段属性,也可以直接追加。
alter table 表名 add primary key (字段列表);

  • 前提:表中字段对应的数据本身是独立的(不重复)。

1.1.2 主键约束

  • 主键对应的字段中的数据不允许重复,一旦重复,数据操作失败(增和该)。

1.1.3 主键更新 & 删除主键

  • 没有办法更新主键:主键必须先删除,才能增加。
drop table 表名 drop primary key;

1.1.4 主键分类

  • 在实际创建表的过程中,很少使用真实业务数据作为主键字段(业务主键,如学号、课程号)。
  • 大部分的时候,是使用逻辑性的字段(字段没有业务含义,值是什么都没有关系),将这种字段主键称为逻辑主键。

1.2 自动增长

  • 自增长:当对应的字段,不给值,或者给默认值,或者给null的时候,会自动的被系统触发,系统会从当前字段中的已有的最大值+1操作,得到一个新的不同的字段。
  • 通常自动增长和主键搭配。

1.2.1 新增自增长

  • 自增长特点:auto_increment

    • 任何一个字段要做自增长必须前提是本身是一个索引(key一栏有值)。

    • 自增长必须是数字。  

    • 一张表最多只能有一个自增长。  

1.2.2 自增长使用

  • 当自增长被给定的值为null或者默认值的时候,会触发自动增长。

1.2.3 修改自增长

  • 自增长如果是涉及到字段改变:必须先删除自增长,后增加(一张薄只能有一个自增长)。
  • 修改当前自增长已经存在的值:修改只能比当前已有的自增长的最大值大,不能笑(小不生效)。
-- 修改表选项的值
alter table 表名 auto_increment = 值;
  • 思考:为什么自增长是从1开始?为什么每次都是自增1呢?

    • 所有系统的变现(如字符集、校对集)都是系统内部的变量进行控制的。
    • 查看自增长对应的变量:show variables like ‘auto_increment%‘;  

  • 可以修改变量实现不同的效果,但是修改是针对整个数据库的修改,而不是单张表,不建议修改。
-- 不建议修改
set auto_increment_increment = 5;

1.2.4 删除自增长

  • 自增长是字段的一个属性:可以通过modify来进行修改(保证字段没有auto_increment即可)
alter table 表名 modify 字段 类型;

1.3 唯一键

  • 一张表往往有很多字段需要具有唯一性,数据不能重复;但是一张表中只能有一个主键,所以唯一键就可以解决表中有多个字段需要唯一性的约束。
  • 唯一键的本质和主键差不多,唯一键默认的允许自动为空,而且可以多个为空。

1.3.1 增加唯一键

  • 基本上和主键差不多:三种方案。
  • 方案一:在创建表的时候,字段之后直接跟unique/unque key。
  • 方案二:在所有的字段之后增加unique key(字段列表);--复合唯一键
  • 方案三:在创建表之后增加唯一键。
时间: 2024-10-16 15:54:10

MySQL (三)的相关文章

mysql三范式

列不可分割 数据惟一性 数据不可冗余(如果一列能被其中一列推导出来,则不可以数据列里添加上去) 有时可反3范式 mysql三范式

mysql(三) 数据表的基本操作操作

mysql(三) 数据表的基本操作操作 创建表,曾删改查,主键,外键,基本数据类型. 1. 创建表 create table 表名( 列名 类型 是否可以为空, 列名 类型 是否可以为空 )ENGINE=InnoDB DEFAULT CHARSET=utf8 例如: 类型解释: 是否可以为空: 是否可空,null表示空,非字符串 not null - 不可空 null - 可空 默认值设置 默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值 create table t

mysql三:存储引擎

一 什么是存储引擎 mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的文件应该有不同的类型:比如存文本用txt类型,存表格用excel,存图片用png等 数据库中的表也应该有不同的类型,表的类型不同,会对应mysql不同的存取机制,表类型又称为存储引擎. 存储引擎说白了就是如何存储数据.如何为存储的数据建立索引和如何更新.查询数据等技术的实现方法.因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型) 在O

MySQL(三)

上一章给大家说的是数据库的视图,存储过程等等操作,这章主要讲索引,以及索引注意事项,如果想看前面的文章,url如下: MYSQL入门全套(第一部) MYSQL入门全套(第二部) 索引简介 索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构.如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息. 例如这样一个查询:select * from table1 where id=10000.如果没有索引,必须遍历整个表

[mysql]三种方法为root账户指定密码

前言:前段时间把mysql安装后一直没管它,当时就在奇怪为什么mysql登陆不要密码,原来一直用的超用户账户登陆的(简称超级用户) 其实只怪自己太无知,之前一直用的phpbydamin进行的数据库的可视化管理,哪里知道这么详细呢? 本文原文来源mysql官方文档5.1 正文:最开始可以使用SELECT User.Password FROM mysql.user查询mysql数据库root账户的密码 你可以用几种方法为root账户指定密码.以下介绍了三种方法: ·         使用SET PA

mysql三个应用场景

场景一,数据表自动备份(多个数据表字段同步等),使用触发器.如updatelog记录对资源的所有操作日志,reslastlog记录资源最后操作的日志信息.同步方式实现如下: //创建表 DROP TABLE IF EXISTS updatelog; CREATE TABLE `updatelog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `resourceid` int(11) DEFAULT NULL, `log` text, `createtime`

Mysql(三)约束

一.视图 视图是虚拟的数据表,本身不存储数据,而是提供数据的逻辑 展示.       1.创建视图 create view stu_view as select s1.id, s1.name, s2.room, s2.stay_time from student s1, stay s2 where s1.id = s2.id; 创建视图后,就可以像查询数据表一样查询视图.  视图的字段就是我们从数据表中查询而来的字段. select id from stu_view   desc stu_vie

MySQL三种备份

一)备份分类 1 2 3 4 5 6 7 8 9 10 11 12 冷备:cold backup数据必须下线后备份 温备:warm backup全局施加共享锁,只能读,不能写 热备:hot backup数据不离线,读写都能正常进行 备份的数据集 完全备份:full backup 部分备份:partial backup 备份时的接口(是直接备份数据文件还是通过mysql服务器导出数据) 物理备份:直接复制(归档)数据文件的备份方式:physical backup 逻辑备份:把数据从库中提出来保存为

MySQL三:存储引擎

阅读目录 一 什么是存储引擎 二 mysql支持的存储引擎 三 使用存储引擎 一 什么是存储引擎 mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的文件应该有不同的类型:比如存文本用txt类型,存表格用excel,存图片用png等 数据库中的表也应该有不同的类型,表的类型不同,会对应mysql不同的存取机制,表类型又称为存储引擎. 存储引擎说白了就是如何存储数据.如何为存储的数据建立索引和如何更新.查询数据等技术的实现方法.因为在关系数据库中数据的存储是

MySQL(三) 数据库表的查询操作【重要】

序言 1.MySQL表操作(创建表,查询表结构,更改表字段等), 2.MySQL的数据类型(CHAR.VARCHAR.BLOB,等), 本节比较重要,对数据表数据进行查询操作,其中可能大家不熟悉的就对于INNER JOIN(内连接).LEFT JOIN(左连接).RIGHT JOIN(右连接)等一些复杂查询. 通过本节的学习,可以让你知道这些基本的复杂查询是怎么实现的,但是建议还是需要多动手去敲,虽然理解了什么是内连接等,但是从理解到学会,是完全不一样的感觉. --WH 一.单表查询 1.1.查