澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站:创建索引和主键,Mysql之表

2019-11-16 作者:数据库网络   |   浏览(156)

一、      主建的创设与删除

DOL:

Mysql之表的操作与索引操作,mysql索引

表的操作: 1.表的创立: create table if not exists table_name(字段定义); 例子: create table if not exists user(id int auto_increment, uname varchar(20), address varchar(200), updateTime datetime, primary key(id)); // 设置主键 2.表(show tables;)定义查看: show create table table_name; DESC table_name; show full columns from table_name; 3.表的更新: (1) 表的重命名:alter table old_user_name rename to new_user_name; rename table old_user_name to new_user_澳门新萄京官方网站:创建索引和主键,Mysql之表的操作与索引操作。name ; (2) 增加列:alter table table_name add column column_nname(修饰); 在表的首先个地点扩张字段,在说话最终加上FILANDST,在表的钦定字段之后加上,在终极加上AFTE锐界属性名; 例子:alter table user add column age int not null default 0 after uname;//在uname列后扩展age列,並且不为空,默感到0. (3) 删除列:alter table table_name drop (column) column_name; (4).字段修正:alter table table_name change cloumn old_column_name new_cloumn_name 属性名 数据类型; 例子:alter table user change column adddress address varchar(1024) not null default 'beijing';// 将adddress重新命名称叫address,范围为1024,不为空,私下认可值为beijing (5).表的去除:drop table table_澳门新萄京官方网站:创建索引和主键,Mysql之表的操作与索引操作。name; (6):复制表:create table new_table_name like old_table_name ; 4.操作表的自律: (1).非空约束(not null); 直接跟在字段后,比方:name varchar(20) not null; (2).设置字段暗中同意值(default 暗中认可值); 间接跟在字段后,比方:name varchar(20) default 'name'; (3).设置唯风流浪漫约束(unique); 唯大器晚成约束指的是不能加多重复值 ;直接跟在字段后,比如:name varchar(20) unique; (4).设置主键限制(primary key); 单字段主键:constraint pk_name primary key(name);间接跟在字段后,比方:id int primary key; 多字段主键:constraint pk_澳门新萄京官方网站,name1_name2 primary key(name1, name2);这么些讲话放在创造表的尾声就能够. (5).设置值自动扩展(auto_increment);直接跟在字段后,举个例子:id int auto_increment; (6).设置外键约束(foreign key): 语法:constraint 外键约束名 foreign key(属性名1) references 表名(属性名2);设置外键只可以放在外键存在的表中,放在建表的末段一句,设置之后 不能够插入父表中空中楼阁的值. 语法例子:constraint fk_deptno foreign key(deptno) references t_dept(deptno); 上边6在那之中除去外间约束和多字段主键节制只可以放在创造表的末尾一句,其他都应有放在成立表时的字段之后,多个节制原则一向紧随其后.譬喻:name varchar(20) not null default 'name';//设置name不为空私下认可值为name.   索引的操作: 1.索引的创设 (1).普通索引: create index index_name on table_name(属性名); 例子: create index idx_name on users(username); 查询时:通过explain select * from users where username = "条件";能够看到type为rel,而普通查询是ALL,相当于完全扫描,减弱效能,建设构造目录能够加强查找效能. (2).独一索引(值独一不得以重新): create unnqiue index index_unique_name on table_name(属性名); 例子:create unique index idx_unique_name on users(username); // 无法加多姓名相符的记录. (3).主键索引(一定是有一无二索引,但唯一索引不自然是主键索引): alter table table_name add primary key(属性名); (4).复合索引: alter table table_name add index index_name(属性名1,属性名2....); 复合索引唯有在复合查找中才起效果,也正是说多规格查询时起效果. (5).全文索引(innodb不扶持全文索引): create fulltext index index_name on table_name(属性名); 2.索引的查阅: show create table table_name; show index from table_name; 3.索引的删减: drop index index_name on table_name; 索引是不能够直接更新的,唯有通过先删除再增多来模仿更新.通过mysql workbench中的索引操作能够详细察看实施的语句,来加深精晓.

表的操作:1.表的成立:create table if not exists table_name(字段定义);例子:create table if not exists user(id int auto...

1.       始建表时同不平日间成立主键(加primary key)

  • 进入mysql:mysql -uroot -p
  • 查看数据库:show databases
  • 步向数据库:use DATABASE'S_NAME
  • 查看数据库中表:show tables

Create Table Book

上述在doc下示范,以往的在工具中示范 mysql中山大学小写不灵活

(

澳门新萄京官方网站 1

  ID int identity(1,1) primary key,


  Name nvarchar(50) not null,

 

  StudentID int not null

  • 创建库:create database if not exists DATABASE'S_NAME
  • 澳门新萄京官方网站 2
  • 创建表:create table  if not exists  TABLE'S_NAME(列名1 属性,列名2 属性,......)

  • 1 create table if not exists mytable(

    2 m_id INT PRIMARY KEY auto_increment,/* 设置m_id为int型 设约束为主键 (唯一不重复不为空)值递增长*/
    3 m_name VARCHAR(20) NOT NULL,/* 设置m_name为varchar 长度为20 约束为不为空*/
    4 m_gender VARCHAR(4) DEFAULT '男',/* 设置m_gender为varchar 长度为4 约束为默认值为男*/
    5 m_IDno VARCHAR(19) UNIQUE/* 设置m_gender为varchar 长度为19 约束为唯一 (不重复可以为空)*/
    6 )DEFAULT CHARSET=utf8/*设置表的字符编码*/
    

    澳门新萄京官方网站 3

     

  • 查看表的属性:desc TABLE'S_NAME             

  • 查看表的原委:select * from TABLE'S_NAME 
  • 扩张表结构(列卡塔 尔(阿拉伯语:قطر‎:alter table TABLE'S_NAME add 列名 列属性 
  • 更改表结构(列卡塔尔国:alter table TABLE'S_NAME change 待更改列的列名 改正后的列名 属性 约束  假如只改良列的数据类型或限制待,那么改革列的列名和改进后的列名可以雷同,可以用: alter table TABLE'S_NAME modify 列名 属性 约束
  •  1 alter table mytable CHANGE m_phone m_emil VARCHAR(20)
  • 删去表结构(列卡塔 尔(英语:State of Qatar):alter table TABLE'S_NAME drop column 列名 
  • 1 alter table mytable DROP COLUMN m_emil 
  • 复制表:create table 新的表名 select * from 数据来源的表   where 1=0;*意味着全体内容 能够换到需求的列 where 1=0 条件语句表示只复制表结构
  • 创建索引:create index INDEX‘S_NAME on TABLE'S_NAME (列名1,列名2,....);索引平日创造在有主键后唯后生可畏节制上
  • 剔除索引:alter table TABLE'S_NAME drop index INDEX‘S_NAME 
  • 设置外键限制:constraint FK_TABLE'S_NAME_列名 foreign key (列名) referenges OTHERTABLE'S_NAME (关联列);OTHERTABLE'S_NAME (关联列) 指主表中的主键,外键和主表的主键关联
  • 1 CREATE TABLE from_mytabele (

    2 f_ID INT PRIMARY key,
    3 f_hight INT,
    4 m_ID INT,
    5 CONSTRAINT FK_fromMytable_MID FOREIGN KEY(m_ID) REFERENCES mytable(m_id)/*设置外键*/
    6 )DEFAULT CHARSET=utf8
    

    澳门新萄京官方网站 4

     

  • 除去唯风姿洒脱限定:alter table TABLE'S_NAME drop constraint Primar KeyNAME 

  • 追加外键:alter table TABLE'S_NAME add CONSTRAINT FK_fromMytable_MID FOREIGN KEY(m_ID) REFERENCES mytable(m_id)
  • 去除了那几个之外键限定:alter table TABLE'S_NAME drop foreign key 外键名
  • ALTER TABLE from_mytabele DROP FOREIGN KEY FK_fromMytable_MID

     

  • 追加主键:alter table TABLE'S_NAME change 列 列 属性 primar key

)


2.       用SQL语句单独创造主键

 

1卡塔尔国成立主键同时会自动在该主键上创设集中索引

语句:alter table [表名] add constraint PK_Book_ID primary key (主键列名)

例如:alter table Book add constraint PK_Book_ID primary key (ID)

2卡塔 尔(阿拉伯语:قطر‎创立主键但不在该主键上创办集中索引(但会自动创造非集中索引卡塔 尔(阿拉伯语:قطر‎

语句:alter table [表名] add constraint PK_Book_ID primary key (主键列名)

例如:alter table Book add constraint PK_Book_ID primary key (ID)

3.       用SQL语句删除主键

语句:alter table [表名] drop constraint [主键名]

例如:alter table Book drop constraint [PK_Book_ID]

二、      目录的创立与删除

1.       创聚焦索引

语句:create clustered index [集中索引名]  on [表名](要创制聚集索引的列名asc|desc) with(drop_existing = on)

例如:create clustered index IX_CLU_Book_ID on Book(ID)

2.       创非集索引

语句:create index [非集中索引名]  on [表名](要创造非集中索引的列名 asc|desc) with(drop_existing = on)

例如:create index IX_ Book_Name on Book(Name)

3.       创复合索引

语句:create index [复合索引名]  on [表名](列名1 asc|desc, 列名2 asc|desc) with(drop_existing = on)

例如:create index IX_com_Book_IDName on Book (ID,Name)

4.       创设独一索引

语句:create unique index index_name on table_name (column ASC|DESC[,.....])with (drop_existing = on)

例如:create unique index IX_Book_ID on Book (ID)

5.       创设覆盖索引

语句:create index index_name on table_Name (columnName ASC|DESC[,......]) include(column_Name_List)with (drop_existing = on)

例如:create index ix_cov_Book_ID_Name on Book (ID) include(Name)

说明:蒙面索引它只是非聚集索引的朝气蓬勃种特意情势,是把数量加到非聚焦索引上。

蒙面索引和常见非聚焦索引的界别:

         1卡塔 尔(英语:State of Qatar)非聚焦索引不包容数据,通过它找到的只是文件中数据行的援引(表是堆的情状下卡塔 尔(阿拉伯语:قطر‎或是集中索引的引用,SQL Server要通那些援用去找到呼应的数据行。

         2卡塔 尔(阿拉伯语:قطر‎正因为非聚焦索引它从未数据,才引发第一回寻觅。

         3卡塔 尔(阿拉伯语:قطر‎覆盖索引就是把多少加到非集中索引上,那样就无需第二回寻觅了。那是生龙活虎种以空间换品质的法子。

6.       筛选索引

语句:create index index_name on table_name(columName) where boolExpression

例如:create index IX_Book_ID on Book(ID) where ID>100 and ID< 200

说明:只对销路好数据加索引,借使大度的询问只对ID 由 100 ~ 200 的数目感兴趣,就可以那样做。

      1卡塔尔可以减小索引的大小

      2卡塔 尔(英语:State of Qatar)为分局数据拉长查询的属性

7.       删去索引

语句:drop index table_Name.Index_Name

例如:drop index Book. IX_ Book_Name

8.       查看表中索引存储进度

 execute sp_helpindex @objname = '表名'

总结:

     BTree 索引有集聚与非集中之分。

     就翻开上到集中索引品质比非聚焦索引质量要好。

     非集中索引分,覆盖索引,独一索引,复合索引(当然集中索引也可以有复合的,复合二字,只是表达索引,引用了多列卡塔 尔(阿拉伯语:قطر‎,平常非聚焦索引就翻开上,非聚焦索引中覆盖索引的性质比别的非聚焦索引质量要好,它的习性和聚焦索引大概,然则它会用越来越多的磁盘空间。

最终说一下以此

     1)with (drop_existing = on|off),加上那几个的野趣是只要那么些目录还在表上就drop 掉然后在create 四个新的。极度是在聚焦索引上用利用这些就足以不会挑起非集中索引的重新建立。

     2卡塔尔国with (online = on|off卡塔 尔(英语:State of Qatar) 创制索引时顾客也能够访谈表中的数据,

     3)with(pad_index = on|off fillfactor = 80); fillfactor 用来设置填充百分比,pad_index 只是用来连接fillfactor 但是它又无法少。

     4)with(allow_row_locks = on|off   |   allow_page_locks = on |off);  是或不是同意页锁 or 行锁

     5)with (data_compression = row | page );  这样能够压缩索引大小

本文由澳门新萄京官方网站发布于数据库网络,转载请注明出处:澳门新萄京官方网站:创建索引和主键,Mysql之表

关键词: