标题: MySQL中的约束及修改问题,一文搞懂JVM架构和运行时数据区 [打印本页] 作者: 拉不拉稀肚拉稀 时间: 2024-6-10 01:44 标题: MySQL中的约束及修改问题,一文搞懂JVM架构和运行时数据区 #创建表中,选择适合做主键的列,添加主键约束
#学生表
CREATE TABLE Student(
stuid INT PRIMARY KEY,#主键约束,每一个编号是唯一的,不能为null
stuName VARCHAR(20),
phone VARCHAR(11)
)CHARSET=utf8;
INSERT INTO Student(stuid,stuName,phone)
VALUE (001,‘kaka’,100015);
唯一约束
UNIQUE 唯一、标识表中的一行数据,不可重复,可以为NULL;
#表中的手机号列,添加唯一约束!不能重复,但是可以为NULL
CREATE TABLE Student(
stuid INT PRIMARY KEY,
stuName VARCHAR(20),
phone VARCHAR(11) UNIQUE#唯一的约束,可以为空;
)CHARSET=utf8;
INSERT INTO Student(stuid,stuName,phone)
VALUE (002,‘kaka’,1000154);
INSERT INTO Student(stuid,stuName,phone)
VALUE (003,‘kaka’,NULL);
SELECT * FROM Student;
主动增长列
AUTO_INCREMENT 主动增长,给主键数值列添加主动增长。从1开始,每次++;不能单独使用,和主键搭配;
#主动增长,避免ID重复
CREATE TABLE Student(
stuid INT PRIMARY KEY AUTO_INCREMENT,#必须搭配主键
stuName VARCHAR(20),
phone VARCHAR(11)
)CHARSET = utf8;
INSERT INTO Student(stuName,phone)
VALUE (001,‘kaka’,100015);
INSERT INTO Student(stuName,phone)
VALUE (002,‘kaka’,1000154);
INSERT INTO Student(stuName,phone)
VALUE (003,‘kaka’,NULL);
域完整性约束
限制列的每一个单位格的数据精确性
非空约束
NOT NULL 非空,约束此列的每一个单位格不允许有NULL值;
#非空约束,必须有值
CREATE TABLE emp(
id INT PRIMARY KEY AUTO_INCREMENT,
empName VARCHAR(20) NOT NULL,#约束名字一列必须有值
address VARCHAR(50) NOT NULL
)CHARSET = utf8;
INSERT INTO emp (empName,address) VALUE (‘kaka’,‘xi`an’);
默认值约束
DEFAULT 为列赋予默认值,当新增的数据不指定值时,写DEFAULT,以界说好的默认值举行填充;
#默认值约束
CREATE TABLE emp(
id INT PRIMARY KEY AUTO_INCREMENT,
empName VARCHAR(20) NOT NULL,#约束名字一列必须有值
address VARCHAR(50) NOT NULL,
sex CHAR(1) DEFAULT ‘女’#不给值填充默认值女
)CHARSET = utf8;
INSERT INTO emp (empName,address,sex) VALUE (‘kaka’,‘xi`an’,DEFAULT);
引用完整性约束
语法:CONSTRAINT 引用名 FOREIGN KEY (列名) REFERENCES 被引用表名(列名) FOREIGN KEY 引用外部表的某5个列的值,新增数据时,约束此列的值必须是被引用表中存在的值
#引用完整性约束
#专业表
CREATE TABLE Speciality(
id INT PRIMARY KEY AUTO_INCREMENT,#主动增长
SpecialName VARCHAR(20) UNIQUE NOT NULL#唯一且不为空
)CHARSET = utf8;
#课程表
CREATE TABLE subject(
subjectid INT PRIMARY KEY AUTO_INCREMENT,
subjecname VARCHAR(20) UNIQUE NOT NULL,
subjecthours INT DEFAULT 20,#默认值20
specialid INT NOT NULL,
CONSTRAINT fk_subject_specialid#外键
FOREIGN KEY(specialid)
REFERENCES Speciality(id)
)CHARSET=utf8;
#存在引用关系的表。要先添加被引用的表数据(主键表).再添加引用表的数据(外键表)
INSERT INTO Speciality (SpecialName) VALUES(‘Java’);
INSERT INTO Speciality (SpecialName) VALUES(‘HTML5’);
INSERT INTO subject(subjecname,subjecthours,specialid)
VALUES(‘JavaSE’,10,1);
INSERT INTO subject(subjecname,subjecthours,specialid)
VALUES(‘JavaScript’,20,2);