Heim  >  Artikel  >  Datenbank  >  MySQL-Datenbankeinschränkungen und Paging

MySQL-Datenbankeinschränkungen und Paging

黄舟
黄舟Original
2017-02-11 11:12:501370Durchsuche

In diesem Artikel werden hauptsächlich die Datendefinitionstabellenbeschränkungen und Paging-Methoden der MySQL-Studiennotizen vorgestellt. Er fasst die Konzepte und die Verwendung von Datendefinition, Primärschlüssel, Fremdschlüssel, automatischer Inkrementierung und Einschränkungen in Form von Beispielen zusammen. Freunde in Not können sich auf Beispiele und verwandte Betriebsfähigkeiten beziehen

Dieser Artikel beschreibt die Einschränkungen der Datendefinitionstabelle und die Paging-Methode von MySQL-Studiennotizen anhand von Beispielen. Teilen Sie es allen als Referenz mit. Die Details lauten wie folgt:

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

Funktionen: Der Primärschlüssel ist eine Einschränkung zur eindeutigen Identifizierung ein Datensatz mit maximal einer Tabelle. Es kann nur einen Primärschlüssel geben, der nicht leer oder wiederholt sein darf

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 Selbsterhöhung

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. Merkmale: 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

Die Spalten der MySQL-Tabelle können standardmäßig null sein. Wenn eine Spalte nicht leer sein darf, können Sie dies tun Verwenden Sie die Nicht-Null-Beschreibung

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. Theoretisch erstellen Sie die Mastertabelle Erstellen Sie zuerst die Slave-Tabelle

Mitarbeitertabelle:

Abteilungstabelle:

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

Zusammenfassung:

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)

① Der Fremdschlüssel kann nur auf die Primärspalte der Haupttabelle verweisen oder eindeutig sein

② Der Datentyp des Fremdschlüssels sollte mit dem Spaltentyp übereinstimmen, auf den er zeigt

③ Der Wert des Fremdschlüssels: NULL oder auf die Spalte zeigend Der in ④ vorhandene Wert Der Fremdschlüssel kann auf die Primärschlüsselspalte von zeigen Diese Tabelle oder eindeutig

MySQL unterstützt keine Überprüfung


MySQL-Paging

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 |
+------+

Grundsätzliche Syntax:

Auswählen * aus gibt an, wo die Bedingungsgrenze angibt, aus welchem ​​Element entnommen werden soll und wie viele Elemente entnommen werden sollenMySQL ja Beginnen Sie mit der Datenerfassung ab Element 0


Nach chinesischen Bewertungen sortieren, Punkte 3 bis 5 untersuchen

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)

Erweiterung, Paging: pageNow, pageSize

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)

select * from gibt an, wo Bedingung [gruppieren nach … mit … sortieren nach …]limit from Ein paar Artikel erhalten, ein paar Artikel herausnehmen

select * from Gibt an, wo die Bedingung [gruppiert nach … mit … sortiert nach …]limit (pageNow-1)*pageSize, pageSize

liegt

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