约束

实体完整性约束

表中一行数据代表一个实体,实体完整性约束是标识每一行数据不重复使得实体具有唯一性;

  1. 主键约束
    PRIMARY KEY 唯一、标识表中的一行数据,此列的值不可重复,且不能为NULL
#创建表中,选择适合做主键的列,添加主键约束
#学生表
CREATE TABLE Student(stuid INT PRIMARY KEY,#主键约束,每一个编号是唯一的,不能为nullstuName VARCHAR(20),phone VARCHAR(11)
)CHARSET=utf8;
INSERT INTO Student(stuid,stuName,phone)
VALUE (001,'kaka',100015);
  1. 唯一约束
    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;
  1. 自动增长列
    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);

域完整性约束

限制列的每一个单元格的数据正确性

  1. 非空约束
    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');
  1. 默认值约束
    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);
  1. 引用完整性约束

语法: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,#默认值20specialid 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);
  • 两张表存在引用关系时,执行删除操作注意,先删除从表(引用表、外键表),再删除主表(被引用表、主键表;
#eg:删除Speciality
DROP TABLE Speciality;#先删除主表,容易造成外键表数据孤立,不可先删除
DROP TABLE `subject`;#先删除引用表后删除主表

约束创建整合

创建带有约束的表

  1. 创建Grade表
#Grade
CREATE TABLE Grade(GradeId INT PRIMARY KEY AUTO_INCREMENT,#主键、自增GradeName VARCHAR(20) UNIQUE NOT NULL#唯一、非空
)CHARSET = utf8;
SELECT * FROM Grade;
INSERT INTO Grade(GradeName) VALUES('JAVA');
INSERT INTO Grade(GradeName) VALUES('HTML');
INSERT INTO Grade(GradeName) VALUES('Spring');
  1. 创建Student表
#Student表
CREATE TABLE Student(student_id VARCHAR(50) PRIMARY KEY,#主键student_name VARCHAR(50) NOT NULL,#非空sex CHAR(2) DEFAULT '男',#默认男borndate DATE NOT NULL,#非空phone VARCHAR(11),GradeId INT NOT NULL,#非空CONSTRAINT fk_student_gradeId #外键约束FOREIGN KEY(GradeId)#列名 REFERENCES Grade(GradeId)#被引用表名
)CHARSET=utf8;
SELECT * FROM student;
INSERT INTO student(student_id,student_name,sex,borndate,phone,GradeId)
VALUES('1001','卡卡',DEFAULT,'200200101',NULL,2);
INSERT INTO student(student_id,student_name,sex,borndate,phone,GradeId)
VALUES('1002','糖糖','女','20200101',NULL,3);
  • 在创建有关系关联表时,要先创建主表(主键),再创建从表(外键表)

数据表的修改

语法:ALTER TABLE 表名  修改操作;
  1. 向现有表中添加列
#向现有表中添加列
ALTER TABLE Student ADD image BLOB;
#ADD 新列名 数据类型 [约束]
  1. 修改表中的列
#修改表的类型和约束
ALTER TABLE student MODIFY phone VARCHAR(14) NOT NULL
  • 修改表中的某列时,需要写全列的名字、数据类型、约束;
  1. 删除表中的列
#删除现有表的列
ALTER TABLE student DROP image;
  1. 修改表的列名
#修改表中的列名
ALTER TABLE student CHANGE borndate birthday DATE NOT NULL;
  • 改变列名时,在给定新列名的同时,要指定列的数据类型和约束;
  1. 修改表名
#修改表名
ALTER TABLE student RENAME stu;
  1. 删除表
DROP TABLE 表名
#删除学生表
DROP TABLE stu;

MySQL中的约束及修改问题相关推荐

  1. MySQL学习笔记-约束以及修改数据表

    MySQL学习笔记-约束以及修改数据表 约束: 按功能划为: NOT NULL , PRIMARY KEY , UNIQUE KEY , DEFAULT , FOREIGN KEY 按数据列的数目划为 ...

  2. mysql中利用sql语句修改字段名称,字段长度等操作(亲测)

    在网站重构中,通常会进行数据结构的修改,所以添加,删除,增加mysql表的字段是难免的,有时为了方便,还会增加修改表或字段的注释,把同字段属性调整到一块儿.这些操作可以在phpmyadmin或者别的m ...

  3. 一、TCL事务控制语言 二、MySQL中的约束 三、多表查询(重点) 四、用户的创建和授权 五、MySQL中的索引...

    一.TCL事务控制语言 ###<1>事务的概念 事务是访问并可能更新数据库中各种数据项的执行单元. 事务是一条SQL语句,一组SQL语句,或者整个程序. 事务是恢复和并发控制的基本单位. ...

  4. MySQL学习笔记 约束以及修改数据表

    *** 约束保证数据的完整性和一致性 *** 约束分为表级约束和列级约束 *** 约束类型包括: NOT NULL(非空约束) PRIMARY KEY(主键约束) UNIQUE KEY(唯一约束) D ...

  5. mysql中索引约束有哪些_Mysql中索引和约束的示例语句

    外键 查询一个表的主键是哪些表的外键 SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME, REFERENCE ...

  6. mysql怎么添加默认约束_分享知识-快乐自己:MySQL中的约束,添加约束,删除约束,以及一些其他修饰...

    创建数据库: CREATE DATABASES 数据库名: 选择数据库: USE 数据库名: 删除数据库: DROP DATAVBASE 数据库名: 创建表: CREATE TABLE IF NOT ...

  7. 如何增加mysql主键约束_mysql修改表时怎么添加主键约束?

    mysql中可以通过"ALTER TABLE 表名 ADD PRIMARY KEY(字段名);"语句在修改数据表时添加主键约束:当在修改表时要设置表中某个字段的主键约束时,要确保设 ...

  8. mysql中约束_【MySQL】:MySQL中四大约束

    所有的关系型数据库都支持对数据表使用约束,在表上强制执行数据校验,保证数据的完整性. MySQL数据库支持以下四种约束形式: 非空约束 NOT NULL 所有数值类型的值都可以为null. 空字符串和 ...

  9. mysql中如何删除表中int约束,MySQL中的约束,添加约束,删除约束,以及其他修饰

    一.NOT NULL(非空约束) 添加非空约束 1)建表时直接添加 CREATE TABLE t_user(user_id INT(10) NOT NULL); 2)通过ALTER 语句 ALTER ...

最新文章

  1. Android--Otto事件总线 -- 组件之间通讯框架使用 --模式解析
  2. HttpClien GetPost
  3. 2017ACM/ICPC广西邀请赛-重现赛 1007.Duizi and Shunzi
  4. PAT (Basic Level) Practice (中文)1001 害死人不偿命的(3n+1)猜想 (15 分)
  5. Java类加载机制总结
  6. ElasticSearch搜索语法进阶学习(搜索+聚合,过滤+聚合)
  7. java中string类的常用方法举例说明
  8. 在linux添加驱动程序,linux下静态/动态加载驱动的两种方式
  9. python练习题--斐波那契数列
  10. **记录在win10电脑上使用Duet display的一次经历**
  11. 初学者自学计算机软件,中望CAD初学者自学宝典
  12. MSF利用ms17_010实验
  13. wps怎么把边框加粗_怎么设置WPS表格边框线加粗 - 卡饭网
  14. LittleVGL移植到STM32
  15. 【Java网络编程】:Netty实现OIO和NIO
  16. 推荐一个GitHub上牛b的Java学习项目,已整理成了文档版本
  17. 工业互联网平台:将为“补链”“优链”“强链”提供有力保障
  18. vscode代码提示出来慢
  19. 帝国cms内容模板sql语句方式调用当前TAG标签
  20. 读《轻断食》的一些体会

热门文章

  1. 光电效应:爱因斯坦关于光的观点
  2. 联想开天s620z改win7和Linux,图文并茂,教会你联想商用机改换win7系统bios设置
  3. 川藏南线(318)之旅
  4. make之PHONY浅析
  5. 无锡---苏州---无锡
  6. OSTA该项考试分为几个等级?
  7. matlab基础-如何在Matlab绘图中添加x坐标文字标签
  8. 新概念英语第二册课文电子版_学完新概念英语第一册相当于什么水平?
  9. Fortran77-90-95
  10. 《Pro SQL Server Internals, 2nd edition》CHAPTER 2 Tables and Indexes-Clustered Indexes