이 기사의 예에서는 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은 check를 지원하지 않습니다
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 페이징
기본 구문:
*에서 선택하면 가져갈 항목과 가져갈 항목 수를 제한하는 조건이 어디인지 나타냅니다
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
select * from은 조건이 어디인지를 나타냅니다. [group by … have … order by …]limit 어떤 항목에서 가져갈 항목, 몇 개의 항목을 꺼낼 것인지
select * from은 조건이 [group by … have … order by …]limit(pageNow-1)*pageSize, pageSize
더 많은 MySQL 관련 콘텐츠에 관심이 있는 독자는 이 사이트의 특별 주제인 "MySQL 인덱스 작업 기술 요약", "MySQL 로그 작업 기술 종합 모음", "MySQL 트랜잭션 작업 기술 요약"을 확인할 수 있습니다. , "MySQL 저장 프로시저 기술 종합 모음" , "MySQL 데이터베이스 잠금 관련 기술 요약" 및 "자주 사용되는 MySQL 함수 요약"
이 기사가 MySQL 데이터베이스를 계획하는 모든 사람에게 도움이 되기를 바랍니다.