>  기사  >  데이터 베이스  >  MySQL 데이터베이스 제약 조건 및 페이징

MySQL 데이터베이스 제약 조건 및 페이징

黄舟
黄舟원래의
2017-02-11 11:12:501307검색

이 글에서는 주로 MySQL 연구 노트의 데이터 정의 테이블 제약 조건과 페이징 방법을 소개하며, 데이터 정의, 기본 키, 외래 키, 자동 증가, 제약 조건 등의 개념과 사용법을 예시 형태로 정리하고 분석합니다. 그리고 페이징에 대한 정보를 제공합니다. 필요한 친구들은

을 참고하세요. 이 글은 MySQL 연구 노트의 데이터 정의 테이블 제약과 페이징 방법을 예시를 통해 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.

1. 기본 키 기본 키

특징: 기본 키는 고유하게 식별하는 데 사용되는 제약 조건입니다. 최대 하나의 테이블이 있는 레코드 기본 키는 하나만 있을 수 있으며 비워두거나 반복할 수 없습니다

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. 증가

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. 고유 고유 제약 조건

특징: 테이블의 특정 열 값은 NULL

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'

null 삽입이 허용되며

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. null이 아님

MySQL 테이블 열은 기본적으로 null이 될 수 없습니다. 열이 비어 있는 것이 허용되지 않으면 not null 설명을 사용할 수 있습니다.

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. 외래 키 외래 키

이론적으로는 먼저 마스터 테이블을 생성한 후 슬레이브 테이블

직원 테이블:

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

부서 테이블:

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)

요약:

① 외래 키는 테이블의 메인 열 또는 고유 열만 가리킬 수 있습니다.

② 외래 키의 데이터 유형은 열과 일치해야 합니다.

을 가리킨다. ③ 외래키의 값 : NULL 또는 열에 존재하는 값을 가리킨다
④ 외래키는 이 테이블을 가리킬 수 있다. 기본키 열 또는 고유

mysql은 검사를 지원하지 않습니다

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 페이징

기본 구문:

select * from은 가져올 항목, 꺼낼 항목 수를 제한하는 조건을 나타냅니다.

mysql은 항목 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)

중국어 점수별로 정렬, 항목 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)

확장, 페이징: pageNow , pageSize

선택 * from은 조건이 어디에 있는지 나타냅니다. [group by … have … order by …]limit 어떤 항목에서 가져갈 항목, 얼마나 많은 항목을 꺼낼지 나타냅니다.

select * from은 조건이 어디에 있는지 나타냅니다. [group by … 가지고 … order by …]limit (pageNow -1)*페이지크기, 페이지크기

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.