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'
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
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, pageSizeliegt