数据库主键

mysql自增主键清零方法

爱⌒轻易说出口 提交于 2019-12-05 16:39:28
MySQL数据库自增主键归零的几种方法 如果曾经的数据都不需要的话,可以直接清空所有数据,并将自增字段恢复从1开始计数: truncate table table_name; 1 当用户没有truncate的权限时且曾经的数据不需要时: 删除原有主键: ALTER TABLE 'table_name' DROP 'id'; 1 添加新主键: ALTER TABLE 'table_name' ADD 'id' int(11) NOT NULL FIRST; 1 设置新主键: ALTER TABLE 'table_name' MODIFY COLUMN 'id' int(11) NOT NULL AUTO_INCREMENT,ADD PRIMARY KEY(id); 1 当用户没有权限时: 可以直接设置数据表的 AUTO_INCREMENT 值为想要的初始值,比如10000: ALTER TABLE 'table_name' AUTO_INCREMENT= 10000; 来源: https://www.cnblogs.com/muxi0407/p/11933758.html

数据库行式存储和列式存储的区别

自作多情 提交于 2019-12-05 13:28:30
这里简单介绍数据库行式存储和列式存储的概念和它们之间的区别。 行式存储 传统的数据库是关系型的,按行来存储(二维表)数据,如下图: 其中,只有张三把一行数据填满了,李四王五赵六都没有填满。因为这里的行结构是固定的,每一行都一样,即使你不用,也必须要空到哪里,而不能没有。 列式存储 为了与传统数据库做区分,新型的数据库被叫做非关系型数据库,按列来存储数据,如下图: 原来张三的一列(单元格)数据对应现在张三的一行数据,原来张三的六列数据对应现在张三的六行数据。原来的六列数据是在一行,所以共用一个主键(即张三)。现在变成了六行数据,每行数据都需要一个主键(不然不知道这行数据是谁的),所以原来的主键(即张三的唯一标识)重复了六次。 由于原来的列变成了现在的行,有需要就加一行,没需要就不加,这样就不会造成空间的浪费。 行式存储和列式存储的区别 1.行式存储倾向于结构固定,列式存储倾向于结构弱化。 2.行式存储存储一行数据仅需要一个主键,列式存储存储一行数据需要多份主键。 3.列式存储存储的都是业务数据,而列式存储除了业务数据之外,还需要存储列名。 4.行式存储更像是一个Java Bean,所有的字段都提前定义好,且不能改变;列式存储更像是一个Map,不提前定义,随意往里面添加key/value。 "关于青春的故事,总是在晴朗的天气里,用最欢快的语气开头。就好像,讲故事的人

谈谈MySql索引

允我心安 提交于 2019-12-05 12:34:25
刚刚学习完丁奇老师《MySql 实战 45 讲》专栏中的索引部分,图文并茂的风格解开了我之前的许多疑惑,并且学习到许多新的东西,在此做个笔记,方便后续复习。由于 MySql 中存在多种存储引擎,每种存储引擎的实现方式都不太一样,而 InnoDB 在现在是比较流行的存储引擎,因此以下内容都是基于 InnoDB 讨论的。 索引是如何存储的 InnDB 索引是基于 N叉树实现的,为什么要使用 N叉树而不是二叉树呢?这是因为 MySql 中的数据都是存储在磁盘中的,我们查找数据都要进行 IO 操作,IO 操作比 CPU 运行的速度慢了一个等级,使用二叉树存储数据时,当我们从一个节点出发,要找它的子节点,就得进行一次 IO 操作,当数据库存储的数据多了之后,二叉树的层数变高,进行数据查找时 IO 操作也变多了。为了减少数据查询时的 IO 操作,InnDB 底层是使用 N叉树存储的,这个 N 取决于数据块的大小。 主键索引、非主键索引 上面说到,InnoDB 索引是基于 N叉树实现的,但是一个表我们需要建立的索引个数不止一个,因此每建立一个索引,InnoDB 就会创建一颗 N叉树来维护该索引数据,索引树建立完之后 InnDB 是如何通过索引找出我们所需要的数值的呢? 假设有一张表是这个样子的: create table T( id int primary key, k int not null

MySql学习笔记(基础)

ぃ、小莉子 提交于 2019-12-05 12:00:46
MySql学习笔记(基础) 学习笔记 数据库基础 SQL的基本操作 基本操作:CRUD(增删改查) 更新数据库 删除数据库 表操作 修改数据表 查看数据 更新数据 删除数据 中文数据问题 校对集问题 数据类型(列类型) 字段属性 范式: 蠕虫复制 查询数据 连接查询 学习笔记 数据库基础 1.什么是数据库? 数据库:database,存储数据的仓库 数据库:高效的存储和处理数据的介质(介质主要是两种:磁盘和内存) 2.数据库的分类? 数据库基于存储介质的不同:进行了分类,分为两大类:关系型数据库(SQL)和非关系型数据库(NoSQL:Not Noly SQL,不是关系型的数据库都叫做非关系型数据库) 3.不同的数据库阵营中的产品有哪些? 关系型数据库: 大型:Oracle,DB2 中型:SQL-SERVER,MySql等 小型:access等 非关系型数据库: memcached,mongodb,redis(同步到磁盘) 4.两种数据库阵营的区别? 关系型数据库:安全(保存磁盘基本不可能丢失)容易理解,比较浪费空间(二维表) 非关系型数据库:效率高,不安全(断电会丢失) 关系型数据库 1.什么是关系型数据库? 关系型数据库:是一种建立在关系模型(数学模型)上的数据库。 关系模型:一种所谓建立在关系上的模型,关系模型包含三个方面。 数据结构:数据存储的问题,二维表(有行和列)

MySQL学习笔记:高级篇

橙三吉。 提交于 2019-12-05 11:59:18
1. 存储引擎 1.1 InnoDB表引擎 1.2 MyISAM表引擎 1.3 其他的表引擎 2. 索引 2.1 索引对性能的影响 2.2 索引的使用场景 2.3 索引的类型 2.4 MySQL索引的创建原则 2.5 MySQL索引的注意事项 3. 查询优化 3.1 查找分析SQL查询慢的原因 3.2 优化查询过程中的数据访问 3.3 优化长难的查询语句 3.4 优化特定类型的查询语句 4. MySQL高可扩展和高可用 4.1 分区表的原理 4.2 分库分表的原理 4.2.1 水平分表 4.2.2 垂直分表 4.3 MySQL的复制原理及负载均衡 4.4 MySQL安全性 4.4.1 SQL查询的安全方案 4.4.2 MySQL的其他安全设置 引用资料 1. 存储引擎 1.1 InnoDB表引擎 默认事务型引擎,最重要最广泛的存储引擎,性能非常优秀 。数据存储在 共享表空间 ,可以通过配置分开。 对主键查询的性能高于其他类型的存储引擎 。内部做了很多优化,从磁盘读取数据时自动在内存构建hash索引, 插入数据时自动构建插入缓冲区 通过一些机制和工具支持真正的 热备份 ,支持 崩溃后的安全恢复 ,支持 行级锁 ,支持 外键 1.2 MyISAM表引擎 mysql5.5版本之前的默认存储引擎 ,拥有全文索引、压缩、空间函数。 不支持事务和行级锁 , 支持表锁 ,不支持奔溃后的安全恢复

MySQL入门笔记1

☆樱花仙子☆ 提交于 2019-12-05 11:34:51
SQL语句基本用法: 1. SQL语句分类: 1.1 数据定义语言 : 简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。关键字:create,alter(修 改),drop(删除)等 ; 1.2 数据操作语言:(重点掌握) 简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新。关键字:insert,delete,update 等; 1.3 数据控制语言: 简称DCL(Data Control Language),用来定义数据库的访问权限和安全级别,及创建用户; 1.4 数据查询语言:(重点掌握) 简称DQL(Data Query Language),用来查询数据库中表的记录。关键字:select,from,where等。 2.SQL通用语法: 2.1 语法格式: (1)SQL语句可以单行或多行书写,需以英文分号结尾; (2) 可使用空格、缩进、折行来增强语句的可读性(由于SQL语句只以分号作为结尾,所以原则上可以无限制空格 折行); (3)MySQL数据库的SQL语句不区分大小写,关键字建议使用大写,变量名使用小写,例如:SELECT * FROM user。 (4)SQL通用注释: 单行注释:--空格+注释内容 多行注释:/* 注释内容*/ (注:多行注释不能嵌套)

MySQL学习之基本语法

故事扮演 提交于 2019-12-05 11:15:43
MySQL学习笔记之数据库、数据表的基本操作 MySQL是一种小型关系型数据库管理系统 1.SQL语言的分类 数据定义语言(DDL): DROP、CREATE、ALTER等语句 数据操作语言(DML): INSERT、UPDATE、DELETE 数据查询语言(DQL): SELECT 数据控制语言(DCL): GRANT、REVOKE、COMMIT、ROLLBACK等语句 <!--more--> <br/> 2.数据库访问接口 ODBC(ODBC,开放数据库互连) ADO.NET(.NET) PDO(PHP) JDBC(JAVA) 用于Java应用程序连接数据库的标准方法,是一种用户执行SQL语句的Java API,可以为多种关系数据库提供统一访问,他是由一组用Java语言编写的类和接口组成。 <br/> 3.MySQL数据库的登录和访问 1. Windows 启动MySQL服务: net start MySQL 关闭MySQL服务: net stop MySQL 注意: 以上命令中 MySQL 是你MySQL服务的名称(Windows服务管理器,在搜索框中输入 services.msc ), 比如:你在服务管理器中看到你的MySQL服务名称是: mysql ,那么,你的命令就应该改为: 启动: net start mysql 关闭: net stop mysql 2. Linux

MySql笔记

你离开我真会死。 提交于 2019-12-05 11:06:28
1:创建时;【column】不能使用关键字 2:多对一,一对多:【name】与【classs】与【column】看准 进入命令行,windows cmd,连接: mysql -u 用户名 -p密码 -h 服务器IP地址 -P 服务器端MySQL端口号 -D 数据库名 SQL的分类: 数据查询语言DQL(查询) select 数据操纵语言DML(对数据增删改) insert,delete,update 数据定义语言DDL(对表结构增删改) create,drp,alter 事务控制语言TCL(事务提交回滚) commit,rollback 数据控制语言DCL(创建用户授权) grant,revoke show variables like '%char%'; --查看字符集 select version(); -- 查看数据库版本 CREATE DATABASE cs; -- 创建数据库 DROP DATABASE cs; -- 删除数据库 USE cs; -- 使用这个数据库 SELECT DATABASE(); -- 当前使用的数据库 source ***.sql; -- 导入sql文件,运行 SHOW TABLES; -- 查看数据库下的表 DESC 表名; -- 查看表结构 ALTER TABLE form1 DROP COLUMN 列名; -- 删除指定字段 ALTER

关于数据库主键和外键

删除回忆录丶 提交于 2019-12-05 06:45:41
关于数据库主键和外键(终于弄懂啦) 一、什么是主键、外键: 关系型 数据库 中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 课程表(课程编号,课程名,学分) 其中课程编号是唯一的,课程编号就是一个主键 成绩表(学号,课程号,成绩) 成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以 学号和课程号的属性组是一个主键 成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键 同理 成绩表中的课程号是课程表的外键 定义主键和外键主要是为了维护关系数据库的完整性,总结一下: 1.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。 身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。 2.外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。 比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。 二、 主键、外键和索引的区别 主键、外键和索引的区别? 主键 外键 索引 定义: 唯一标识一条记录,不能有重复的,不允许为空 表的外键是另一表的主键, 外键可以有重复的,

mysql PRIMARY KEY约束 语法

北城余情 提交于 2019-12-05 04:21:39
mysql PRIMARY KEY约束 语法 作用: PRIMARY KEY 约束唯一标识数据库表中的每条记录。 环形直线电机 说明: 主键必须包含唯一的值。主键列不能包含 NULL 值。每个表都应该有一个主键,并且每个表只能有一个主键。 mysql PRIMARY KEY约束 示例 // 在 "Persons" 表创建时在 "Id_P" 列创建 PRIMARY KEY 约束 CREATE TABLE Persons(Id_P int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),PRIMARY KEY (Id_P)); 来源: https://www.cnblogs.com/furuihua/p/11905387.html