mysql学习笔记(二)

原创 2015年07月08日 23:24:30

今天学习的内容主要是如何为一张表创建主键(PRIMARY KEY),如何创建唯一约束(UNIQUE KEY),为数据表创建索引的好处,以及如何创建外键约束。

主键相关知识点:一张表只能有一个主键。如下面的表中把id字段定义成主键。

要点:属性AUTO_INCREMENT必须要和主键在一起使用才行,当主键那一列的属性不一定要定义成AUTO_INCREMENT型。

 

唯一约束相关知识点:一张表可以有多个唯一约束。下面为user3表添加几个字段,并把一些字段定义成唯一约束。再把username字段也修改成唯一约束。

首先插入两个字段password 和 salary,并把password定义成唯一约束。

 

我们再通过SHOW CREATE TABLE `user3` 命令来查看当前表的结构

 

发现修改成功。再把username字段修改成唯一约束来证明一张表中允许存在多个唯一约束。

添加唯一约束成功说明了可以存在多个唯一约束。

 

为表中的一列或多列创建索引的好处是能够提高数据表的查询效率。比如user3表中的username字段有N条记录,现在要查找的是记录中最后一条SELECT * FROM `user3` WHERE `username`="李四",没有添加索引,查找时会挨个匹配,时间效率将为O(N),但添加索引后,由于字段username的记录是放在B-树中或哈希树中的,查找时是按已经写好的最优算法来匹配的,时间效率自然会O(n)快出巨多。

外键约束的要求:

1.父表和字表必须使用相同的存储引擎,而且禁止使用临时表。

2.数据表的存储引擎只能为InnoDB。

3.外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。

4.外键列和参照列必须创建索引。如果外键列不存在索引的话,MYSQL将自动创建索引。

下面创建一个province1表,是表user11的父表。

将user11表中的pid定义成外键,通过外键约束,pid不用定义字符类型来存储省份的信息,而可以通过外键与表provinces1关联。

创建provinces1表:

再创建user11表:

把pid设置成外键约束,通过参考provinces1表中的id字段来达到关联的目的。

创建外键约束必须符合上面的4个要求才行。

其中存储引擎指的是如何存储数据,如何为存储数据建立索引和如何更新,查询
数据等技术的实现方法。因为在关系数据库中数据的存储是表的形式存储的,
所以存储引擎也可以称为表类型(即存储和操作此表的类型)。

SHOW CREATE TABLE 表名;来查看表的存储引擎

通过ALTER TABLE 表名 ENGINE=引擎类型;来修改表的类型

通过SHOW ENGINES来查看你的数据库所支持的存储引擎类型,以及数据库默认的存储引擎。

可以通过打开my.ini配置文件来修改默认的存储引擎类型。

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

机器视觉学习笔记(一)

来秦皇岛快一周了,跟导师、学长聊了聊,觉得自己还是想做机器视觉,毕竟做一个智能机器人或者做智能家居一直是我的兴趣所在。这两天学了opencv,进度很慢,有待提高效率。在csdn上发现了很多有用的资料,...
  • sunlightli1216
  • sunlightli1216
  • 2015年01月16日 11:19
  • 258

机器学习笔记(二)(Draft Version)

摘要 笔记(一)中讨论的情况显示,模型越复杂并不一定error越小。那所以这些error到底来自什么地方呢? 1. bias 2. variance 在具体训练过程中,如果可以诊断error的...
  • yucicheung
  • yucicheung
  • 2017年09月18日 15:12
  • 310

西瓜书学习笔记(二)

啊啊啊啊啊,昨天本来第二章写了不少内容,但是不知道CSDN的Markdown编辑器是不会自动保存的,中途发别的博客会把之前编辑的也给覆盖掉,这一章就简单写点吧。第二章 模型评估与选择2.1 经验误差与...
  • Cyril__Li
  • Cyril__Li
  • 2017年04月25日 18:49
  • 384

node.js学习笔记(2)---Nodejs开发框架Express3.0开发手记–从零开始

目录 此文重点介绍Express3.0的开发框架,其中还会涉及到Mongoose,Ejs,Bootstrap等相关内容。   项目源码下载地址:http://download.csdn.net/det...
  • liuwu0720
  • liuwu0720
  • 2014年03月15日 10:59
  • 1597

GLSL学习笔记2

现在开始第四章的学习 4.The OpenGL Programmable Pipeline(opengl可编程管线) 顶点着色器课代替的固定功能有: 1.用模型矩阵变换顶点坐...
  • hippig
  • hippig
  • 2012年04月14日 11:26
  • 908

CMAKE学习笔记(二)

声明:本文为转载博客(感谢网友dbzhang800),转载链接在博客末尾 在 Cmake学习笔记一 中通过一串小例子简单学习了cmake 的使用方式。 这次应该简单看看语法和常用的命令了。 ...
  • u012700322
  • u012700322
  • 2016年12月23日 14:26
  • 248

网络编程学习笔记整理(二)

摘录笔记 《TCP/IP高效编程 改善网络程序的44个技巧》socket的创建函数int socket (int domain,int type, int protocol)参数说明protocol需...
  • stecdeng
  • stecdeng
  • 2017年02月23日 14:47
  • 246

XSL学习笔记(二)

  第一部分学了7个元素,还有24个,一个一个学吧。  1、、、元素  与相比,两者都须是的子结点,但前者定义的模板规则优先级比较低,且必须为第一个子结点。两者的功能是相同的,都是将另一个定义好的XS...
  • Borenbao
  • Borenbao
  • 2006年04月14日 09:25
  • 1677

我的openwrt学习笔记(二):OpenWrt 开发环境搭建

首先我们首选的OpenWrt 编译环境是 Ubuntu,并且应尽量选择稳定的LTS版本,而不是更高版本的。这里我们推荐使用 Ubuntu 12.04 LTS或者Ubuntu 14.04 LTS作为编译...
  • xushx_bigbear
  • xushx_bigbear
  • 2015年08月18日 09:48
  • 19530

caffe学习笔记(2)

caffe学习笔记(2)-视觉层(vision layers) 本文参考博客caffe学习,是根据这篇博客做的学习笔记。详细情况可以参考原博客,真的很赞。 所有的层都具有的...
  • Ddreaming
  • Ddreaming
  • 2016年10月12日 08:44
  • 678
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mysql学习笔记(二)
举报原因:
原因补充:

(最多只允许输入30个字)