数据库Mysql的学习(三)-各种约束
删除数据库表
drop table [if exists] 表一,表二.....;
表分区:比如图书信息表有1000万个图书信息,如何优化他,其中一种方式就是表分区。就是把一张表的数据分成多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上。
基本操作如下:
先创建bookinfo的表,然后分区“partition by range(xx)”就是通过xx来分区。
里面分了三个区,p1,p2,p3.分别为20109999之前,20159999之前,和其他。
向表中插入数据“insert into xx values(xx,'xx')”
查看每个分区的内容"select * from xx partition(xx)"
主键的概念:
表中的每一行都应该具有可以唯一标识自己的一列(或一组列)。而这个承担标识作用的列称为主键。
如果没有主键,数据的管理将会十分混乱。比如会存在多条一模一样的记录,删除和修改特定行十分困难。
外键
通俗的说就是两个表相关联,连接这俩表的那个字段就是外键
约束
通过对表的行和列的数据做出限制,来确保数据的完整性和唯一性。
一般有非空约束,主键约束,唯一约束,默认约束,外键约束。
比如图书编号和类别编号就要主键约束,类别编号就要外键约束,书名非空约束和唯一约束。
非空约束
表的创建默认为空(NULL),设为非空约束后,如果在添加数据时,没有指定值,则会报错。
在创建是设置。
也可以通过修改表的方法来来添加发非空约束。
这样插入数据就会报错
可以通过修改数据类型来改变约束
主键约束
要求主键列的数据唯一,并且不为空,能够唯一标识表的一条记录。
一张表最多一个主键约束
第一种创建 列名后加primary key
或者指定constraint xx primary key(xx)pk_id是自己定义的主键名称。
通过修改也可以添加主键
1.alter table bookinfo2 add primary key(book_id);
2.alter table bookinfo2 modify book_id int primary key;
3.alter table bookinfo2 add constraint pk_id primary key(book_id);
删除主键
直接alter table bookinfo2 drop primary key;
也可以有多字段联合主键或叫复合主键
create table bookinfo2(
book_id int,
book_name char(20),
primary key(book_id,book_name)
);
唯一约束
方法和前面一样 可以直接在列名后 加上unique 或者constraint uk_banme unique(xx)
修改添加的话
默认约束
外键约束
数据库Mysql的学习(三)-各种约束的更多相关文章
- MySQL基础(三)——约束
MySQL基础(三)--约束 约束是在表上强制执行的数据校验规则,主要用于维护表中数据的完整性以及当数据之间有以来关系时,保护相关的数据不会被删除. 根据约束对列的限制,可以划分为:单列约束(只约束一 ...
- 数据库MySql的学习(1)--基本操作
转自 博客园-hoojo-http://www.cnblogs.com/hoojo/archive/2011/06/20/2085390.html 一.数据库简单介绍 1. 按照数据库的发展时间顺序, ...
- nodejs的mysql模块学习(三)数据库连接配置选项详解
连接选项 当在创建数据连接的时候 第一种大多数人用的方法 let mysql = require('mysql'); let connection = mysql.createConnection({ ...
- 数据库Mysql的学习(八)-储存过程和事务和导入导出
储存过程 DELIMITER // CREATE PROCEDURE pro1() BEGIN SELECT book_id,book_name,category FROM bookinfo t1 J ...
- 数据库Mysql的学习(二)-数据类型和创建
数据类型:数据列,存储过程参数,表达式和局部变量的数据特征. 整形: tinyint:一个字节,-128到127:2的7次方 smallint:两个字节,-32768到32767:2的15次方 med ...
- 数据库Mysql的学习(一)-启动和进入
数据库:按照数据结构来组织储存和管理数据的仓库. Mysql是关系型数据库管理系统 Mysql安装好之后... mysql的启动 1:通过控制面板里的”服务“找到mysql右键启动即可 2:开始菜单搜 ...
- 数据库Mysql的学习(六)-子查询和多表操作
)*0.05 WHERE card_id ='20121xxxxxx'; //子查询就是一个嵌套先计算子查询 SELECT * FROM borrow WHERE book_id =(SELECT b ...
- 数据库Mysql的学习(五)-运算符与函数
,store,store,store,store FROM bookinfo;//加减乘除取余 //余额大于200 //余额不等于200 SELECT * FROM readerinfo WHERE ...
- 数据库Mysql的学习(七)-自定义函数和流程控制
DELIMITER // (设置结束符 其实我也不太明白为啥要这样 记住就行把) CREATE FUNCTION ym_date(mydate DATE) (创建函数 函数名字(参数)) ) (指定函 ...
随机推荐
- Xcode 7提示App Transport Security has blocked a cleartext HTTP (http://) resource load的解决办法
Xcode 7提示App Transport Security has blocked a cleartext HTTP (http://) resource load的解决办法 今天使用Xcod ...
- jsp内置对象pageContext如何在Servlet中获取值
pageContext javax.servlet.jsp.PageContext 的实例,该对象代表该JSP 页面上下文,使用该对象可以访问页面中的共享数据.常用的方法有getServletCont ...
- 多python版本下,使用pip安装第三方库
说明:win10系统,先安装有Python3.5.2,后又安装了Python2.7.13(并重命名了Python27文件夹下python.exe为python2.7.13.exe),试图使用pip安装 ...
- dubbox provider cosumer 包坐标及xml
provider pom <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:// ...
- ThinkPHP5.0图片上传生成缩略图实例代码
很多朋友遇到这样一个问题,图片上传生成缩略图,很多人在本机(win)测试成功,上传到linux 服务器后错误. 我也遇到同样的问题.网上一查,有无数的人说是服务器临时文件目录权限问题. 几经思考后,发 ...
- php bug 调试助手 debug_print_backtrace()
debug_print_backtrace() 是一个很低调的函数,很少有人注意过它. 不过当我对着一个对象调用另一个对象再调用其它的对象和文件中的一个函数出错时,它也许正在一边笑呢 如果我们想知道某 ...
- Final,finally,finalize区别
final— 修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明为 abstract的,又被声明为final的.将变量或方法声明为f ...
- python学习——初始面向对象
一.讲在前面 编程的世界中有三大体系,面向过程.面向函数和面向对象编程.而面向过程的编程就包括了面向函数编程,接下来说一下面向对象.假如 ,你现在是一家游戏公司的开发人员,现在需要你开发一款叫做< ...
- python之内存与编码的那点事
一.初始编码 ASCII 码不支持中文 是py2版本中的默认编码 Unicode 万国码, 英文使用16位(即两个字节),中文使用32位(四个字节) utf-8 美国最少使用八位(1字节), 欧 ...
- python 的 购物小程序
money = input('请输入您的工资:') shop = [("iphone",5800),("ipod",3000),("book" ...