Heim  >  Artikel  >  Datenbank  >  MySQL-Studie stellt fest, dass Einschränkungen bei der Datendefinitionstabelle vorliegen, Zusammenfassung der Paging-Methoden_MySQL

MySQL-Studie stellt fest, dass Einschränkungen bei der Datendefinitionstabelle vorliegen, Zusammenfassung der Paging-Methoden_MySQL

WBOY
WBOYOriginal
2016-10-09 08:33:391115Durchsuche

Das Beispiel in diesem Artikel beschreibt die Einschränkungen der Datendefinitionstabelle und die Paging-Methode der MySQL-Studiennotizen. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

1. Primärschlüssel Primärschlüssel

Funktionen: Der Primärschlüssel ist eine Einschränkung, die zur eindeutigen Identifizierung eines Datensatzes verwendet wird. Eine Tabelle kann höchstens einen Primärschlüssel haben und dieser darf nicht leer oder wiederholt sein

create table user1(id int primary key,name varchar(32));
mysql> insert into user1 values(1,'hb');
Query OK, 1 row affected (0.10 sec)
mysql> insert into user1 values(1,'hb');
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
mysql> insert into user1 (name) values('hb');
ERROR 1364 (HY000): Field 'id' doesn't have a default value

2. auto_increament selbsterhöhend

mysql> create table user2(id int primary key auto_increment,name varchar(34));
mysql> insert into user2 (name ) values ("name1");
Query OK, 1 row affected (0.09 sec)
mysql> insert into user2 (name ) values ("name2");
Query OK, 1 row affected (0.05 sec)
mysql> insert into user2 (name ) values ("name3");
Query OK, 1 row affected (0.13 sec)
mysql> select * from user2;
+----+-------+
| id | name |
+----+-------+
| 1 | name1 |
| 2 | name2 |
| 3 | name3 |
+----+-------+

3. Einzigartige Eindeutigkeitsbeschränkung

Funktionen: Ein bestimmter Spaltenwert in der Tabelle kann nicht wiederholt werden und wiederholte NULL-Werte können hinzugefügt werden

create table user3(id int primary key auto_increment,name varchar(34) unique);
mysql> create table user3(id int primary key auto_increment,name varchar(34) unique);
Query OK, 0 rows affected (0.39 sec)
mysql> insert into user3 (name ) values ("name3");
Query OK, 1 row affected (0.11 sec)
mysql> insert into user3 (name ) values ("name3");
ERROR 1062 (23000): Duplicate entry 'name3' for key 'name'

Ermöglicht das Einfügen von Nullen und mehreren

mysql> insert into user3 (name ) values (null);
Query OK, 1 row affected (0.12 sec)
mysql> insert into user3 (name ) values (null);
Query OK, 1 row affected (0.12 sec)
mysql> select * from user3;
+----+-------+
| id | name |
+----+-------+
| 3 | NULL |
| 4 | NULL |
| 1 | name3 |
+----+-------+

4. Nicht null

MySQL-Tabellenspalten können standardmäßig null sein. Wenn eine Spalte nicht leer sein darf, können Sie die Not-Null-Anweisung verwenden

create table user4 (id int primary key auto_increment,name varchar(32) not null);
mysql> insert into user4 (name) values(null);
ERROR 1048 (23000): Column 'name' cannot be null

5. Fremdschlüssel Fremdschlüssel

Theoretisch erstellen Sie zuerst die Master-Tabelle und dann die Slave-Tabelle

Mitarbeitertabelle:

create table dept(id int primary key , name varchar(32));

Abteilungstabelle:

create table emp(
id int primary key ,
name varchar(32),
deptid int,
constraint myforeignkey foreign key(deptid) references dept(id)
);
mysql> select * from dept;
+----+-------+
| id | name |
+----+-------+
| 1 | name1 |
+----+-------+
1 row in set (0.00 sec)
mysql> insert into emp values(1,'aaa',1);
Query OK, 1 row affected (0.22 sec)
mysql> insert into emp values(1,'aaa',2);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
mysql> insert into emp values(1,'aaa',null);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
mysql> insert into emp values(2,'aaa',null);
Query OK, 1 row affected (0.13 sec)
mysql> select * from emp;
+----+------+--------+
| id | name | deptid |
+----+------+--------+
| 1 | aaa |   1 |
| 2 | aaa |  NULL |
+----+------+--------+
2 rows in set (0.00 sec)

Zusammenfassung:

① Fremdschlüssel können nur auf Primärspalten der Haupttabelle verweisen oder eindeutig sein
② Der Datentyp des Fremdschlüssels sollte mit dem Spaltentyp übereinstimmen, auf den er verweist
③ Der Wert des Fremdschlüssels: NULL oder Verweis auf den in der Spalte
vorhandenen Wert ④ Der Fremdschlüssel kann auf die Primärschlüsselspalte dieser Tabelle verweisen oder eindeutig sein

MySQL unterstützt keine Prüfung

create table user99(age int check(age>13));
mysql> create table user99(age int check(age>13));
Query OK, 0 rows affected (0.19 sec)
mysql> insert into user99 values(99);
Query OK, 1 row affected (0.04 sec)
mysql> select * from user99;
+------+
| age |
+------+
|  99 |
+------+

MySQL-Paging

Grundlegende Syntax:

Auswählen * aus gibt an, wo die Bedingungsgrenze liegt, aus welchem ​​Artikel entnommen werden soll und wie viele Artikel entnommen werden sollen
MySQL beginnt mit dem Abrufen von Daten von Element 0

mysql> select * from student;
+------+--------+---------+---------+------+
| id  | name  | chinese | english | math |
+------+--------+---------+---------+------+
|  1 | 张小明   |   89 |   78 |  90 |
|  2 | 李进    |   67 |   98 |  56 |
|  3 | 王五    |   87 |   78 |  77 |
|  4 | 李一   |   88 |   98 |  90 |
|  5 | 李来财    |   82 |   84 |  67 |
|  6 | 张进宝   |   55 |   85 |  45 |
|  7 | 张小明   |   75 |   65 |  30 |
+------+--------+---------+---------+------+
7 rows in set (0.05 sec)
mysql> select * from student limit 2,2;
+------+------+---------+---------+------+
| id  | name | chinese | english | math |
+------+------+---------+---------+------+
|  3 | 王五   |   87 |   78 |  77 |
|  4 | 李一  |   88 |   98 |  90 |
+------+------+---------+---------+------+
2 rows in set (0.00 sec)

In der Reihenfolge der Chinesisch-Sprachbewertungen untersuchen Sie die Punkte 3 bis 5

mysql> select * from student order by chinese desc limit 3,2;
+------+--------+---------+---------+------+
| id  | name  | chinese | english | math |
+------+--------+---------+---------+------+
|  5 | 李来财    |   82 |   84 |  67 |
|  7 | 张小明   |   75 |   65 |  30 |
+------+--------+---------+---------+------+
2 rows in set (0.00 sec)

Erweiterung, Paging: pageNow, pageSize

Auswählen * aus gibt an, wo die Bedingung ist [gruppieren nach … mit … sortieren nach …]Limit Von welchem ​​Artikel entnommen werden soll, wie viele Artikel entnommen werden sollen
select * from gibt an, wo die Bedingung [gruppiert nach … mit … sortiert nach …]limit (pageNow-1)*pageSize, pageSize

ist

Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die speziellen Themen dieser Website ansehen: „Zusammenfassung der MySQL-Indexoperationsfähigkeiten“, „Umfassende Sammlung der MySQL-Protokolloperationsfähigkeiten“, „Zusammenfassung der MySQL-Transaktionsoperationsfähigkeiten“, „Umfassende Sammlung von MySQL-Kenntnissen für gespeicherte Prozeduren“, „Zusammenfassung der Techniken zum Sperren von MySQL-Datenbanken“ und „Zusammenfassung häufig verwendeter MySQL-Funktionen“

Ich hoffe, dass dieser Artikel für alle bei der MySQL-Datenbankplanung hilfreich sein wird.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn