MySQL表的增删改查(2)

数据库约束
约束类型:
NOT NULL - 指示某列不能存储 NULL 值。
UNIQUE - 保证某列的每行必须有唯一的值。
DEFAULT - 规定没有给列赋值时的默认值。
PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标
识,有助于更容易更快速地找到表中的一个特定的记录。
FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
CHECK - 保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略
CHECK子句。

--  NULL约束
-- 重新设置学生表结构
DROP TABLE IF EXISTS student;
CREATE TABLE student (
   	id INT NOT NULL,
   	sn INT,
   	name VARCHAR(20),
   	qq_mail VARCHAR(20)
);

-- UNIQUE 唯一约束
-- 重新设置学生表结构
DROP TABLE IF EXISTS student;
CREATE TABLE student (
   	id INT NOT NULL,
   	sn INT UNIQUE,
   	name VARCHAR(20),
   	qq_mail VARCHAR(20)
);

-- DEFAULT 默认值约束
-- 重新设置学生表结构
DROP TABLE IF EXISTS student;
CREATE TABLE student (
   	id INT NOT NULL,
   	sn INT UNIQUE,
   	name VARCHAR(20) DEFAULT 'unkown',
   	qq_mail VARCHAR(20)
);

-- PRIMARY KEY 主键约束
-- 重新设置学生表结构
DROP TABLE IF EXISTS student;
CREATE TABLE student (
   	id INT NOT NULL PRIMARY KEY,
   	sn INT UNIQUE,
   	name VARCHAR(20) DEFAULT 'unkown',
   	qq_mail VARCHAR(20)
);

-- FOREIGN KEY 外键约束
-- 创建班级表,有使用MySQL关键字作为字段时,需要使用``来标识
DROP TABLE IF EXISTS classes;
CREATE TABLE classes (
 	id INT PRIMARY KEY auto_increment,
 	name VARCHAR(20),
 	`desc` VARCHAR(100)
);
-- 重新设置学生表结构
DROP TABLE IF EXISTS student;
CREATE TABLE student (
	id INT PRIMARY KEY auto_increment,
   	sn INT UNIQUE,
   	name VARCHAR(20) DEFAULT 'unkown',
   	qq_mail VARCHAR(20),
 	classes_id int,
 	FOREIGN KEY (classes_id) REFERENCES classes(id)
);

--  CHECK约束
drop table if exists test_user;
create table test_user (
   	id int,
   	name varchar(20),
   	sex varchar(1),
   	check (sex ='男' or sex='女')
);

表的设计

-- 创建课程表
DROP TABLE IF EXISTS course;
CREATE TABLE course (
   id INT PRIMARY KEY auto_increment,
   name VARCHAR(20)
);

-- 创建课程学生中间表:考试成绩表
DROP TABLE IF EXISTS score;
CREATE TABLE score (
	id INT PRIMARY KEY auto_increment,
 	score DECIMAL(3, 1),
 	student_id int,
 	course_id int,
 	FOREIGN KEY (student_id) REFERENCES student(id),
 	FOREIGN KEY (course_id) REFERENCES course(id)
);

新增

-- 创建用户表
DROP TABLE IF EXISTS test_user;
CREATE TABLE test_user (
	id INT primary key auto_increment,
   	name VARCHAR(20) comment '姓名',
   	age INT comment '年龄',
   	email VARCHAR(20) comment '邮箱',
 	sex varchar(1) comment '性别',
 	mobile varchar(20) comment '手机号'
);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章