主键约束

郝斌 SqlServer2005 学习笔记

不打扰是莪最后的温柔 提交于 2020-03-11 23:56:26
1.0 什么是数据库 狭义:存储数据的仓库。 广义:可以对数据进行存储和管理的软件以及数据本身统称为数据库。 另外一种说法:数据库是由表、关系、操作组成。 2.0 为什么要学习数据库 几乎所有的应用软件的后台都需要数据库。 数据库存储数据占用的空间小,容易持久化。 存储比较安全。 容易维护和升级。 数据移植比较容易。 简化对数据的操作。 3.0 数据结构和数据库的区别 数据结构是在系统软件级别研究数据的存储和操作。(内存) 数据库是在应用软件级别研究数据的存储和操作。(外部存储) 4.0 数据库中连接概念 5.0 对内存数据的操作,编程语言更加灵活;对于硬盘数据的操作,通过数据库管理软件更加容易。但是对于复杂的数据操作,当通过数据库语言没法操作时,通常把数据先写入内存通过编程语言处理以后,再存入数据库。 6.0 建议初学者从三个方面学习数据库  数据库是如何存储数据的 字段、记录、表、约束  数据库是如何操作数据的 insert、update、delete、TL-SQL、存储过程、函数、触发器  数据库是如何显示数据的 select(查询) 7.0 创建数据库 8.0 删除数据库 9.0 数据库的备份和还原 10.0 数据库的分离和附加 11.0 用户的创建和密码修改 安全性→登录名 12.0 表以及表相关的基本概念 字段(也叫 列):模拟的是某一个事物的某一个静态的特征。

7、Java之MySQL

蓝咒 提交于 2020-03-10 17:10:39
1、数据库 1 数据库概念(了解) 1.1 什么是数据库 数据库就是用来 存储和管理 数据的仓库! 数据库存储数据的优先:可存储大量数据; l 方便检索; l 保持数据的一致性、完整性; l 安全,可共享; l 通过组合分析,可产生新数据。 1.2 数据库的发展历程 l 没有数据库,使用磁盘文件存储数据; l 层次结构模型数据库; l 网状结构模型数据库; l 关系结构 [c1] 模型数据库:使用二维表格来存储数据; l 关系-对象模型数据库;   MySQL就是关系型数据库! 1.3 常见数据库 l Oracle(神喻):甲骨文(最高!); l DB2:IBM; l SQL Server:微软; l Sybase:赛尔斯; l MySQL:甲骨文; 1.4 理解数据库 l RDBMS = 管理员(manager)+仓库(database) l database = N个table l table: 表结构:定义表的列名和列类型! 表记录:一行一行的记录! 我们现在所说的数据库泛指“关系型数据库管理系统(RDBMS - Relational database management system [c2] )”,即“数据库服务器”。 当我们安装了数据库服务器后,就可以在数据库服务器中创建数据库,每个数据库中还可以包含多张表。 数据库表就是一个多行多列的表格。在创建表时

mysql主键和外键约束

筅森魡賤 提交于 2020-03-10 05:09:32
@Adrian 主键: 选取设置主键约束的字段: 主键约束即在表中定义一个主键来唯一确定表中每一行数据的标识符。主键可以是表中的某一列或者多列的组合,其中由多列组合的主键称为复合主键。主键应该遵守下面的规则: 每个表只能定义一个主键。 主键值必须唯一标识表中的每一行,且不能为 NULL,即表中不可能存在两行数据有相同的主键值。这是唯一性原则。 一个列名只能在复合主键列表中出现一次。 复合主键不能包含不必要的多余列。当把复合主键的某一列删除后,如果剩下的列构成的主键仍然满足唯一性原则,那么这个复合主键是不正确的。这是最小化原则。 在创建表时设置主键约束: 方法一: <字段名> <数据类型> PRIMARY KEY [默认值] mysql> create table tb_emp3 -> ( -> id int(11) primary key, -> name varchar(25), -> deptId int(11), -> salary float -> ); Query OK, 0 rows affected, 2 warnings (0.78 sec) mysql> desc tb_emp3; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key |

数据库部分 面经集合

大兔子大兔子 提交于 2020-03-08 18:21:18
1、Mysql 主键是什么概念 “主键(PRIMARY KEY)”的完整称呼是“主键约束”。MySQL 主键约束是 一个列或者列的组合 ,其值能 唯一地标识表中的每一行。 这样的一列或多列称为表的主键,通过它可以强制表的实体完整性。 2、主键和索引的关系与区别 主键一定是唯一性索引,唯一性索引并不一定就是主键。 一个表中可以有多个唯一性索引,但只能有一个主键。 主键列不允许空值,而唯一性索引列允许空值。 主键和索引都是键,不过主键是逻辑键,索引是物理键,意思就是 主键不实际存在,而索引实际存在数据库中 3、 MyISAM与Innodb MySQL有多种存储引擎,每种存储引擎有各自的优缺点,比较常用的是 MyISAM 与 Innodb: Innodb 支持事务,支持外键;MyISAM 都不支持。 MyISAM 适合查询以及插入为主的应用,其索引和数据是分开的,而且其索引是压缩的,可以更好地利用内存。所以它的查询性能明显优于INNODB。压缩后的索引也能节约一些磁盘空间。 InnoDB 事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键。MySQL 5.5.5 之后,InnoDB 作为默认存储引擎。 4、辅助索引、聚集索引与非聚集索引 索引是关系型数据库中给数据库表中一列或多列的值排序后的存储结构,数据库的主流索引结构有 B+ 树以及 Hash 结构,B

主键索引和唯一索引的区别

北战南征 提交于 2020-03-06 10:29:50
-- 区别 主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。 唯一性索引列允许空值,而主键列不允许为空值。 主键列在创建时,已经默认为空值 + 唯一索引了。 主键可以被其他表引用为外键,而唯一索引不能。 一个表最多只能创建一个主键,但可以创建多个唯一索引。 主键更适合那些不容易更改的唯一标识,如自动递增列、身份证号等。 在 RBO 模式下,主键的执行计划优先级要高于唯一索引。 两者可以提高查询的速度。 -- 创建一张仅包含主键和唯一索引的表 CREATE TABLE test (PrimaryKey VARCHAR2(20), UniqueKey VARCHAR2(20) ); -- 分别创建主键和唯一索引,语法不同 ALTER TABLE test ADD CONSTRAINT test_PrimaryKey PRIMARY KEY (PrimaryKey); CREATE UNIQUE INDEX test_UniqueKey ON test (UniqueKey); -- 在 USER_INDEXES 中可以看到两个索引名称 SELECT table_name,table_type,index_name,index_type,uniqueness FROM USER_INDEXES WHERE

sqlite3遇到问题总结 1

懵懂的女人 提交于 2020-03-05 08:17:41
把工作中遇到的sqlite3问题,总结一下. www.cnblogs.com/scorpiozj rowid和 Integer主键及自增属性 大多数情况下,sqlite3的表都有一个rowid(也叫oid,_rowid_),这是一个64位的整数,并作为sqlite存储结构B树的主键.因此使用rowid查询会比以其他设定的主键查询,速度会非常快. 在做插入操作的时候,对于rowid的值通常情况下不要去指定,让系统自己去决定该去何值。因为sqlite会通过SQLITE_SEQUENCE来追踪表的rowid取值情况.而且sqlite定义了rowid的取值算法:在未超出rowid的范围内,待插入记录的rowid总是表中存在过的的rowid最大值+1。比如依次插入5条记录,此时最后一条记录的rowid是5,如果把这条记录删除再插入新记录,此时新纪录的rowid是6.而当rowid达到所能表达的最大值时,这时如果有新纪录要插入,系统就会随机从之前的没有使用过的正整数中随机取一个作为rowid(就是之前删除过的).若没有未使用的正整数并且你没有在插入的时候制定rowid为某一个负数的话,系统就会抛出SQLITE_FULL的错误. 如果在创建表的时候设置了主键,并且设置主键的那列是integer(不是int,short integer等等),并且主键没有设定降序时,这时的主键是rowid的别名

[搜片神器]服务器SQL2005查询分页语句你理解了么

孤街浪徒 提交于 2020-03-03 14:02:51
在 sosobt.com 网站准备采用Lucence.net来进行索引处理搜索慢问题的时候,突然发现常用的分页获取数据的row_number也支持不住了,后期查到200多万的时候非常慢(总数据有500万),经过网上查询分析一些资料后,基本上搞明白是什么原因导致的,顺便纪录一下解决方案。 ------------------------------------ 网上找的几种sqlserver2005高效分页sql查询语句 top方案: sql codeselect top 10 * from table1 where id not in(select top 开始的位置 id from table1) max: sql codeselect top 10 * from table1 where id>(select max(id) from (select top 开始位置 id from table1order by id)tt) row: sql codeselect * from ( select row_number()over(order by tempcolumn)temprownumber,* from (select top 开始位置+10 tempcolumn=0,* from table1)t )tt where temprownumber>开始位置 3种分页方式

主键和索引的区别

删除回忆录丶 提交于 2020-03-03 09:15:55
主键(PRIMARY KEY) 表通常具有包含唯一标示表中每一行的值的一列或者一组列。这样的一列或者多列称为表的主键(PK),用于强制表的尸体完整性。在创建或者修改表时,您可以通过定义PK约束来创建主键。 一个表只能有一个PK约束,并且PK约束中的列不能接受空值。由于PK约束可以保证数据的唯一性,因此经常对标识列定义这种约束。 如果为表指定了PK约束,数据库引擎将通过为主键列创建唯一索引来强制数据的唯一性。当在查询中使用主键时,此索引还可以用来对数据进行快速访问。因此,所选的主键必须遵守创建唯一索引的规则。 创建主键时,数据库引擎会自动创建唯一的索引来强制实施PK约束的唯一性要求。如果表中不存在狙击索引或未显示指定非聚集索引,则将创建唯一的聚集索引以强制实施PK约束。 聚集索引 聚集索引给予数据行的兼职在表内排序和存储这些数据行。每个表只能有一个聚集索引,因为数据行本身只能按一个顺序存储。 每个表几乎都对列定义聚集索引来实现下列功能: 可用于经常使用的查询。 提供高度唯一性。 两者的比较 主键 聚集索引 用途 强制表的实体完整性 对数据行的排序,方便查询用 一个表多少个 一个表最多一个主键 一个表最多一个聚集索引 是否允许多个字段来定义 一个主键可以多个字段来定义 一个索引可以多个字段来定义 是否允许null值 如果要创建的数据列中数据存在null,无法创建主键

sql check约束

∥☆過路亽.° 提交于 2020-03-03 05:24:28
一.主键 主键作为表中的唯一标识,标识这一列不允许出现重复数据 如果两列或多列组合起来唯一标识表中的每一行,该主键叫“复合主键” 选择主键的原则 最少性 尽量选择单个键作为主键 稳定性 尽量选择数值更新少的列作为主键 二.默认值 设置列默认值的前提是这一列必须是允许为空的,否则设置默认值无效 如果在插入数据或者更改数据时,这一列不输入的话那么会按照默认值进行绑定 三:标识列 将想要设置的标识列设置成主键,保证这一列的数据类型为int,然后在此列的标识规范改为是,标识种子代表从几开始,标识增量表示每次加几 四:创建主外键 外键表找主键表 注:我们在创建表组织数据时要注意数据的完整性,这是我们创建一个结构良好的数据库的基础,一个结构功能良好的数据库它的数据完整性都比较完善,这样便于以后维护和使用,所以我们在创建表时这点要注意。为什么要使用完整性。我们举个例子来分析什么是完整性。看下面的问题想想我们在创建数据库时如何在表里组织这些信息和数据,记得要符合要求。这时我们就需要数据的完整性构成结构完善的数据库。如何实现数据的完整性。实现数据的完整性主要从域完整性,实体完整性,引用晚自习,自定义完整性这4点出发来看我们的表是否符合完整性。怎样实现实体完整性。我们逐一分析如何使用完整性组织数据,我们是通过约束方法:唯一约束、主键约束、标识列来实现表的实体完整性的。怎样实现域完整性。通过限制数据类型

hibernate.hbm.xml配置文件解析

柔情痞子 提交于 2020-03-02 03:51:29
转自:https://www.cnblogs.com/uoar/p/6670612.html 1. 1 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 2 <hibernate-mapping package="com.aegop.mto.pojo"> 3 <!-- 标识一个类的xml映射,name为类名,table为表名 --> 4 <class name="Street" table="Streets"> 5 <!-- 主键的设置,generator标识主键生成方式,因为native便于数据库的移植所以.嘿嘿!你懂的 --> 6 <id name="id" type="int"> 7 <column name="Id"/> 8 <generator class="native"/> 9 </id> 10 <!-- 这里配了该类一个属性街道名称 name属性字段,column,数据库对应列 --> 11 <property name="streetName" type="string" column="StreetName" /> 12 <!--