数据库主键

mysql面试题目笔记 <非原创> (作为自己的参考资料)

a 夏天 提交于 2019-12-01 11:58:10
1.主键超键候选键外键是什么? 定义: 超键:在关系中可以唯一标识元组的属性集。 初始键:不包含多余属性的超键。 主键:用户选作元组标识的一个附加键程序主键。 外键:如果关系R中的属性集是关系L中的主键,那么该属性集为关系R的外键。 超键 在关系中能唯一标识元组的属性集称为关系模式的超键。 这样我们从示例中可以发现学号是标识学生实体的唯一标识。那么该元组的超键就为学号。 除此之外我们还可以把它跟其他属性组合起来,比如: ( 学号 , 性别 ) ( 学号 , 年龄 ) 这样也是超键。 初始键 排除多余属性的超键为预期键。 根据示例可知,学号是一个可以唯一标识元组的唯一标识,因此学号是一个附加键,实际上,指向键是超键的子集,而非(学号,年龄)是超键,但是它不是预设键。因为它还有了额外的属性。 主键 用户选择的预设键作为该元组的唯一标识,那么它就以此为主键。 简单的说,示例中的元组的扩展键为学号,但是我们将他作为该元组的唯一标识,那么学号就以此为主。 外键 外键是相对于主键的,某些在学生记录里,主键为学号,在成绩单表中也有学号插入,因此学号为成绩单表的外键,为学生表的主键。 总结 主键为预期键的子集,外部键为超键的子集,而外键的确定是相对于主键的。 2.数据库事务的四个特性: ACID:原子性,一致性,隔离性,持久性。 原子性:数据库的所有操作要么完成,要么全部不完成

mysql操作规范建议

℡╲_俬逩灬. 提交于 2019-12-01 10:27:00
作者: 听风,原文地址: https://www.cnblogs.com/huchong/p/10219318.html 。 数据库命令规范 数据库基本设计规范 所有表必须使用 Innodb 存储引擎 数据库和表的字符集统一使用 UTF8 所有表和字段都需要添加注释 尽量控制单表数据量的大小,建议控制在 500 万以内。 谨慎使用 MySQL 分区表 6.尽量做到冷热数据分离,减小表的宽度 禁止在表中建立预留字段 禁止在数据库中存储图片,文件等大的二进制数据 禁止在线上做数据库压力测试 禁止从开发环境,测试环境直接连接生成环境数据库 数据库字段设计规范 优先选择符合存储需要的最小的数据类型 避免使用 TEXT,BLOB 数据类型,最常见的 TEXT 类型可以存储 64k 的数据 避免使用 ENUM 类型 尽可能把所有列定义为 NOT NULL 使用 TIMESTAMP(4 个字节) 或 DATETIME 类型 (8 个字节) 存储时间 同财务相关的金额类数据必须使用 decimal 类型 索引设计规范 限制每张表上的索引数量,建议单张表索引不超过 5 个 禁止给表中的每一列都建立单独的索引 每个 Innodb 表必须有个主键 常见索引列建议 5.如何选择索引列的顺序 避免建立冗余索引和重复索引(增加了查询优化器生成执行计划的时间) 对于频繁的查询优先考虑使用覆盖索引 8.索引

mysql基本命令

大城市里の小女人 提交于 2019-12-01 09:42:09
开启和关闭mysql服务 Windows下开启和关闭mysql服务 1 net start mysql # 开启mysql服务 2 net stop mysql # 关闭mysql服务 没有重启mysql服务这个命令。 Linux下 1 service mysql start | stop | restart | status start 启动服务 stop 停止服务 restart 重启服务 status 查看服务状态 登录mysql数据库 1 mysql -h hostname -u username -p 如何hostname是本机的话,要替换为127.0.0.1或者是localhost 例子:mysql -h localhost -uroot -p 这样输完之后会换行让你输密码,我们也可以直接把密码写在-p后面,当然这样不安全。 更改root密码 1 /usr/bin/mysqladmin -u root password '123456' 执行完这条命令后,root的密码改为123456。 添加新的用户 先用root登进数据库,然后 1 mysql > GRANT ALL PRIVILEGES ON *.* TO jack@localhost IDENTIFIED BY '123456' WITH GRANT OPTION; 格式:grant 权限 on 数据库.* to

第三次团队作业

≯℡__Kan透↙ 提交于 2019-12-01 08:55:39
第一次团队作业 序言 所属课程 https://edu.cnblogs.com/campus/xnsy/2019autumnsystemanalysisanddesign 作业要求 https://www.cnblogs.com/harry240/p/11515702.html 作业目标 (1)团队成员的学号列表; (2)本阶段任务分工情况; (3)概要设计:软件体系结构,及主要业务模块描述; (4)数据库设计:概念模型和逻辑模型; (5)下阶段详细工作计划; (6)下阶段任务分工。 一、团队简介 团队名称:卓越Code 团队口号:宁为代码累弯腰,不为bug点提交 姓名 学号 博客园 王柄钞(队长) 201731062518 https://www.cnblogs.com/Slow-Walker/ 曾文杰 201731062520 https://www.cnblogs.com/zwj-958654064/ 魏家田 201731062307 https://www.cnblogs.com/dwyy666/ 魏川程 201731062312 https://www.cnblogs.com/chopinc/ 罗伟诚 201731062309 https://www.cnblogs.com/lwcblogs/ 杨苹 201731062404 https://www.cnblogs.com

mysql之索引原理

不想你离开。 提交于 2019-12-01 08:03:22
一 初识索引 为什么要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。说起加速查询,就不得不提到索引了。 什么是索引? 索引在MySQL中也叫是一种“键”,是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能 非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。 索引优化应该是对查询性能优化最有效的手段了。索引能够轻易将查询性能提高好几个数量级。 索引相当于字典的音序表,如果要查某个字,如果不使用音序表,则需要从几百页中逐页去查。 你是否对索引存在误解? 索引是应用程序设计和开发的一个重要方面。若索引太多,应用程序的性能可能会受到影响。而索引太少,对查询性能又会产生影响,要找到一个平衡点,这对应用程序的性能至关重要。一些开发人员总是在事后才想起添加索引----我一直认为,这源于一种错误的开发模式。如果知道数据的使用,从一开始就应该在需要处添加索引。开发人员往往对数据库的使用停留在应用的层面,比如编写SQL语句、存储过程之类,他们甚至可能不知道索引的存在,或认为事后让相关DBA加上即可。DBA往往不够了解业务的数据流,而添加索引需要通过监控大量的SQL语句进而从中找到问题

常见的五种约束

柔情痞子 提交于 2019-12-01 07:57:17
1. 主键约束(Primay Key Coustraint) 唯一性,非空性 2. 外键约束 (Foreign Key Counstraint)需要建立两表间的关系并引用主表的 3. 唯一约束 (Unique Counstraint)唯一性,可以空,但只能有一个 4. 默认约束 (Default Counstraint)该数据的默认值 5. 检查约束 (Check Counstraint)对该列数据的范围、格式的限制(如:年龄、性别等) 1 . Primary Key 约束 在表中常有一列或多列的组合,其值能唯一标识表中的每一行。 这样的一列或多列成为表的主键(PrimaryKey)。一个表只能有一个主键,而且主键约束中的列不能为空值。只有主键列才能被作为其他表的外键所创建。 创建主键约束可以右键单击表,选择设计 。 选中要创建主键的列,然后单击上面的小钥匙。 也可以右键需要创建主键的列,然后单击小钥匙。 2 . Foreign Key 约束 外键约束是用来加强两个表(主表和从表)的一列或多列数据之间的连接的。创建外键约束的顺序是先定义主表的主键,然后定义从表的外键。也就是说只有主表的主键才能被从表用来作为外键使用,被约束的从表中的列可以不是主键,主表限制了从表更新和插入的操作。 右键单击需要设置外键的列(此时的表是作为从表在外键中出现),选择关系。 接下来点击添加 -->

MySQL手册

☆樱花仙子☆ 提交于 2019-12-01 04:56:52
/* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */ mysqld --skip-grant-tables – 修改root密码 密码加密函数password() update mysql.user set password=password(‘root’); SHOW PROCESSLIST – 显示哪些线程正在运行 SHOW VARIABLES – /* 数据库操作 */ ------------------ – 查看当前数据库 select database(); – 显示当前时间、用户名、数据库版本 select now(), user(), version(); – 创建库 create database[ if not exists] 数据库名 数据库选项 数据库选项: CHARACTER SET charset_name COLLATE collation_name – 查看已有库 show databases[ like ‘pattern’] – 查看当前库信息 show create database 数据库名 – 修改库的选项信息 alter database 库名 选项信息 – 删除库 drop database[ if

MySQL学习之路4(1)

三世轮回 提交于 2019-12-01 04:50:38
数据表的基本操作1 1. 创建数据表 所谓的创建数据表,指在已经创建好的数据库中建立新表。 1.1创建表的语法形式 数据表属于数据库,所以在创建数据表之前应使用“USE <数据库名>”,即指定当前操作在哪里进行,如果没有选择数据库,会抛出“No database selected”的错误。 创建数据表的语句 为 CREATE TABLE 语法规则如下: CREATE TABLE<表名> ( 字段名1 数据类型 [列级别约束条件] [默认值], 字段名2 数据类型 [列级别约束条件] [默认值], …… [表级别约束条件] ); 使用CREATE TABLE 创建表时,要指定以下信息: 创建的表的名称,名称不区分大小写,但是不能使用SQL语言的关键字,如:DROP、ALTER、INSERT等。 表中的每一个列(即字段)的名称和数据类型,要是创建多个字段,要用逗号隔开。 例子:创建一个关于班级同学的表格class,结构如下表所示: 使用的语句如下: 上图用了 SHOW TABLES; 语句查看数据表是否创建成功。 1.2使用主键约束 主键,又称为主码,是表中一列或多列的组合。要使用主键约束,主键列的数据必须唯一。简言之,主键就是一个唯一的标识表中的一条记录,可结合外键来定义不同数据表之间的关系爱,加快数据库查询的速度。主键和记录之间的关系就好比通过我们的身份证号可以唯一标识一个人

MySQL数据库学习

百般思念 提交于 2019-12-01 04:47:22
虽然笔者从事的是Android客户端的开发,平时和数据库打的交道并不多,但是我们对于数据库这一块的学习还是很重要的,今天笔者想总结下MySQL关系型数据库的一些常用知识点 数据库概述 一、常见的概念 数据库(DataBase):数据库是按照数据结构来组织、存储和管理数据的仓库。数据库管理系统(Database Management SystemDBMS):是专门用于管理数据库的计算机系统软件。数据库管理系统能够为数据库提供数据的定义、建立、维护、查询和统计等操作功能,并完成对数据完整性、安全性进行控制的功能。 二、发展历程 我们一般说的数据库,就是指的DBMS: 数据库服务器。数据库技术发展历程如下: 层次数据库和网状数据库技术阶段:使用指针来表示数据之间的联系。 关系数据库技术阶段:经典的里程碑阶段。代表DBMS有Oracle、DB2、MySQL、SQL Server等。 后关系数据库技术阶段:关系型数据库存在数据模型,性能,拓展伸缩性的缺点,出现了: ORDBMS:面向对象数据库技术。 NoSQL :结构化数据库技术。 随着大数据的不断发展,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速,产生了一系列出色的NoSQL数据库。 常见的NoSQL数据库分为四大类 键值存储数据库:Oracle BDB,Redis,BeansDB 列式储数数据库

Hibernate 主键生成策略

那年仲夏 提交于 2019-12-01 02:17:07
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.sasa.domain"> <class name="account" table="account"> <id name="id" column="id"> <!-- generator 主键生成策略 --> <!-- identity : 主键自增,由数据库来维护主键 increment: 主键自增,由hibernate维护主键,每次新增时查找最大的主键,+1作为新主键 sequence : Oracl主键生成策略 hilo :高低位算法 native :hilo、identity、sequence自动三选一 uuid :生成随机字符串 assigned :自然主键,由开发人员自己指定主键值 --> <generator class="native"></generator> </id> <!-- property 普通属性 --> <property name=