Maison >base de données >tutoriel mysql >Contraintes et pagination de la base de données MySQL
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
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 | +----+-------+
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'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 | +----+-------+
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
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));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)
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 | +------+
pagination mysql
Syntaxe de base :
select * from indique où la limite de condition à partir de quel élément prendre, combien d'éléments à retirermysql 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)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)
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