主键约束

mysql三:表操作

旧街凉风 提交于 2020-02-16 08:13:26
阅读目录 一 存储引擎介绍 二 表介绍 三 创建表 四 查看表结构 五 数据类型 六 表完整性约束 七 修改表ALTER TABLE 八 复制表 九 删除表 一 存储引擎介绍 存储引擎即表类型,mysql根据不同的表类型会有不同的处理机制 1. 什么是存储引擎 mysql中建立的库===>文件夹 库中建立的 表 ===> 文件 现实生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制 :比如处理文本用txt类型,处理表格用excel,处理图片用png等 数据库中的表也应该有不同的类型, 表的类型不同 ,会对应mysql不同的 存取机制 ,表类型又称为 存储引擎 。 存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方 法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和 操作此表的类型) 在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySql 数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据 自己的需要编写自己的存储引擎 SQL 解析器、SQL 优化器、缓冲池、存储引擎等组件在每个数据库中都存在,但不是每 个数据库都有这么多存储引擎。MySQL

MySQL 索引学习笔记

只谈情不闲聊 提交于 2020-02-15 11:54:33
该文为《 MySQL 实战 45 讲》的学习笔记,感谢查看,如有错误,欢迎指正 一、索引简介 索引就类似书本的目录,作用就是方便我们更加快速的查找到想要的数据。 索引的实现方式比较多,常见的有 哈希表 , 有序数组 , 搜索树 。 1.1 哈希表 哈希表 是将数据以 key-value 的形式存储起来,简单来说就是将 key 通过哈希函数换算成数组中的一个确定的位置,将 value 存到这个位置去。当 key 比较多时,有可能换算出相同的位置,此时可以通过链表来解决。在查询时先找到位置,再对该位置的多个 value 进行遍历。 哈希表适合用于等值查询 ,由于是无序的,不适合用来做区间查询。 1.2 有序数组 有序数组 在等值查询和区间查询上效率都很高。由于是有序的,可以通过二分法快速得到结果。也支持范围查询。但是也有一个缺点,如果要在中间插入一个数据,那么后面的所有记录都要向后挪一位,成本太高了。 因此, 有序数组只适用于静态存储引擎 。 例如我们要保存2019年的出生人口信息,就适合用有序数组。 1.3 搜索树 常见的搜索树有 二叉 ,也有 多叉 。 二叉树 的特点是: 每个节点的左儿子小于父节点,父节点又小于右儿子。 多叉树 的特点是: 每个节点有多个儿子,儿子之间的大小保证从左到右递增。 由于索引不止存在内存中,还会写到磁盘上,而读磁盘越多,查询效率越慢

MySQL 数据库表的约束

穿精又带淫゛_ 提交于 2020-02-15 05:06:46
数据库约束的种类 约束名 约束关键字 主键 primary key 唯一 unique 非空 not null 外键 foreign key 检查约束 check 注:mysql 不支持,sql支持 主键约束 创建主键方式 在创建表的时候给字段添加主键 字段名 字段类型 PRIMARY KEY 例1: CREATE TABLE tb_info ( id INT PRIMARY KEY, name VARCHAR(30), age INT ); 例2: CREATE TABLE tb_info ( id INT, name VARCHAR(30), age INT, PRIMARY KEY(id) ); 在已有表中添加主键 ALTER TABLE 表名 ADD PRIMARY KEY(字段名); 例: ALTER TABLE tb_info ADD PRIMARY KEY(id); 删除主键的方式 删除单表主键约束 ALTER TABLE 表名 DROP PRIMARY KEY; 删除有外键连接的表的主键 第一步:解除外键约束 ALTER TABLE 外键表 DROP FOREIGN KEY 外键名称 第二步:删除主键 ALTER TABLE 主键表 DROP PRIMARY KEY; 如:删除tb1的主键 这里有两个表,tb2的外键连接tb1的主键 第一步:解除与tb2的外键约束

mysql索引

蓝咒 提交于 2020-02-12 05:40:28
索引使用建议: a,经常检索的列 b,经常用于表连接的列 c,经常排序/分组的列 索引不使用建议: a,基数很低的列 b,经常用于表连接的列 c,经常排序/分组的列 innodb主键特点: a,索引定义时,若不显示包含主键,会隐式加入主键值; b,索引定义时,若显示包含主键,会加入主键值; c,在5.6.9后,优化器已经能自动识别索引末尾的主键值(index extensions),在这之前则需要显式加上主键列才可以被识别; d,修改主键必然重新拷贝整张表 主键的选择建议: a,对业务透明无意义,免收业务变化的影响; b,主键要很少修改和删除;(删除还好,影响不大,innodb小范围做数据页合并) c,主键最好是自增的; d,不要具有动态属性,例如最后修改时间戳;(如果经常变化会导致聚集索引的值发生变化,相应的导致btree索引值旋转、分裂、位移) innodb聚集索引选择顺序原则: a,显示声明的主键; b,第一个不包含null值的唯一索引列; c,内置的rowid(自增逻辑值,6byte且不可引用) innodb聚集索引不建议选用频繁更新、随机写入(离散IO) 唯一索引(unique key) a,不允许具有索引值相同的行,从而禁止重复的索引或键值; b,在唯一约束上,和主键一样(以myisam引擎为代表); c,和主键区别:1,唯一索引允许有空值(null) 2

MySQL主键和外键使用及说明

人盡茶涼 提交于 2020-02-12 05:29:36
摘自网上一个经典的例子:大哥和小弟 一、外键约束 MySQL通过外键约束来保证表与表之间的数据的完整性和准确性。 外键的使用条件:     1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持);    2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立;    3.外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以; 外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作; 外键的定义语法: [constraint symbol] foreign key [id] (index_col_name, ...) references tbl_name (index_col_name, ...) [on delete {restrict | cascade | set null | on action | set default}] [on update {restrict | cascade | set null | on action | set default}] 该语法可以在 create table 和 alter table 时使用,如果不指定constraint

数据库(二)

旧巷老猫 提交于 2020-02-10 16:37:41
作者:格物 https://shockerli.net/post/1000-line-mysql-note/ 选择类型 -- PHP角度 1. 功能满足 2. 存储空间尽量小,处理效率更高 3. 考虑兼容问题 -- IP存储 ---------- 1. 只需存储,可用字符串 2. 如果需计算,查找等,可存储为4个字节的无符号int,即unsigned 1) PHP函数转换 ip2long可转换为整型,但会出现携带符号问题。需格式化为无符号的整型。 利用sprintf函数格式化字符串 sprintf("%u", ip2long('192.168.3.134')); 然后用long2ip将整型转回IP字符串 2) MySQL函数转换(无符号整型,UNSIGNED) INET_ATON('127.0.0.1') 将IP转为整型 INET_NTOA(2130706433) 将整型转为IP 列属性(列约束) 1. PRIMARY 主键 - 能唯一标识记录的字段,可以作为主键。 - 一个表只能有一个主键。 - 主键具有唯一性。 - 声明字段时,用 primary key 标识。 也可以在字段列表之后声明 例:create table tab ( id int, stu varchar(10), primary key (id)); - 主键字段的值不能为null。 -

SQL数据库—<2>数据库基本操作(CRUD)

好久不见. 提交于 2020-02-08 11:24:40
学习基本操作语句之前先简单了解数据库的基本数据类型: 数据类型: 二进制数据:以十六进制形式存储 固定长度:binary 可变长度:varbinary 字符数据: char:定长 varchar:长度不同时,但是任何项长度不能超过8KB 日期时间数据: datatime(1753-1-1,9999-12-31) smalldatetime(1900-1-1,2079-6-6) 数值型数据 整型数据:bigint int samllint tinyint 实型数据:decimal : decimal[p(,s)] 其中p为总位数,即精度,s为小数位数,小数点算一位 float 货币数据: money 特殊数据类型: bit:true、false ; Yes、No 文本和图像数据类型: 文本:text 图像:image 简单书写规范 SQL语言中不区分大小写,SQL数据库中的数据是区分大小写的 遇到关键字可以用 [] 括号扩起来 注释: -- :单行注释 /* */:多行注释 更详细内容可以查阅资料 一、数据库操作:创建、删除、修改等基本操作 数据库的CRUD操作,C是指create新增,R是指retrieve检索,U是指update更改,D是指delete删除 使用SQL语句 1 create database 数据库名 --建,完成可用 USE 打开数据库。 2 drop

day35-存储引擎及创建表的约束

妖精的绣舞 提交于 2020-02-08 11:09:06
一 什么是存储引擎 mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制:比如处理文本用txt类型,处理表格用excel,处理图片用png等 数据库中的表也应该有不同的类型,表的类型不同,会对应mysql不同的存取机制,表类型又称为存储引擎。 存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方 法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和 操作此表的类型) 在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySql 数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据 自己的需要编写自己的存储引擎 SQL 解析器、SQL 优化器、缓冲池、存储引擎等组件在每个数据库中都存在,但不是每 个数据库都有这么多存储引擎。MySQL 的插件式存储引擎可以让存储引擎层的开发人员设 计他们希望的存储层,例如,有的应用需要满足事务的要求,有的应用则不需要对事务有这 么强的要求 ;有的希望数据能持久存储,有的只希望放在内存中,临时并快速地提供对数据 的查询。 二 mysql支持的存储引擎 MariaDB [(none)]> show

市政道桥表结构设计

前提是你 提交于 2020-02-08 02:46:31
智慧道桥监管平台数据库设计说明书 引言 编写目的 为了完成系统的数据结构设计,为下一步的开发做好准备,编写本文档。由于本系统目前是产品的第一个版本,而与竞争产品相比,系统在灵活配置、业务覆盖范围等方面会做比较大的改进。 本文档预期的读者是产品设计、开发人员和测试人员。 背景 产品名称:智慧道桥监管平台 任务提出者:北京数字政通科技股份有限公司 任务开发者:数据服务产品部 第一用户:城管局、市政处 术语定义 设计规范 数据库表规范 (1)表名格式:模块名_表含义名,如 认证中心人员表:auth_human;如果系统功能简单,没有划分为模块,则可以以系统英文名称的缩写作为前缀,否则以各模块的英文名称缩写作为前缀 (2)不再使用tc_,to_,tr_前缀 (3)表的名称必须易于理解,使用能表达功能的英文单词或缩写英文单词,词间以_分割 (4)在命名表时,用单数形式表示名称。例如,使用auth_human,而不是auth_humans (5)表名用小写 (6)表名称长度不能超过30个字符(几种数据库中Oracle要求最高) (7)职责相近的表,命名规则应该相同 数据库字段规范 (1)业务表须要有主键,例如自增主键 (2)字段名称必须易于理解,使用能表达功能的英文单词或缩写英文单词,词间以_分割 (3)字段名用小写,且需要加入中文注释 (4)字段名称长度不能超过30个字符

mysql数据库-索引-长期维护

╄→尐↘猪︶ㄣ 提交于 2020-02-08 02:32:35
############### 索引介绍 ############## """ 1. 索引介绍 需求: 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的, 也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。 说起加速查询,就不得不提到索引了。 索引: 简单的说,相当于图书的目录,可以帮助用户快速的找到需要的内容. 在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构。能够大大提高查询效率。 特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍. 本质: 索引本质:通过不断地缩小想要获取数据的范围来筛选出最终想要的结果, 同时把随机的事件变成顺序的事件,也就是说,有了这种索引机制,我们可以总是用同一种查找方式来锁定数据。 """ ############### 索引方法 ############## """ 2.索引方法 1. B+TREE 索引 B+树是一种经典的数据结构,由平衡树和二叉查找树结合产生,它是为磁盘或其它直接存取辅助设备而设计的一种平衡查找树, 在B+树中,所有的记录节点都是按键值大小顺序存放在同一层的叶节点中,叶节点间用指针相连,构成双向循环链表, 非叶节点(根节点、枝节点)只存放键值,不存放实际数据。 注意:通常其高度都在2