数据表

MySQL 主键与索引的联系与区别分析

自作多情 提交于 2020-01-07 09:19:51
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 关系数据库依赖于主键,它是数据库物理模式的基石。主键在物理层面上只有两个用途: 惟一地标识一行。 作为一个可以被外键有效引用的对象。 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。下面是主键和索引的一些区别与联系。 1. 主键一定是唯一性索引,唯一性索引并不一定就是主键。 所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。主键除了上述作用外,常常与外键构成参照完整性约束,防止出现数据不一致。数据库在设计时,主键起到了很重要的作用。 主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。 2. 一个表中可以有多个唯一性索引,但只能有一个主键。 3. 主键列不允许空值,而唯一性索引列允许空值。 4. 索引可以提高查询的速度。 其实主键和索引都是键,不过主键是逻辑键,索引是物理键,意思就是主键不实际存在,而索引实际存在在数据库中,主键一般都要建,主要是用来避免一张表中有相同的记录,索引一般可以不建,但如果需要对该表进行查询操作,则最好建,这样可以加快检索的速度。

如何理解关系型数据库的常见设计范式?

你说的曾经没有我的故事 提交于 2020-01-07 03:20:47
作者:知乎用户 链接:https://www.zhihu.com/question/24696366/answer/29189700 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 ============ 2015-1-6 更新,补充了 BCNF 的解释 ============ 国内绝大多数院校用的王珊的《数据库系统概论》这本教材,某些方面并没有给出很详细很明确的解释,与实际应用联系不那么紧密,你有这样的疑问也是挺正常的。 我教《数据库原理》这门课有几年了,有很多学生提出了和你一样的问题,试着给你解释一下吧。 (基本来自于我上课的内容,某些地方为了不过于啰嗦,放弃了一定的严谨,主要是在“关系”和“表”上) 首先要明白”范式(NF)”是什么意思。按照教材中的定义,范式是“ 符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度 ”。 很晦涩吧?实际上你可以把它粗略地理解为 一张数据表的表结构所符合的某种设计标准的级别 。就像家里装修买建材,最环保的是E0级,其次是E1级,还有E2级等等。 数据库范式也分为1NF,2NF,3NF,BCNF,4NF,5NF。 一般在我们设计关系型数据库的时候,最多考虑到BCNF就够 。符合高一级范式的设计,必定符合低一级范式,例如符合2NF的关系模式,必定符合1NF。

通用mapper踩坑

你。 提交于 2020-01-06 21:36:08
通用mapper踩坑 1.通用mapper只用于单表的增删改查。 2.定义bean是必须是pojo包装类,否则比如在插入数据时数据表会显示为空。 1.通用mapper只用于单表的增删改查。 2.定义bean是必须是pojo包装类,否则比如在插入数据时数据表会显示为空。 来源: CSDN 作者: 史蒂夫:王 链接: https://blog.csdn.net/napoluen/article/details/103847295

数据库相关操作

大兔子大兔子 提交于 2020-01-04 02:44:25
数据库操作: 查看所有数据库 show databases ; 创建数据库 create database 数据库名 ; 使用数据库 use 数据库名 ; 查看当前使用的数据库 select database ( ) ; 删除数据库 drop database 数据库名 ; 数据表操作 : 数据表的相关约束 主键约束(Primary Key) 外键约束(Foreign Key) 非空约束(Not Null) 唯一性约束(Unique) 默认约束(Default) 创建表结构 create table 表名 ( 字段名 类型名 约束 ) ; 查看所有数据表: show tables ; 删除表: drop table 表名 ; 数据表增删改查: 增加数据 全列插入: insert 表名 values ( . . . 数据 . . . ) ; 部分插入: insert 表名 ( 列 1 , . . . ) values ( 值 1 , . . . ) ; 多行插入: insert 表名 ( 列 1 , . . . ) values ( 值 1 , . . . ) , ( 值 2 , . . . ) ; 查找数据 查询所有列: select * from 表名 ; 指定条件查询: select * from 表名 where 查询条件 ; 查询指定列: select 列 1 , 列 2

Django 数据表更改

时光总嘲笑我的痴心妄想 提交于 2020-01-04 01:29:55
Django 数据表更改 « Django 开发内容管理系统(第四天) Django 后台 » 我们设计数据库的时候,早期设计完后,后期会发现不完善,要对数据表进行更改,这时候就要用到本节的知识。 Django 1.7.x 和后来的版本: Django 1.7.x 及以后的版本集成了 South 的功能, 在修改models.py了后运行: 1 2 python manage.py makemigrations python manage.py migrate 这两行命令就会对我们的models.py 进行检测,自动发现需要更改的,应用到数据库中去。 Django 1.6.x 及以前: 写过Django项目的同学,必然会遇到这个问题: 在Django 1.6以及以前的版本中,我们测试,当发现model要改,怎么办? 我们修改了 models.py 之后,我们运行: 1 python manage.py syncdb 这句话只会将我们在 models.py 中新加的类创建相应的表。 对于原来有的,现在删除了的类,Django 会询问是否要删除数据库中已经存在的相关数据表。 如果在原来的类上增加字段或者删除字段,可以参考这个命令: 1 python manage.py sql appname 给出的SQL语句,然后自己手动到数据库执行 SQL 。但是这样非常容易出错! Django

如何管理和使用哪些命令操作MySQL数据库?(基本操作,SQL语言,DDL,DML,DQL,DCL,Windows字符和图形界面MySQL安装)

不想你离开。 提交于 2020-01-02 21:32:29
文章目录 前言 一:数据库基本操作命令 1.1:MySQL常用管理操作是哪些? 1.2:查看数据库列表信息的命令是? 1.3:查看数据库中的数据表信息命令是? 1.4:显示数据表的结构(字段)命令是? 1.5:SQL语言概述 二:SQL操作管理命令 2.1:DDL操作命令 2.1.1:DDL语句是什么作用? 2.1.2:DDL语句创建库,表的命令是? 2.1.3:DDL语句删除库,表的命令是? 2.2:DML操作命令 2.2.1:DML语句的作用是? 2.2.2:向数据表中插入新的数据记录命令是? 2.2.3:修改,更新数据表中的数据记录的命令是? 2.2.4:在数据表中删除指定的数据记录命令是? 2.2.5:查看表结构命令是? 2.3:DQL操作命令 2.3.1:DQL语句的作用是? 2.3.2:不指定条件查询命令是? 2.3.3:指定条件查询的命令是? 2.4:DCL操作命令 2.4.1:DCL语句的作用是? 2.4.2:设置用户权限的命令是? 2.4.3:查看用户权限的命令是? 2.4.4:撤销用户权限的命令是? 三:实例演示 3.1:建立公司IT运营部工资表,需求 3.2:实操 四:Windows字符界面MySQL安装使用 4.1:准备软件包 4.2:安装 4.3:设置环境变量 五:Windows图形界面MySQL安装使用 5.1:准备软件包 5.2:安装 前言 MySQL

HBase:项目之电信信号强度诊断介绍(第三阶段(离线数据整理))

情到浓时终转凉″ 提交于 2020-01-02 18:07:09
所需要的前端页面 Hbase项目资源 前端页面文件过大 网盘没有会员 前端页面请私信联系我 离线数据整理 目标:将原始数据根据业务需求经过处理以后写入“结果表”中。 课程计划: 业务SQL语句编写 整理SQL语句生成结果表的结构及字段 根据结果表所需的字段,在原始表中抽取该字段 数据加工及入库 创建索引 数据整理 目标:根据业务需求梳理出需要的SQL语句 这里的结果表并非是经过计算的后的汇聚数据,而是经过处理后的明细数据。前端报表中所需要展示的数据为明细数据,这些明细数据会最终支撑前段的报表。这里的结果数据存储,我们使用Phenix技术。后续会详细介绍Phenix。 本项目中使用到的原始数据表为6张数据表,分别是networkqualityinfo、app_traffic、cell_strength、data_connection、device、network。 结果数据表同样为5张数据表,分别是tb_counts、NWQuality、Signal_Strength、app_traffic、DataConnection。 原始表与结果表的对应关系如下 来源: CSDN 作者: 真情流露哦呦 链接: https://blog.csdn.net/weixin_43563705/article/details/103801510

manage.py命令

主宰稳场 提交于 2020-01-02 01:14:41
一、manage.py命令选 manage.py是每个Django项目中自动生成的一个用于管理项目的脚本文件,需要通过python命令执行。manage.py接受的是Django提供的内置命令。 内置命令包含 check dbshell diffsettings flush makemigrations migrate runserver shell startapp startproject test 其实有三种方式,可以在cmd窗口中执行Django提供的内置命令: $ django-admin < command> [options] $ python manage.py < command> [options] $ python -m django < command> [options] 其中 1、django-admin是用于管理Django的命令行工具集,当我们成功安装Django后,在操作系统中就会有这个命令,但是根据安装方式或者系统环境的不同,你可能需要配置一下调用路径。在Linux下,该命令一般位于site-packages/django/bin,最好做一个链接到/usr/local/bin,方便调用。Windows下可以配置系统环境变量 2、manage.py则是每个Django项目中自动生成的一个用于管理项目的脚本文件

mysql my.ini 详解

有些话、适合烂在心里 提交于 2020-01-01 13:18:41
linux下mysql配置文件my.cnf详解【转】 basedir = path 使用给定目录作为根目录(安装目录)。 character-sets-dir = path 给出存放着字符集的目录。 datadir = path 从给定目录读取数据库文件。 pid-file = filename 为mysqld程序指定一个存放进程ID的文件(仅适用于UNIX/Linux系统); Init-V脚本需要使用这个文件里的进程ID结束mysqld进程。 socket = filename 为MySQL客户程序与服务器之间的本地通信指定一个套接字文件(仅适用于UNIX/Linux系统; 默认设置一般是/var/lib/mysql/mysql.sock文件)。在Windows环境下,如果MySQL客户与服务器是通过命名管道进行通信 的,–sock选项给出的将是该命名管道的名字(默认设置是MySQL)。 lower_case_table_name = 1/0 新目录和数据表的名字是否只允许使用小写字母; 这个选项在Windows环境下的默认设置是1(只允许使用小写字母)。 mysqld程序:语言设置 character-sets-server = name 新数据库或数据表的默认字符集。为了与MySQL的早期版本保持兼容,这个字符集也可以用–default-character-set选项给出;

关系模型

北城余情 提交于 2020-01-01 07:32:02
关系模型概念 关系模型认为所有数据都可以表示为数学上的关系,即集合中两个元素之间的连接。 这一概念在关系型数据库中体现为数据表。数据表中的每一行保存一条记录称做tuple(元组),每一列表示数据记录的一个属性称做domain(域)。 每个数据都与一个记录和一个属性关联,即两者的关系。而数据表则是记录和属性的关系集。 Key Super Key(超码): 是一个或多个属性的集合,可以唯一确定一条记录。 Candidate Key(候选码): 删除candidate key中任意一个属性都会使其失去唯一确定记录的特性。 Primary Key(主码): 从candidate key中选择一个作为对记录的唯一标识。 Foreign Key(外码): 关系模式R的属性A参照关系模式S的主键, 称A为R中的外键. Primary Key中的属性称为主属性, 不在Primary Key中的属性称为非主属性. Primary Key一般起约束作用,不能重复不能为空, 防止重复(unique)或无法查询(not null)的情况发生,称为实体完整性约束(Entity integrity)。 Forign Key用来用数据表S来保证数据表R的完整性,R中Foreign Key属性A参照关系S,则R.A中的值必须在S的主键中出现过, 称为参照完整性约束(Referential integrity)。