精华内容
下载资源
问答
  • 文章目录准备知识定义唯一约束使用SSMS工具定义唯一约束使用SQL方式定义唯一约束方式一:在创建数据表的时候定义唯一约束方式二:修改数据表定义唯一约束删除唯一约束使用SSMS工具删除唯一约束方式一:在对象资源...




    准备知识

        如果要求数据表中的某列不能输入重复值,有两种约束可以做到。一种是主键约束,即该列是数据表的主键;另一种则是唯一约束,对于不是主键的列,唯一约束能够确保不会出现重复值(可以为NULL值)。
        唯一约束允许 NULL 值,这一点与主键约束不同。 不过,当与参与唯一约束的任何值一起使用时,每列只允许一个空值。 外键约束可以引用 唯一约束。
        默认情况下,向表中的现有列添加唯一约束后,数据库引擎将检查列中的现有数据,以确保所有值都是唯一的。 如果向含有重复值的列添加唯一约束, 数据库引擎将返回错误消息,并且不添加约束。
        数据库引擎将自动创建唯一索引来强制执行唯一约束的唯一性要求。 因此,如果试图插入重复行, 数据库引擎将返回错误消息,说明该操作违反了唯一约束,不能将该行添加到表中。 除非显式指定了聚集索引,否则,默认情况下将创建唯一的非聚集索引以强制执行唯一约束。

    定义唯一约束

    使用SSMS工具定义唯一约束
    1. 展开“数据库”,然后展开相应的数据库,再展开数据库中的“表”,右击需要定义唯一约束的数据表,选择“设计”。
      在这里插入图片描述
    2. 进入表设计器界面,点击工具栏的“管理索引和键”按钮,或者右键选择“索引和键”。
      在这里插入图片描述
      在这里插入图片描述
    3. 进入“索引/键”对话框,点击“添加”。
      在这里插入图片描述
    4. 单击右侧的“类型”,在右侧下拉框中选择“唯一键”。
      在这里插入图片描述
    5. 单击右侧的“列”,点击右边的“…”按钮。
      在这里插入图片描述
    6. 进入索引列对话框,在列名中选择需要添加唯一性约束的属性列,点击“确定”。
      在这里插入图片描述
    7. 在“标识”的“(名称)”中修改唯一约束的名称,点击“关闭”。
      在这里插入图片描述
    8. 点击保存键,或者按Ctrl+F5键进行保存。展开数据表,展开“键”,可以看到定义的唯一约束。
      在这里插入图片描述

    使用SQL方式定义唯一约束
    方式一:在创建数据表的时候定义唯一约束
    1. 在SSMS工具栏中单击“新建查询”,打开“SQL编辑器”窗口
      在这里插入图片描述
    2. 输入创建SQL代码
    USE schoolDB                                                 --打开数据库schoolDB
    GO
    IF EXISTS(SELECT * FROM sysobjects WHERE name='student') 
    DROP TABLE student                --检查student是否已经存在,如果存在,则删除
    GO
    CREATE TABLE student                                           --表名为student
    (
    	  StuID int NOT NULL,                                           --学生学号
    	  StuName varchar(15) UNIQUE NOT NULL,                          --学生姓名
    	  Sex char(2) NULL,                                             --性别
    	  Major varchar(20) NULL,                                      --所选专业
    )
    
    
    
    1. 点击“分析”按钮,或按住Ctrl+F5,对SQL代码进行语法分析,确保SQL语句语法正确。
      在这里插入图片描述
    2. 点击“执行”按钮,或按住F5,执行SQL代码。
      在这里插入图片描述
    3. 查看数据表中的键。
      在这里插入图片描述

    方式二:修改数据表定义唯一约束
    1. 在SSMS工具栏中单击“新建查询”,打开“SQL编辑器”窗口
      在这里插入图片描述
    2. 输入创建SQL代码
    USE schoolDB                                                 --打开数据库schoolDB
    GO
    ALTER TABLE student
    ADD CONSTRAINT UQ_student_StuName UNIQUE(StuName) 
    			--将student表中的StuName列定义唯一约束
    
    
    
    1. 点击“分析”按钮,或按住Ctrl+F5,对SQL代码进行语法分析,确保SQL语句语法正确。
      在这里插入图片描述
    2. 点击“执行”按钮,或按住F5,执行SQL代码。
      在这里插入图片描述
    3. 查看数据表中的键。
      在这里插入图片描述



    删除唯一约束

    使用SSMS工具删除唯一约束
    方式一:在对象资源管理器中删除唯一约束
    1. 展开需要删除唯一约束的数据表,然后再展开“键”。
      在这里插入图片描述
    2. 右击需要删除的唯一约束,选择“删除”。
      在这里插入图片描述
    3. 在删除对象界面,点击“确定”,即可完成唯一约束删除。
      在这里插入图片描述

    方式二:在表设计器中删除唯一约束
    1. 右击需要删除唯一约束的数据表,选择“设计”。
      在这里插入图片描述

    2. 进入表设计器界面,点击工具栏的“管理索引和键”按钮,或者右键选择“索引和键”。
      在这里插入图片描述
      在这里插入图片描述

    3. 在“索引/键”对话框中选择需要删除的唯一约束,点击“删除”,完成唯一约束的删除。
      在这里插入图片描述


    使用SQL方式删除唯一约束
    1. 在SSMS工具栏中单击“新建查询”,打开“SQL编辑器”窗口
      在这里插入图片描述

    2. 输入创建SQL代码

    USE schoolDB --打开schoolDB数据库
    GO
    ALTER TABLE class 
    DROP CONSTRAINT UQ_class_ClassName   --删除表class的唯一约束UQ_class_ClassName
    
    
    1. 点击“分析”按钮,或按住Ctrl+F5,对SQL代码进行语法分析,确保SQL语句语法正确。
      在这里插入图片描述
    2. 点击“执行”按钮,或按住F5,执行SQL代码。
      在这里插入图片描述
    3. 唯一约束已被删除。
      在这里插入图片描述



    展开全文
  • SQL数据类型、基本表的定义索引定义标签(空格分隔): 未分类前言由于最近做消息中心后台开发,需要进行数据库的操作,在编写SQL(mybatis)上略感吃力,于是复习一下大学时代所学习的数据库的相关基础知识,直接...

    前言

    由于最近做消息中心后台开发,需要进行数据库的操作,在编写SQL(mybatis)上略感吃力,于是复习一下大学时代所学习的数据库的相关基础知识,直接从SQL开始。

    I.SQL模式

    此处输入图片的描述

    II.本次学习所用到的几个表

    Student

    学号 Sno姓名 Sname性别 Ssex年龄 Sage所在系 Sdept
    20021521李勇20CS
    20021522刘晨19CS
    20021523王敏18MA
    20021524张力19IS

    Course

    课程号 Cno课程名 Cname先行课 Cpno学分 Sage
    1数据库54
    2数学2
    3信息系统14
    4操作系统63
    5数据结构74
    6数据处理2
    7PASCAL语言64

    CS

    学号 Sno课程号 Cno成绩 Grade
    20021521192
    20021521285
    20021521388
    20021522290
    20021522380

    III.SQL的数据定义语句

    操作对象创建删除修改
    模式create schemadrop schema
    create tabledrop tablealter table
    视图create viewdrop view
    索引create indexdrop index

    IV.创建表

    一般格式

    create table <表名> (<列名> <数据类型> [列级完整性约束]
        [ , <列名> <数据类型> [列级完整性约束]]
        ...
        [,<表级完整性约束>] );

    例如:

    create table Student(
        Sno char(9) primary key,  /*列级完整性约束, Sno为主码*/
        Sname char(20) unique,   /*列级完整性约束, Sname唯一*/
        Ssex char(2),
        Sage smallint,
        Sdept char(20)
    );
    create table Course(
        Cno char(4) Primary key,  /*列级完整性约束, Cno为主码*/
        Cname char(40),
        Cpno char(4),                  /*Cpno是先行课*/
        Ccredit smallint,
        foreign key (Cpno) references Course(Cno)  /*表级完整性约束,Cpno 是外码,被参考Course,被参照Cno*/
    
    );
    create table SC(
        Sno char(9),
        Cno char(4),Grade smallint,
        primary key (Sno, Cno),   /* 主码有两个属性构成,必须作为表级完整性约束进行定义*/
        foreign key (Sno) references Student(Sno),  /*表级完整性约束,Sno 是外码,被参考Student,被参照Sno*/
        foreign key (Cno) references Course(Cno)   /*表级完整性约束,Cpno 是外码,被参考Course,被参照Cno*/
    );
    insert into Student(Sno, Sname, Sage, Ssex, Sdept) values('200215121', '李勇', 20, '男', 'CS');
    insert into Student(Sno, Sname, Sage, Ssex, Sdept) values('200215122', '刘晨', 19, '女', 'CS');
    insert into Student(Sno, Sname, Sage, Ssex, Sdept) values('200215123', '王敏', 18, '女', 'MA');
    insert into Student(Sno, Sname, Sage, Ssex, Sdept) values('200215125', '张力', 19, '男', 'IS');
    
    
    insert into Course(Cno, Cname, Ccredit) values(2, '数学', 2);
    insert into Course(Cno, Cname, Ccredit) values(6, '数据处理', 2);
    insert into Course(Cno, Cname, Cpno, Ccredit) values(7, 'PASCAL语言', 6, 4);
    insert into Course(Cno, Cname, Cpno, Ccredit) values(5, '数据结构', 7, 4);
    insert into Course(Cno, Cname, Cpno, Ccredit) values(4, '操作系统', 6, 3);
    insert into Course(Cno, Cname, Cpno, Ccredit) values(1, '数据库', 5, 4);
    insert into Course(Cno, Cname, Cpno, Ccredit) values(3, '信息系统', 1, 4);
    
    insert into SC(Sno, Cno, Grade) values('200215121', '1', 92);
    insert into SC(Sno, Cno, Grade) values('200215121', '2', 85);
    insert into SC(Sno, Cno, Grade) values('200215121', '3', 88);
    insert into SC(Sno, Cno, Grade) values('200215122', '2', 90);
    insert into SC(Sno, Cno, Grade) values('200215122', '3', 80);

    V.关于数据类型

    各个数据库的数据类型不完全相同,选择数据类型的原则有两个,一个是取值范围,二是要做哪些数据运算。比如年龄:取值为100左右的正整数,取值范围很多数据类型都满足,比如char(3)、长整形、短整型;运算比如需要求平均年龄,这个只有长整形和短整型支持,考虑到存储空间的占用,故选用短整型。

    数据类型含义
    char(n)长度为n的定长字符串
    varchar(n)最大长度为n的变长字符串
    int长整数,也可以写成integer
    smallint短整数
    numeric(p,d)定点数,由p位数字(不包含小数点、符号)组成,小数点后面有d为数字
    real取决于机器精度的浮点数
    double precision取决于机器精度的双精度浮点数
    float(n)浮点数,精度至少为n位数字
    date日期,包含年、月、日,格式为 YYYY-MM-DD
    time时间,包含一日的时、分、秒,格式为 HH:MM-SS

    更多数据类型请参考具体的数据库厂商说明书。

    VI.修改基本表

    一般格式

    alter table <表名> 
        [add <列名> <数据类型> [完整性约束]]
        [drop <完整性约束 名>]
        [alter column<列名> <数据类型>];

    例如:

    alter table Student add S_ontrance date;  /*学生表增加入学时间列*/
    
    alter table Student alter column Sage int; /*修改学生表的Sage列的数据类型为int,这个在mysql中执行错误*/
    
    alter table Course add unique(Cname); /*增加课程名唯一的约束*/

    VII.删除表

    一般格式

    drop table <表名> [restrict | cascade] 

    restrict:删除表示有限制的,如果该表有外键、视图、触发器、存储过程、函数等约束,则删除失败,缺省为restrict

    cascade: 删除没有条件,删除该表时,相关联的对象,视图等都会被删除,使用值需谨慎;不同的数据库厂商对的实现细节还是有差距的,比如mysql如果该表有外键的话即使指定cascade也是无法删除的。

    比如:在mysq下

    drop table Student restrict;

    提示错误信息:
    [SQL] drop table Student restrict ;
    [Err] 1451 - Cannot delete or update a parent row: a foreign key constraint fails

    drop table Student cascade;

    [SQL] drop table Student cascade;
    [Err] 1451 - Cannot delete or update a parent row: a foreign key constraint fails

    验证一个表只有视图的情况下:restrict和cascade的差别:首先给SC表创建一个视图,然后删除该表,SC表无其他关联约束:

    create view v_sc as select * from SC;
    drop table SC restrict;
    drop table SC cascade;

    可以看到在mysql的实现下restrict,cascade 都可以删除表,但是视图没有删除,在这一点上表现是一致的。

    VIII.建立索引

    建立索引是加快查询的有效手段。

    一般格式

    create [unique] [cluster] index <索引名称> on <表名>(<列名>[<次序>] [,<列名>[<次序>]]...);
    /**建立索引*/
    create unique index StuNoIndex on Student(Sno);

    IX.删除索引

    一般格式

    drop index<索引名称> on <表名>
    drop index StuNoIndex on Student;

    索引一旦建立,由系统使用并维护,不需用户干预。建立索引是为了减少查询时间,如果数据频繁增删改,系统会花费许多时间来维护索引,从而降低了数据库系统的效率,这个时候可以删除一些不必要的索引。在RDBMS中一般采用B+树、HASH索引来实现,B+树具有动态平衡的优点,Hash索引则具有查找快速的优点。索引是数据库的内部实现技术,属于内模式范畴。至于某一索引在创建时是采用B+树还是Hash索引则由具体的RDBMS来决定。

    展开全文
  • mysql中的约束索引

    千次阅读 2019-05-14 19:54:48
    文章目录一、约束(Constraint)1、主键约束(primary key)2、唯一性约束(unique)3、默认值约束(default)4、外键约束(foreign key)二、索引(index)索引类型三、区别与联系 本文内容仅在 MariaDB-10.2.15 ...

    本文内容仅在 MariaDB-10.2.15 版本下验证,其它环境下可能略有差异。

    简单来说,约束是为了实现业务规则、保证数据的完整性,索引是为了查询高效,二者原本是两个不同的东西,只是在 mysql 中实现方法有类似之处,所以经常会让人感到迷惑。

    一、约束(Constraint)

    约束,是为了实现非空、非重等常见业务规则,在定义数据时对表或某些字段增加的特定的约束规则。

    常见的约束类型有主键约束、唯一约束、非空约束、默认值约束、外键约束等。

    1、主键约束(primary key)

    • primary key,用于定义表的主键,是唯一确定表中每一条记录的标识符
    • 主键不能为空,也不能重复
    • 一张表中只能有一个主键

    设置主键:

    • 创建表的同时设置主键
    create table student1 (
    	sid int(10) primary key,  -- 对 sid 字段设置主键约束
    	sname varchar(20) not null  -- 对 sname 字段设置非空约束
    )
    
    • 创建表以后,追加主键
    create table student2(
    	sid int(10) not null,
    	sname varchar(10) not null
    )
    
    # 追加主键,并设置主键名称
    ALTER TABLE student2 ADD CONSTRAINT pks2 PRIMARY KEY(sid);
    
    • 设置复合主键
      • 即把多个列同时设置为一个主键
    create table student3 (
    	sid int(10) not null,
    	nid int(10) not null,
    	sname varchar(10) not null,
        primary key (sid, nid)  -- 定义复合主键
    )
    
    • 删除主键:
    ALTER TABLE student3 DROP PRIMARY KEY;
    

    2、唯一性约束(unique)

    • unique,设置某列数据不能重复,但可以有空值
    • 一张表中可以对多个列设置 unique 约束,也可以把多个字段定义成一个 unique 约束
    • 主键所在的列,不能使用唯一约束

    区分唯一约束和主键约束:

    • 一张表只能有一个主键,但可以出现多个唯一约束
    • 主键不能为null,唯一可以为null

    设置唯一约束:

    • 在创建表的同时,设置唯一约束:
    create table student4(
    	sid int(10) primary key ,
    	sname varchar(10) unique
    )
    
    • 在创建表以后,追加约束:
    create table student5(
    	sid int(10) primary key,
    	sname varchar(10)
    )
    ALTER TABLE student5 ADD CONSTRAINT uns5
    UNIQUE(sname);
    
    • 把多个字段都设置成同一个唯一约束:
    create table student6 (
    	sid int(10) primary key,
    	nid int(10) not null,
    	sname varchar(10) not null,
        UNIQUE KEY uk6(sid, nid)  -- 定义复合 unique 约束
    )
    

    删除约束:

    ALTER TABLE student6 DROP INDEX uk6;
    

    3、默认值约束(default)

    在插入操作时,当某一列没有值时系统就自动把之前设置的默认值赋值过去。

    设置默认值约束:

    create table student7(
    	sid int(10) primary key,
    	sname varchar(10) not null,
    	age int(10) default 12  -- 设置默认值为12
    )
    

    4、外键约束(foreign key)

    定义:

    • 如果在一张表中有一个非主键的字段,指向了另一张表中的主键。
      • 每张表中可以有多个外键
    • 通常将外键所在的表称为子表或被约束表,指向的另一个表称为父表或约束表或外表
      • 子表中外键字段的取值范围由父表决定
    • 子表在进行写操作的时候,如果外键字段在父表中找不到对应的匹配,操作就会失败
    • 对父表的主键字段进行删和改时,如果对应的主键在子表中被引用,操作就会失败

    外键的三种约束模式:

    • district 严格模式, 父表不能删除或更新一个被子表引用的记录。
    • cascade 级联模式,父表操作后,子表关联的数据也跟着一起操作。
    • set null 置空模式,父表操作后,子表对应的字段被置空(前提是外键字段允许为NULL)。

    使用外键的前提:

    • 表储存引擎必须是 innodb,否则创建的外键无约束效果。
    • 外键的列类型必须与父表的主键类型完全一致。
    • 外键的名字不能重复。
    • 已经存在数据的字段被设为外键时,必须保证字段中的数据与父表的主键数据对应起来。
    • 外键必须建立索引(可以为普通、主键、唯一,事先不建立的话会自动创建一个普通索引)

    使用外键的优缺点:

    • 通过数据库自身机制(而非程序员)来保证数据一致性和完整性
    • 可靠性较高,但在一定程度上降低了数据库的速度
    • 当系统数据越来越多时,尤其是现在的互联网高并发业务场景较多,若外键较多,会导致系统响应很慢,要尽量少用外键,改成用中间层控制业务规则!
    "外键使用示例:"
    --dept表
    create table dept(
    	did int primary key,
    	dname varchar(10) not null unique, 
    )
    --emp表
    create table emp(
    	eid int primary key,
    	ename varchar(10) not null ,
    	salary float not null,
    	dept_id int,
        foreign key(dept_id) references dept(did)  --定义外键 dept_id 与 dept 表的 did 主键字段关联
    )
    

    其实在实际工作中,用的比较多的是主键、非空、默认值约束,其他的很少用,复杂的业务规则尽量通过程序来控制,从而提高数据库性能。

    二、索引(index)

    定义:

    • 索引是一种高效获取数据的数据结构,可以快速提高查询速度
      • 在 innoDB 引擎中使用的是 B-Tree 索引算法。
    • 当查询海量数据时,索引的效果尤其明显。
    • 索引是定义在列上的,有单列索引、组合索引。

    索引类型

    • 普通索引:
      • create index 索引名字 on 表名(列名)
    • 唯一索引:
      • 索引字段必须是唯一的,该值不能重复
      • create unique index 索引名 on 表(列名)
    • 复合索引:
      • 也叫组合索引,在多个列创建一个索引
      • create index myIndex on teacher2(sname, sex)
    • 删除索引:
      • drop index 表.索引名字
    • 主键索引:
      • 很多时候也把 PRIMARY KEY 称为主键索引,但是主键和索引还是两个不同的概念。
      • 可以理解为,创建主键的同时,mysql 会自动对它创建索引。

    三、区别与联系

    这里主要说明主键约束、唯一性约束和索引之间的区别与联系。

    • 概念上不同:
      • 约束是为了保证数据的完整性,索引是为了提高查询速度。
    • 创建主键约束时,mysql 默认会自动创建一个索引
      • 若要实现主键的值不重复,在每次插入新记录时都需要检索数据,所以为了提高检索速度,同时对主键创建索引。
    • 创建唯一约束时,mysql 默认会自动创建一个唯一索引
      • 跟上面的道理一样,通过唯一索引实现唯一约束
    展开全文
  • 索引是对数据库表中一列或多列的值进行排序的一种结构,例如 employee 表的姓(name)列。如果要按姓查找特定职员,与必须搜索表中的所有行相比,索引会帮助您更快地获得该信息。 索引是一个单独的、物理的数据库...
    转发:
    索引是对数据库表中一列或多列的值进行排序的一种结构,例如 employee 表的姓(name)列。如果要按姓查找特定职员,与必须搜索表中的所有行相比,索引会帮助您更快地获得该信息。  
       索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。   索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引的方式与您使用书籍中的索引的方式很相似:它搜索索引以找到特定值,然后顺指针找到包含该值的行。   在数据库关系图中,您可以在选定表的“索引/键”属性页中创建、编辑或删除每个索引类型。当保存索引所附加到的表,或保存该表所在的关系图时,索引将保存在数据库中。
        可以基于数据库表中的单列或多列创建索引。多列索引使您可以区分其中一列可能有相同值的行。   如果经常同时搜索两列或多列或按两列或多列排序时,索引也很有帮助。例如,如果经常在同一查询中为姓和名两列设置判据,那么在这两列上创建多列索引将很有意义。   确定索引的有效性:   检查查询的 WHERE 和 JOIN 子句。在任一子句中包括的每一列都是索引可以选择的对象。   对新索引进行试验以检查它对运行查询性能的影响。   考虑已在表上创建的索引数量。最好避免在单个表上有很多索引。   检查已在表上创建的索引的定义。最好避免包含共享列的重叠索引。   检查某列中唯一数据值的数量,并将该数量与表中的行数进行比较。比较的结果就是该列的可选择性,这有助于确定该列是否适合建立索引,如果适合,确定索引的类型。
    
    建立索引的优点:
      1.大大加快数据的检索速度;   
        2.创建唯一性索引,保证数据库表中每一行数据的唯一性;   
        3.加速表和表之间的连接;   
        4.在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。
    
    索引类型:
      根据数据库的功能,可以在数据库设计器中创建四种索引:唯一索引、非唯一索引、主键索引和聚集索引。 尽管唯一索引有助于定位信息,但为获得最佳性能结果,建议改用主键或唯一约束。  
    
    唯一索引:   
    唯一索引是不允许其中任何两行具有相同索引值的索引。   当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。数据库还可能防止添加将在表中创建重复键值的新数据。例如,如果在 employee 表中职员的姓 (lname) 上创建了唯一索引,则任何两个员工都不能同姓。     
    
    非唯一索引:   
    非唯一索引是相对唯一索引,允许其中任何两行具有相同索引值的索引。   当现有数据中存在重复的键值时,数据库是允许将新创建的索引与表一起保存。这时数据库不能防止添加将在表中创建重复键值的新数据。     
    
    主键索引:   
    数据库表经常有一列或列组合,其值唯一标识表中的每一行。该列称为表的主键。   在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。当在查询中使用主键索引时,它还允许对数据的快速访问。 
    
    聚集索引(也叫聚簇索引):
    在聚集索引中,表中行的物理顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引。   如果某索引不是聚集索引,则表中行的物理顺序与键值的逻辑顺序不匹配。与非聚集索引相比,聚集索引通常提供更快的数据访问速度。
    展开全文
  • MySql索引类型

    万次阅读 2018-07-04 22:15:19
    Mysql支持哪几种索引索引是在MySql的存储引擎层中实现的,而不是在服务器层从数据结构角度1、B+树索引(O(log(n))):关于B+树索引,可以参考 MySQL索引背后的数据结构及算法原理BTREE在MyISAM里的形式和Innodb稍有...
  • mysql索引类型和索引方式

    千次阅读 2018-11-24 12:28:52
    在MySQL中,通常我们所指的索引类型,有以下几种: 主键索引(PRIMARY KEY) 也简称主键。它可以提高查询效率,并提供唯一性约束。一张表中只能有一个主键。被标志为自动增长的字段一定是主键,但主键不一定是自动...
  • mysql索引类型Normal,Unique,Full Text区别  Normal:  表示普通索引,大多数情况下都可以使用  Unique:  约束唯一标识数据库表中的每一条记录,即在单表中不能用每条记录是唯一的(例如身份证就是唯一的),...
  • 约束索引的联系与区别

    千次阅读 2019-04-18 14:14:07
    唯一所以、主键、唯一约束之间到底有什么不同呢? 1、从数据库逻辑设计的观点来看,每一种都表示不同的功能; 2、尽管他们都是通过索引来实现的,但是IDS在管理上是有差别的。 详细区别如下: 1、约束用来在表中...
  • ORACLE的索引约束详解数据库

    千次阅读 2013-10-24 10:24:59
    * 如果某个约束只作用于单独的字段,即可以在字段级定义约束,也可以在表级定义约束,但如果某个约束作用于多个字段, 必须在表级定义约束 * 在定义约束时可以通过CONSTRAINT关键字为约束命名,如果没有指定,...
  • 索引约束

    千次阅读 2005-04-21 22:27:00
    /*** 约束 ***/* 如果某个约束只作用于单独的字段,即可以在字段级定义约束,也可以在表级定义约束,但如果某个约束作用于多个字段, 必须在表级定义约束* 在定义约束时可以通过CONSTRAINT关键字为约束命名,如果...
  • SQL的约束索引

    2018-06-14 00:56:01
    定义:对数据库中表的一列或者多列的值进行排序的一种结构(MySQL中的Btree方式) 优点:加快数据的检索速度 缺点:当对表中的数据进行增加,删除和修改的生活,索引也到动态维护,降低了数据的维护速度。索引需要...
  • MySQL基本概念--索引&索引类型

    千次阅读 2014-03-06 23:38:10
    下面介绍几种常见的MySQL索引类型。 在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 mytable表: CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL ); 我们随机...
  • 一、索引 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。 ...
  • 数据库索引类型及实现方式

    万次阅读 2017-07-12 18:43:23
    数据库索引类型及实现方式 1、索引定义  数据库索引好比是一本书前面的目录,能加快数据库的查询速度。索引是对数据库表中一个或多个列(例如,employee 表的姓氏 (lname) 列)的值进行排序的结构。如果想...
  • sql索引类型

    千次阅读 2009-10-21 17:34:00
    索引类型唯一索引:唯一索引不允许两行具有相同的索引值主键索引:为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的,并且不能为空聚集索引(Clustered):表...
  • 一、MySQL索引类型 MySql常见索引类型有:主键索引、唯一索引、普通索引、全文索引、组合索引 PRIMARY KEY(主键索引) ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) UNIQUE(唯一索引) ALTER ...
  • mysql 索引类型以及使用场景

    万次阅读 2018-07-10 10:44:11
    关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。对于没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型网站单日就可能...
  • 数据库索引约束

    千次阅读 2017-12-17 18:49:32
    1、表属性 创建表的基本语法: create table 【if not exists】 表名 (字段列表 【,索引约束列表】)【表选项列表】 其中,字段列表格式如下: 字段名 类型 【属性列表】, 字段名 类型 【属性列表】......
  • 数据库索引什么什么优缺点

    千次阅读 2018-11-28 14:48:44
    索引的种类分为普通索引、唯一索引、聚集索引、主键索引、全文索引等。 唯一索引:在创建唯一索引时不能具有相同的索引值。 主键索引:在我们给一个字段设置主键的时候,它就会自动创建主键索引,用来确保每一个值...
  • Not Null约束not null约束常常被归于“强制”约束。CREATE TABLE temp(id NUMBER(1) NOT NULL);CREATE TABLE temp(id NUMBER(1) ...为什么我们为Primary key, unique, foreign key, 和chech约束命名,有一个重要原因
  • ORACLE学习笔记 索引约束

    千次阅读 2009-10-15 22:41:00
    /*** 约束 ***/* 如果某个约束只作用于单独的字段,即可以在字段级定义约束,也可以在表级定义约束,但如果某个约束作用于多个字段, 必须在表级定义约束* 在定义约束时可以通过CONSTRAINT关键字为约束命名,如果...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 105,713
精华内容 42,285
关键字:

定义约束的索引类型是什么