精华内容
下载资源
问答
  • create函数创建唯一索引和普通索引。 create unique index uniq_idx_firstname on actor(first_name); create index idx_lastname on actor(last_name); mysql数据库还可以 alter table actor add unique ...

    思路:

    用create函数创建唯一索引和普通索引。

    create unique index uniq_idx_firstname on actor(first_name);
    create index idx_lastname on actor(last_name);

    mysql数据库还可以

    alter table actor add unique index uniq_idx_firstname(first_name);
    alter table actor add index idx_lastname(last_name)

     

    展开全文
  • 唯一索引

    2019-12-03 05:00:18
    唯一索引可以用以下几种方式创建创建索引,例如CREATE UNIQUE INDEX <索引的名字> ON tablename (列的列表); 修改表,例如ALTER TABLE tablename ADD UNIQUE [索引的名字] (列的列表); 创建表的时候...

    唯一索引

    这种索引和前面的“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一。唯一性索引可以用以下几种方式创建: 

    创建索引,例如CREATE UNIQUE INDEX <索引的名字> ON tablename (列的列表); 

    修改表,例如ALTER TABLE tablename ADD UNIQUE [索引的名字] (列的列表); 

    创建表的时候指定索引,例如CREATE TABLE tablename ( [...], UNIQUE [索引的名字] (列的列表) ); 

     

    创建表结构

    create table ddd(id int primary key auto_increment , name varchar(32) unique);

    注意

    unique字段可以为NULL,并可以有多NULL, 但是如果是具体内容,则不能重复,

    但是不能存有重复的空字符串’’

    展开全文
  • 导出创建唯一索引脚本的方法 在ORACLE里逻辑备份工具exp导出数据时,如果使用默认参数, 会把索引一起导出来。当数据和索引小的时候,我们可能不太会计较导入时间; 如果数据和索引大的时候,就应该考虑导入时间的...

    导出创建非唯一索引脚本的方法

       在ORACLE里用逻辑备份工具exp导出数据时,如果使用默认参数, 会把索引一起导出来。当数据和索引小的时候,我们可能不
    太会计较导入时间; 如果数据和索引大的时候,就应该考虑导入时间的问题了。

        实际地说,二进制dmp备份文件里有些索引对备份是用处不大的, 导出时完全可以选择indexes=n的参数, 不备份它们。这样
    不仅可以缩短导入导出时间,还可以节省备份文件的存储空间。这种索引类型是非唯一(nounique)的。我们可以根据ORACLE数
    据字典dba_indexes和dba_ind_columns里的信息生成创建索引的脚本。在导入完成后再运行这些创建索引的脚本。

        dba_indexes里记录了索引类型和存储参数等信息。
        dba_ind_columns里记录了索引的字段信息, 它的结构如下: 

    SQL> desc dba_ind_columns;
     name                                   null?    type
     ----------------------------------------- -------- -------------------------
     index_owner                            not null varchar2(30)
     index_name                             not null varchar2(30)
     table_owner                            not null varchar2(30)
     table_name                             not null varchar2(30)
     column_name                                  varchar2(4000)
     column_position                        not null number
     column_length                          not null number
     descend                                        varchar2(4)

        column_name记录着有索引的字段, column_position标记着字段在创建索引时的位置, descend指索引的排序, 有asc和desc
    两种,而desc排序方法用的较少,本文只考虑asc的情况。

        步骤一:先创建一个视图index_nouniq_column_num列出非系统用户nonunique索引的用户名, 索引名和字段数量。

    SQL> create view index_nouniq_column_num as select t1.owner,t1.index_name,count(0) as column_num
    from dba_indexes t1,dba_ind_columns t2 where t1.uniqueness='NONUNIQUE'
    and instr(t1.owner,'sys')=0 and t1.owner=t2.index_owner and t1.index_name=t2.index_name
    group by t1.owner,t1.index_name order by t1.owner,column_num;

        步骤二:为了处理方便,建一个索引字段临时表index_columns, 它的column_names记录了以逗号分隔,顺序排列的索引字段。

    SQL> create table index_columns(
    index_owner varchar2(30) not null,
    index_name varchar2(30) not null,
    column_names varchar2(512) not null)
      tablespace users;

        步骤三:把只有一个字段的索引内容插入索引字段临时表index_columns。

    SQL> insert into index_columns select t1.owner,t1.index_name,t2.column_name from
    index_nouniq_column_num t1,dba_ind_columns t2
    where t1.column_num=1 and t1.owner=t2.index_owner and t1.index_name=t2.index_name
    order by t1.owner,t1.index_name;
    SQL> commit;

        步骤四:把多个字段的索引内容插入索引字段临时表index_columns。
                用到以下一个函数getcloumns和过程select_index_columns。

    函数getcloumns:
    create or replace function getcloumns(
    index_owner1 in varchar2,
    index_name1    in varchar2,
    column_nums1 in number) return varchar2
    is
         all_columns varchar2(512);
         total_num number;
         i number;
         cursor c1 is select column_name from dba_ind_columns where index_owner=index_owner1 and
          index_name=index_name1 order by column_position;
         dummy c1%rowtype;
    begin
       total_num:=column_nums1;
       open c1;
       fetch  c1  into   dummy;
       i:=0;
       while c1%found  loop
       i:=i+1;
       if (i=total_num) then
       all_columns:= all_columns||dummy.column_name;
       else
       all_columns:= all_columns||dummy.column_name||',';
       end if;
       fetch c1 into dummy;
       end loop;
       close c1;
       return all_columns;
    exception
        when no_data_found then
       return all_columns;
    end;
    /

    过程select_index_columns:
    create or replace procedure select_index_columns
    is
       all_columns varchar2(2000);
       cursor c1 is select * from index_nouniq_column_num where column_num>=2;
       dummy c1%rowtype;
    begin
       open c1;
       fetch  c1  into   dummy;
       while c1%found  loop
          select getcloumns(dummy.owner,dummy.index_name,dummy.column_num) into all_columns from dual;
          insert into index_columns values(dummy.owner,dummy.index_name,all_columns);
       fetch c1 into dummy;
       end loop;
       commit;
       close c1;
    exception
       when others then 
       rollback;
    end;
    /

    SQL> exec select_index_columns;

        执行select_index_columns过程就可以把多个字段的索引内容插入索引字段临时表了。

        步骤五:最后运行create_now_index.sql,根据索引字段临时表index_columns和dba_indexes在路径/oracle_backup/log
    下生成创建非唯一索引脚本create_index.sql。

    create_now_index.sql内容:

    set heading off;
    set pagesize 5000;
    truncate table index_columns;
    -- 把多个字段的索引内容插入索引字段临时表
    exec select_index_columns;
    -- 把只有一个字段的索引内容插入索引字段临时表
    insert into index_columns select t1.owner,t1.index_name,t2.column_name
    from index_nouniq_column_num t1,dba_ind_columns t2
    where t1.column_num=1 and t1.owner=t2.index_owner and t1.index_name=t2.index_name
    order by t1.owner,t1.index_name;
    commit;
    spool /oracle_backup/log/create_index.sql;
    SELECT 'CREATE INDEX '||t1.owner||'.'||t1.index_name|| chr(10) ||' ON '||t1.table_name||
    ' ('||column_names||')'|| chr(10) ||' TABLESPACE '||t1.tablespace_name|| chr(10) ||
    ' PCTFREE '||t1.pct_free || chr(10) ||' STORAGE (INITIAL '||t1.initial_extent||
    ' NEXT '||t1.next_extent||' PCTINCREASE '||t1.pct_increase||');'|| chr(10) || chr(10)
     FROM dba_indexes t1,index_columns t2
     WHERE t1.owner=t2.index_owner and t1.index_name=t2.index_name
     ORDER BY t1.owner, t1.table_name;
    spool off;

    展开全文
  • 在使用group by order by子句进行数据检索时,利用索引可以减少排序和分组的时间; 注意:一个表最多可以有16个索引;可以由单个字段创建索引,也可以在多个字段的组合上创建索引,最多不超过15个字段。 二、索引的...

    527b8f7adb38281f88224ed44bac7e1d.png

    一、索引的作用:
    快速读取数据;
    保证数据记录的唯一性;
    实现表与表之间的参照完整性;
    在使用group by order by子句进行数据检索时,利用索引可以减少排序和分组的时间; 注意:
    一个表最多可以有16个索引;
    可以由单个字段创建索引,也可以在多个字段的组合上创建索引,最多不超过15个字段。 二、索引的分类: 按B-树形式存储的主要索引的分类: 1、普通索引(index)没有唯一性要求; 2、唯一索引(unique)必须具有唯一性; 3、主键(primary key)是一种唯一性索引,可以通过修改表的方式加入主键,但每个只能有一个主键。 三、索引的利弊: 1、索引可加快查询的速度(利) 2、索引会增大表文件的容量(弊) 3、在更新含有索引列的数据时,由于索引也要更新,所以会降低添加、删除、修改和其他写入操作的效率(弊) 四、创建索引 1、在创建表时指定索引: 例:在当前数据库创建一个xs表,包含学号、姓名、身份证三个字段,要求: 学号为主索引、姓名为普通索引、sfz为唯一索引: Create table if not exists xs( 学号 char(6) not null primary key, 姓名 char(4),身份证 char(18), Index xm_xs(姓名), Unique index sfz_xs(身份证)); 2、为已建好的表添加索引: 2.1使用create index语句创建索引 使用create index语句可以在一个已创建好的表上创建索引,一个表可以创建多个索引。 2.2创建命令: Create [unique] index index_name On tb_name(col_name); Create index 索引名 on 表名(字段名) 注意:此命令语句不能创建主索引,创建索引时必须为它取名。 例:为xsl表的姓名字段创建一个名为xm_xsl的索引索引,并查看 Create index xm_xsl on xsl(姓名); Desc xsl; 可以使用整个字段作为索引,也可以使用字段的一部分作为一个索引; 例2:使用xs表的学号前3位数字,创建一个索引xh_xsl,并查看 Create index xh_xsl on xsl (学号(3)); Show index from xsl; 五、使用alter table语句添加索引 由两个以上的字段组合而成的索引叫复合索引。 Alter table tb_name add index In_name(index_xol_name,………) 例:在xs表中,为学号添加一个主索引,为出生日期和姓名添加一个复合索引mark,并查看 Create table xs6 as select * from xsl; Alter table xs6 Add primary key(学号), Add index mark(出生日期,姓名); 例2:在kb中为课程名添加一个候选索引kcm_kb,并查看 Alter table kb add unique index kcm_kb(课程名); 或create unique index kcm_kb on kb(课程名); 例3:在cjb中为成绩字段创建一个普通索引cj_cj,并查看 Alter table cjb add index cj_cjb(成绩 desc); 查看索引的方法: 1、 desc 表名; 2、 show index from 表名; 3、 show create table 表名; 删除索引: 当一个索引不需要是可以用drop index语句或alter table语句删除;
    使用drop index 索引名 on 表名; 例:删除xsl表中的xh_xsl索引 drop index xh_xsl on xsl;
    使用alter table 表名 drop index 索引名; 例:删除xsl表中的xm_xsl索引 alter table xsl drop index xm_xsl;
    使用alter table 语句删除索引语法: Alter table tb_name(表名) Drop primaty key //删除主键 Drop index index_name(索引名) //删除索引 Drop foreign key fk_name(索引名) //删除外键 例:删除xs表中的主键和mark索引 Alter table xs Drop primary key, Drop index mark; 注意:不能使用drop来创建主键,也不能使用drop命令删除主键 数据完整性约束 在了解数据完整性约束先了解什么是子表什么是父表: 子表与父表: 例:1:n(一对多关系) 1:1方为父表 n:n方为字表 查看外键:show crate table 表名 数据完整性约束 参照完整性约束 外键(foreign key)约束标识表之间的关系,用于强制参照完整性。 可在创建表时定义外键,也可在修改表时添加外键。 当两个表存在一对多关系时,一方是父表,多方是子表,如果父子表中相同的这段,在父表中主键,则在子表中创建外键,以保证子表外键字段的值必须来自父表,同时可设置两个表中数据的一致性,实现参照完整性。

    展开全文
  • 如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该关键字UNIQUE把它定义为一个唯一索引。这么做的好处:1)简化了MySQL对这个索引的管理工作,这个索引也因此而变得更有效率;2)....
  • 如果确定某个数据列只包含彼此各不相同的值,在为这个数据列创建索引的时候,就应该关键字UNIQUE把它定义为一个...事实上,在许多场合,人们创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免数据出现...
  • 在已经存在的表中创建索引,除了使用CREATE INDEX,还可以使用ALTER TABLE语句,语法格式ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX索引名 (字段名 [(长度)] [ASC|DESC])参数说明UNIQUE、FULLTEXT和...
  • 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是...也就是说,唯一索引可以保证数据记录的唯一...
  •   普通的索引可以用drop来删除: drop index idx_table;   但是在建立表的时候,主键自动在主键列上建立一个聚集索引,以及通过给表增加的一个唯一约束也会自动增加一个唯一索引,...
  • 使用 UNIQUE 参数可以设置,创建唯一索引时,限制索引值,必须唯一(比如我们建表时的主键,就是默认的唯一索引);3,全文索引;使用 FULLTEXT 参数可以设置,全文索引只能创建在 CHAR,VARCHAR,TEXT 类型的字段上。...
  • 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是...也就是说,唯一索引可以保证数据记录的唯一...
  • 在执行CREATE TABLE语句时可以创建索引,也可以单独CREATE INDEX 或 ALTER TABLE来为表增加索引。 1.ALTER TABLE可以用来创建普通索引、UNIQUE索引或PRIMARY KEY索引。 2.CREATE INDEX可对表增加普通索引或UNIQUE...
  • 1、创建索引 索引的创建可以在CREATE TABLE语句... 以下命令语句分别展示了如何创建主键索引(PRIMARY KEY)、 唯一索引(UNIQUE)、 全文索引(FULLTEXT)、 普通索引(INDEX)的方法。 mysql>ALTER TABLE `ta...
  • 简单描述MySQL中,索引,主键,唯一索引,联合索引 的区别,对数据库的性能有什么影响 索引是一种特殊的文件(InnoDB 数据表上的索引是表空间的一个组成部分),它们 包含着对...也就是说,唯一索引可以保证数据记录的唯
  • 索引是一种特殊的文件,它们包含着对所有记录的引用指针。 普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。 普通索引允许被索引...也就是说,唯一索引可以保证数据记录的唯一性。 ...
  • 创建索引

    2009-09-10 18:41:00
    今天mysql 的时候,感觉很简单的sql语句,竟然跑的那么慢...这是因为,创建索引可以大大提高系统的性能。 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 第二,可以大大加快 数据的检索速度,这
  • MySQL创建索引

    2018-05-07 14:11:06
    创建索引直接工具 navicatformysql 就可以了,选择要创建的表点设计表按钮,在索引里面填写名字、选择索引字段、索引类型、索引方式。简单介绍下:类型Normal和Unique Normal普通索引, Unique 唯一索引,不同的...
  • mysql中的所以分为:主键索引(primary key),唯一索引(unique),全文索引(fulltext),普通索引(index)创建和删除索引索引的创建可以在CREATETABLE语句中进行,也可以单独CREATE INDEX或ALTER TABLE来给表增加索引...
  • 发现mysql一个表可以有几个唯一索引

    千次阅读 2018-04-26 09:07:44
    如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该关键字UNIQUE把它定义为一个唯一索引。这么做的好处:一是简化了MySQL对这个索引的管理工作,这个索引也因此而变得更有效率。...
  • mysql 如何创建索引

    2019-07-08 23:15:32
    唯一索引 普通索引 全文索引 … 创建索引 在执行CREATE TABLE语句时可以创建索引,也可以单独CREATE INDEX或ALTER TABLE来为表增加索引。 ALTER TABLE 1.添加PRIMARY KEY(主键索引) mysql>ALTER TABLE ...
  • 缺省情况下,MongoDB的_id字段在创建集合的时候会自动创建一个唯一索引。本文主要描述唯一索引的用法。 关于什么是索引以及唯一索引这里就不做说明了,不清楚的可以自行谷歌或者百度。是什么引起我写这篇文章呢,这...
  • 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。 普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问...也就是说,唯一索引可以
  • 尽管唯一的、系统要求的索引是用来加强唯一约束,但是定义唯一约束和创建唯一索引之间还是有区别的。即使这二者之间都可以增强唯一性,唯一索引允许NULL值并且一般不能在指示性约束中。换句话说,唯一约束不允许...
  • 主键自动建立唯一索引 频繁作为查询条件的字段应该创建索引 查询中与其他表关联的字段,外键关系建立索引 频繁更新的字段不适合创建索引 – 因为每次更新不只更新记录还会更新索引 Where里不到的字段的不创建索引 ...
  • MYSQL索引创建与删除

    2020-10-16 16:15:09
    一、创建索引 索引的创建可以在CREATE TABLE语句中进行,也可以单独CREATE INDEX或ALTER TABLE来给表...// 创建唯一索引 alter table table_name add unique index_name (column_list) ; // 创建主键索引 alter ta
  • 唯一索引、主键、Unique约束

    千次阅读 2017-07-08 11:31:57
    若要为admin_id创建唯一索引,则语句为: Create [Unique] Index 索引名 on 表名 (列名) create [Unique] Index IDX_admin_id on Admin(admin_id) 也可以用图形化界面,如MySQL中,设计表->索引,
  • mysql中的所以分为:主键索引(primary key),唯一索引(unique),全文索引(fulltext),普通索引(index) 创建和删除索引索引的创建可以在CREATE TABLE语句中进行,也可以单独CREATE INDEX或ALTER TABLE来...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 400
精华内容 160
关键字:

创建唯一索引可以用