Python 40 数据库-约束
约束
1、什么是约束 ?
除了数据类型以外额外添加的约束
2、为什么要使用约束 ?
为了保证数据的合法性 完整性
分类:
1、not null 非空约束,数据不能为空-------------------create table student (id ind,name char(10) not null);
2、default 默认值约束 可以指定字段的默认值--------create table user (id ind,name char(10) not null,sex char(1) default "woman");
3、unique 唯一性约束 该字段的值不能重复,unique其实是一种索引索引是一种数据结构 用于提高查询效率,可以为空,一张表中可以有多个唯一约束
单列唯一约束---------------------create table t5(idcard char(18) unique);
多列联合唯一约束---------------create table t6(idcard char(18),phonenumber char(11),unique(idcard,phonenumber));
4、primary key (******)称之为主键约束,
用于唯一标识表中一条记录,该字段只要是惟一的,并且不为空即可,也就是说,从约束的角度来看主键约束和非空约束,唯一约束没有区别,
它们之间的区别是,
唯一约束是一种索引,必然存在硬盘上的某个文件中,是物理层面(实实在在存在的数据)
primary key 是一种逻辑意义上的数据 (实际上不存在)
换句话说,主键就是由唯一约束和非空约束组成的约束,就像 一男一女,可以组成夫妻,但是夫妻只是一种称呼,不实际存在
语法:
create table stu (stuid int primary key,name char(3));
create table t7(id int unique not null,name char(3));
有主键和没有主键的区别
1.无法区分两个相同记录,比如班级里有两个人名字相同
2.有主键则意味有这索引,效率更高
3.可以建立关联关系
多列联合主键---------------create table t8(idcard char(18),phonenumber char(11),primary key(idcard,phonenumber));
要不要主键?
必须的,每个表都应该有主键 哪怕不用唯一标识 也应该考虑提升效率,主键的字段名 几乎都叫id
同一个表中可以不可以有多个主键?
不可以,没有任何意义,主键的类型需要设置为整型,当然别的也行!建议你别这么干!
5、auto_increment ******
中文:自动增长
作用:通常搭配主键字段使用,可以自动为你的数据分配逐渐
分配的方式是,添加一条就自动加1 计数从1开始
语法: ******
create table t9(id int primary key auto_increment,name char(3));
如果主键是自动增长 你可以跳过这个字段 也可以为它插入null 都可以,修改自动增长的起始位置 ** alter table t9 auto_increment = 7;
注意: 自动增长 只能用于整型
6、foreign key ******
Python 40 数据库-约束的更多相关文章
- Python 40 数据库-外键约束 、多对一与多对多的处理
mysql提供了 foreign key,专门用于为表和表之间 建立物理关联 思考 表里存储的是一条条的记录,两个表之间能产生的关系有哪些? 现有 A B两张表 1.多对一 2.一对一 ...
- Python进阶----数据库引擎(InnoDB),表的创建,mysql的数据类型,mysql表的约束
Python进阶----数据库引擎(InnoDB),表的创建,mysql的数据类型,mysql表的约束 一丶MySQL的存储引擎 什么是存储引擎: MySQL中的数据用各种不同的技术存储在文件( ...
- Python学习笔记 - day11 - Python操作数据库
MySQL的事务 MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关,MySQL的两种引擎如下: 1.MyISAM:不支持事务,用于只读程序提高性能 2.InnoDB:支持ACID ...
- Python进阶----数据库的基础,关系型数据库与非关系型数据库(No SQL:not only sql),mysql数据库语言基础(增删改查,权限设定)
day37 一丶Python进阶----数据库的基础,mysql数据库语言基础(增删改查,权限设定) 什么是数据库: 简称:DataBase ---->DB 数据库即存放数据的仓库, ...
- Navicat使用与python操作数据库
一.Navicat使用 1.下载地址: <https://pan.baidu.com/s/1bpo5mqj> 2.测试+链接数据库,新建库 3.新建表,新增字段+类型+约束 4.设计表:外 ...
- python 操作数据库的常用SQL命令
这俩天在学习PYTHON操作数据库的知识.其实基本SQL命令是与以前学习的MYSQL命令一致,只是增加了一些PYTHON语句. 1,安装pymysql,并导入. import pymysql 2,因为 ...
- python操作数据库
一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安装文件,双击安装文件一步一步进行操作即可. Linux 下的安装可能会更加简单,除了下载安装包进行安装外,一般的l ...
- python+mysql数据库的简单操作
最近接了一个任务,测试某项类似于收益情况报表的功能,因计算公式复杂,单纯手算过于复杂,所以想到写成脚本 根据python的分治原则,先整了几个函数用于实现计算逻辑,后发现数据输入过于繁琐,所以决定使用 ...
- python 从数据库表生成model
python 从数据库表生成model 找了很久才找到这个,我是新手... 现在已有建好的数据库,需要基于原有数据做数据分析的web应用,我选择python+Tornado ,由于不想写SQL语句,就 ...
随机推荐
- C# Request
string type = Request["type"]; //值为null; //?type= 值为""; //?type=12 值为"12&qu ...
- * 获取页面参数 * @return 参数打印
/** * 获取页面参数 * @return 参数打印 */ GetUrlParam: function(paraName) { var url = document.location.toStrin ...
- 写一个 sum方法,在使用下面任一语法调用时,都可以正常工作
console.log(sum(2,3)); // Outputs 5 console.log(sum(2)(3)); // Outputs 5 (至少)有两种方法可以做到: 方法1: functio ...
- 20190625_mysql5.7查看及其解锁_被锁的表
[root@localhost ~]# mysql -u myroot -pEnter password: mysql> show OPEN TABLES where In_use > 0 ...
- C# 后台POST提交方式
1.第一种方式:用最新框架,但是针对IIS服务器的操作系统有关系,非R2的收不到数据: using (var reqConts = new MultipartFormDataContent()) { ...
- Oracle开发常用函数 max 最大数 自动加 1 的模式
create sequence bs_com_seq increment by 1 start with 1 minvalue 1 maxvalue 999999 cycle nocache orde ...
- 如何区分null和undefined
null和undefined是两种数据类型, 如果硬要区分的话. null是一种类型, 赋值变量为null型. 未定义的变量, 即为undefined. var a = null a // null ...
- 举枪消灭"烂代码"的实战案例
前言 之前我写过一篇如何少写PHP "烂"代码 https://segmentfault.com/a/11...感觉很多新人对此不太理解.今天以打卡功能为例,去讲解其中的奥秘.那篇 ...
- zend studio【快捷键】
=================================[快捷键 zend studio]========== 1.调出查找面板[ctrl+f] 2.全文检索[ctrl+h] 3.关闭当前文 ...
- Spring整合Junit框架进行单元测试Demo
一.开发环境 eclipse版本:4.6.1 maven版本:3.3.3 junit版本:4.12 spring版本:4.1.5.RELEASE JDK版本:1.8.0_111 二.项目结构 图 三. ...