Maison > base de données > tutoriel mysql > Contraintes et pagination de la base de données MySQL

Contraintes et pagination de la base de données MySQL

黄舟
Libérer: 2017-02-11 11:12:50
original
1406 Les gens l'ont consulté

Cet article présente principalement les contraintes des tables de définition de données et les méthodes de pagination des notes d'étude MySQL. Il résume et analyse les concepts et l'utilisation de la définition des données, de la clé primaire, de la clé étrangère, de l'auto-incrémentation, des contraintes, etc. exemples et donne quelques informations sur la pagination. Pour des exemples et des compétences opérationnelles associées, les amis dans le besoin peuvent se référer à

Cet article décrit les contraintes de la table de définition de données et la méthode de pagination des notes d'étude MySQL à travers des exemples. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

1. Clé primaire Clé primaire

Caractéristiques : La clé primaire est une contrainte utilisée pour identifier de manière unique un enregistrement, avec un maximum d'une table. Il ne peut y avoir qu'une seule clé primaire, qui ne peut être ni vide ni répétée

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
Copier après la connexion

auto_increament. auto-augmentation

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 |
+----+-------+
Copier après la connexion

3. dans le tableau ne peut pas être répété, et des NULL répétés peuvent être ajoutés

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'
Copier après la connexion
permet d'insérer null, et plusieurs

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 |
+----+-------+
Copier après la connexion

4. non nul

Les colonnes de la table mysql peuvent être nulles par défaut. Si une colonne ne peut pas être vide, vous pouvez le faire. utilisez la description non nulle

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
Copier après la connexion

5. Clé étrangère clé étrangère

Théoriquement, créez la table principale d'abord, puis créez la table esclave

Table des employés :

create table dept(id int primary key , name varchar(32));
Copier après la connexion
Table des départements :

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)
Copier après la connexion

Résumé :

① La clé étrangère ne peut pointer que vers la colonne primaire de la table principale ou unique② Le type de données de la clé étrangère doit être cohérent avec le type de colonne vers lequel elle pointe

③ La valeur de la clé étrangère : NULL ou pointant vers la colonne La valeur existant dans

④ La clé étrangère peut pointer vers la colonne de clé primaire de cette table ou unique


mysql ne prend pas en charge la vérification

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 |
+------+
Copier après la connexion

pagination mysql

Syntaxe de base :

select * from indique où la limite de condition à partir de quel élément prendre, combien d'éléments à retirer

mysql oui Commencer à prendre les données de l'élément 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)
Copier après la connexion
Trier par scores chinois, enquêter sur les éléments 3 à 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)
Copier après la connexion

Extension, pagination : pageNow, pageSize

select * from indique où condition [grouper par… avoir… commander par…]limite de la page Obtenez quelques articles, retirez quelques articles select * from indique où la condition [groupe par… ayant… ordre par…]limit (pageNow-1)*pageSize, pageSize

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal