数据库约束定义及分类

约束

约束定义及分类:

Constraint,对数据库中的数据做要求,以保证设计出来的数据库及其中的数据真实可用。

约束分为

  • 行完整性约束(三范式)
  • 列完整性约束。
  • 主键约束

Alter table 表名 add constraint PK_表名_列名 primary key(列名);

创建表时可以简写

Create table tt(ttid int primary key);

Create table tt(ttid int,primary key(ttid));

创建的主键名是PK_随机的十六进制代码

 

外键约束

外键约束是加在外键表中,外键表中也有主键。

Alter table 外键表 add constraint FK_外键表名_外键列 foreign key(外键列) references 主键表(主键列);

 

删除外键约束

alter table 表名 drop foreign key FK_表名_列名;

在创建表时还可以简写

Create table 表名(

T1id int primary key auto_increment,

Scid int,

Foreign key(scid) references 主表(主键列)

);

 

唯一约束

Alter table 表名 add constraint UQ_表名_列名 unique(列名);

在创建表时还可以简写

Create table 表名(

T1id int primary key auto_increment,

Scid int,

unique(列名)

);

 

默认值约束

Alter table 表名 alter 列名 set default 值;

  • 对于允许为空的列并且设置了默认值,插入时省略该列值为默认值;

Insert into 表名(主键[省略掉设置了默认值而且允许为空的列]) values(null);

  • 设置默认值,插入可以使用default关键字调用默认值;

Insert into 表名(主键,默认值列) values(null,default);

  • 插入时不要默认可以自由指定。

Insert into 表名(主键,默认值列) values(null,’其他值’);

创建表时又可以简写

Create table 表名(

默认值列 default 值

);

 

检查约束

Alter table 表名 add constraint CK_表名_列名 check(表达式);

ALTER table Student add constraint CK_Student_sname check(sname is not null);

 

创建表时可以简写

Create table Student(

Sname not null

);

 

Alter table Student add constraint CK_Student_sAge check(sAge>=18 and sAge<=60);

等同于

Alter table Student add constraint CK_Student_sAge check(sAge between 18 and 60);

 

MYSQL不知道检查约束!!

 

  • 对于由于操作系统或者浏览器外界元素的编码导致的乱码,在数据库中可以通过一个指令来纠正。

Set names 对应数据的编码;

Set character set 对应数据库的编码;

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/2930.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
上一篇 2017年10月22日 22:28
下一篇 2017年10月24日 08:28

相关推荐

  • MySQL中如何定位慢查询?

    使用Spring Boot实现分页和排序需要借助Spring Data JPA。Spring Data JPA是Spring Data项目中的一个模块,提供了简化数据访问层的功能,包括分页和排序。  接下来我们通过一段Java代码,展示如何使用Spring Da...

    2023年8月29日
    05
  • 聊聊个人博客虚拟主机租用怎么选择配置。

    个人博客虚拟主机租用怎么选择配置 在搭建个人博客时,选择一个合适的虚拟主机是非常重要的,本文将从以下几个方面介绍如何选择虚拟主机的配置: 1、网站流量 我们需要考虑的是网站的流量,如果预计每天访问量较...

    2024年7月8日
    01
  • 数据库密码如何修改,navicat修改数据库密码。

    在数据库中,密码是保护数据安全的重要手段,如果你忘记了Navicat的数据库密码,或者需要修改Navicat的数据库密码,可以按照以下步骤进行操作。 你需要打开Navicat软件,在主界面,点击左上角的“连接”按钮,然后...

    2024年6月16日
    01
  • 聊聊mysql 修改表编码。

    MySQL修改表编码:ALTER TABLE 表名 CONVERT TO CHARACTER SET 编码; MySQL怎么修改表编码 在MySQL中,表的编码是用于存储数据的字符集和排序规则,如果数据包含特殊字符或者需要进行特定语言的文本处理,那么就...

    2024年7月21日
    03
  • 关于怎么查看postgresl的版本信息。

    要查看PostgreSQL的版本信息,可以在命令行中输入psql --version。 PostgreSQL是一种功能强大的开源对象关系数据库系统,它提供了丰富的功能和灵活的配置选项,在开发和管理PostgreSQL数据库时,了解其版本信息是...

    2024年7月15日
    010
  • MySQL大表优化方案之升级硬件

    升级硬件 Scale up,这个不多说了,根据MySQL是CPU密集型还是I/O密集型,通过提升CPU和内存、使用SSD,都能显著提升MySQL性能 读写分离 也是目前常用的优化,从库读主库写,一般不要采用双主或多主引入很多复杂性...

    2018年3月10日
    0515
  • PHP+MySQL实现在线测试答题示例

    这个实例主要给大家介绍如何使用jQuery+PHP+MySQL来实现在线测试题,包括动态读取题目,答题完毕后台评分,并返回答题结果。读取答题列表:$sql = "select * from quiz order by id asc"; $query = mys...

    2022年6月18日
    0146
  • 我来分享好口碑的网站数据库连接池你了解吗。

    衔接池用于创立和办理数据库衔接的缓冲池技能,缓冲池中的衔接可以被任何需求他们的线程运用。当一个线程需求用JDBC对一个数据库操作时,将从池中恳求一个衔接。当这个衔接运用结束后,将返回到衔接池中,等候为...

    2023年6月28日
    02

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息