1. Was ist ein Index?
Index ist eine Datenstruktur, die MySQL dabei hilft, Daten effizient zu erhalten.
Zusätzlich zum Speichern von Daten verwaltet die Datenbank auch Datenstrukturen, die bestimmte Suchalgorithmen erfüllen. Diese Datenstrukturen verweisen auf die Daten in irgendeiner Weise, sodass erweiterte Suchalgorithmen auf diese Datenstrukturen implementiert werden können . Diese Datenstruktur ist ein Index. Indizes können die Abrufgeschwindigkeit von MySQL erheblich verbessern.
In MySQL hat MySQL für eine Primärschlüsselspalte automatisch Unique und Index dafür eingerichtet.
a. Index erstellen:
create table 表名( id int not null, name varchar(10) not null, index(name(length)) //使用name字段作为索引 );
b. Index anzeigen:
show index from 表名;
c. Index löschen:
alter table 表名 drop index name;
2. Was sind Einschränkungen?
Einschränkungen dienen dazu, die Integrität und Konsistenz der Daten sicherzustellen. Abhängig von der Anzahl der Felder in der Einschränkung werden Einschränkungen in Einschränkungen auf Spaltenebene und Einschränkungen auf Tabellenebene unterteilt.
Einschränkungen auf Spaltenebene: werden für ein bestimmtes Feld verwendet.
Einschränkungen auf Tabellenebene: werden für zwei oder mehr Felder verwendet.
| Definition | ||||||||||||
nicht null | Nicht-Null-Einschränkung | ||||||||||||
Primärschlüssel | < td width="216" valign="top" style="word-break: break-all;">Primärschlüsseleinschränkungen|||||||||||||
eindeutiger Schlüssel | eindeutiger Schlüssel | tr>||||||||||||
Standard | Standardeinschränkungen | ||||||||||||
Fremdschlüssel | Fremdschlüsseleinschränkungen |
1), eindeutige (upique) Einschränkung
eindeutige Einschränkung identifiziert jeden Datensatz in der Datenbanktabelle eindeutig. Sowohl Eindeutigkeits- als auch Primärschlüsseleinschränkungen bieten Eindeutigkeitsgarantien für Spalten.Der Primärschlüssel wird automatisch als eindeutige Einschränkung definiert.
Hinweis: Jede Tabelle kann mehrere eindeutige Einschränkungen haben, aber jede Tabelle kann nur eine Primärschlüsseleinschränkung haben.
//第一种方式 create table persons( id_p int not null, address varchar(255), city varchar(255), phone varchar(11) unique //定义字段的同时,定义约束 ); //第二种方式 create table persons( id_p int not null, address varchar(255), city varchar(255), phone varchar(11), unique phone(phone) //单独一行命令,定义约束 ); //第三种方式 alter table persons add unique city(city); //表后添加(修改表)
wird verwendet, um den Standardwert des Werts in der entsprechenden Spalte einzuschränken (es sei denn, der Standardwert ist null). , sonst können keine Nullwerte eingefügt werden).
create table persons( id tinyint primary key auto_increment, name varchar(30), sex enum('m','w')default 'm' //定义sex默认值为'm' );
Jede Datentabelle kann nur einen Primärschlüssel haben. Der Primärschlüssel stellt die Eindeutigkeit des Datensatzes sicher Primärschlüssel ist automatisch nicht null (dient auch als Index der Tabelle).
Fügen Sie einen Primärschlüssel für eine Tabelle ohne Primärschlüssel hinzu
alter table 表名 add primary key (字段名);
//先创建父表,子表才能建外键,父表和子表必须都是innodb引擎。 //city父表 create table city( id tinyint primary key, name varchar(10) not null )engine=INNODB; //students子表 create table students( id tinyint primary key auto increment, //定义字段时同时定义 city tinyint, //外键字段类型要与主表相同 foreign key(city) references city(id), //city字段作为外键,引用city表中的id )engine=INNODB; //主表的数据可以修改,但不能删除 //删除city中的记录 delete from city where id=1; //创建外键以后,再删除city记录,就会报错 ERROR 1451(23000):Cannot delete or update a parent row: a foreign key constraint fails(`hxsd`.`students`, CONSTRAINT `students ibfk 1` FOREIGN KEY(`city`) REFERENCES `city`(`id`)
3. Einschränkungen löschen
a. Primärschlüssel löschen
alter table 表名 drop primary key;
b. Index löschen
alter table 表名 drop index index_name;
c. Fremdschlüsseleinschränkungen löschen
alter table 表名 drop foreign key FK_ID;
Das obige ist der detaillierte Inhalt vonDie Verwendung und der Unterschied zwischen Indizes und Einschränkungen in MySql. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!