2018.11.29_MySQL约束_总结

2018.11.29

DQL:查询语句

排序查询:  order by 排序字段1,排序方式1,...,排序字段n,排序方式n;
排序方式
  ASC:升序,默认排序方式
  DESC:降序
注意事项:   如果有多个排序条件,只有当第一排序字段值一样时,才会按照第二排序字段值排序

聚合函数
概念:  将一列的数据作为一个整体,进行纵向的计算
分类
  count  -- 计算个数(可以写成*,建议使用非空的列,例如主键)
  max  -- 计算最大值
  min  -- 计算最小值
  sum  -- 计算和
  avg  -- 计算平均数

语法
select 聚合函数(列名)  from 表名 [where 条件];
select 聚合函数(ifnull (列名,0))  from 表名 [where 条件];
注意事项:  聚合函数计算会排除null值,可以通过ifnull函数解决,或者选择不包含非空的列进行计算

分组查询:  select 分组字段 from 表名 [where 条件] group by 分组字段 [having 条件];
注意事项:  分组之后查询的字段是分组字段或聚合函数

where与having的区别
  (1)where作用在分组之前,不符合条件,不参与分组
  (2)having作用在分组之后,不符合条件,不会被查询
  (3)where后面不能使用聚合函数,having后面可以使用聚合函数

分页查询:  select * from 表名 limit offset,length;
注意事项
  (1)limit是MySQL数据库的方言
  (2)offset = (当前页数 - 1) * length  (offset:起始索引 length:每页条数)

约束
概念:  对表中的数据进行限定,保证数据的正确性、有效性和完整性
分类
  非空约束:not null
  唯一约束:unique
  主键约束:primary key
  外键约束:foreign key

非空约束
概念: 指定列的值不能为null,关键字是not null
create table 表名(列名1,数据类型 not null,...);  -- 创建表时候添加
alter table 表名 modify 列名 数据类型 not null;  -- 创建表之后添加
alter table 表名 modify 列名 数据类型;  -- 删除非空约束

唯一约束
概念:  指定列的值不能重复,关键字是unique
create table 表名(列名1,数据类型 unique,...);  -- 创建表时候添加
alter table 表名 modify 列名 数据类型 unique;  -- 创建表之后添加
alter table 表名 drop index 列名;  -- 删除唯一约束
注意事项
  (1)唯一约束作用的列可以有null值,null没有数据,不存在重复的问题
  (2)添加约束时,如果当前列有不符合条件的值,会报错

主键约束
概念:  指定列的值非空且唯一,关键字是primary key
create table 表名(列名1,数据类型 primary key,...);  -- 创建表时候添加
alter table 表名 modify 列名 数据类型 primary key;  -- 创建表之后添加
alter table 表名 drop primary key;  -- 删除主键约束
注意事项
  (1)主键是表中记录的唯一标识
  (2)一张表只能有一个主键

自动增长
概念: 指定列是数值类型的,可以通过auto_increment实现值的自动增长
create table 表名(列名1,数据类型 primary key auto_increment,...);  -- 创建表时候添加
alter table 表名 modify 列名 数据类型 auto_increment;  -- 创建表之后添加
alter table 表名 modify 列名 数据类型;  -- 删除自动增长
注意事项:  一般会和主键一起使用

外键约束
概念:  让表与表产生关系,保证数据的正确性
create table 副表名(...,constraint 外键名 foreign key (副表外键列名) references 主表名(主表列名));  -- 创建副表时候添加
alter table 副表名 add constraint 外键名 foreign key (副表外键列名) references 主表名(主表列名);  -- 创建副表之后添加
alter table 副表名 drop foreign key 外键名;  -- 删除外键约束

级联操作
alter table 副表名 add constraint 外键名 foreign key (副表外键列名) references 主表名(主表列名) on update cascade / on delete cascade;  -- 添加级联操作
分类
  级联更新:on update cascade
  级联删除:on delete cascade

多表之间的关系

一对多
实现:在多的一方建立外键,指向一的一方的主键
例子:部门和员工

多对多
实现:借助中间表,中间表至少包含两个字段,作为外键,分别指向两张表的主键
例子:学生和课程

一对一
实现:在任意一方添加唯一的外键,指向另一方的主键

例子:人和身份证

范式
概念:设计数据库时需要遵循的一些规范
分类
  第一范式(1NF):每一列都是不可分割的原子数据项
  第二范式(2NF):非主属性必须完全依赖于码(消除非主属性对码的部分函数依赖)
  第三范式(3NF):任何非主属性不能依赖于非主属性(消除传递依赖)

函数依赖
概念:通过A属性(属性组)可以确定B属性的值,则称B依赖于A
  完全函数依赖:如果A是一个属性组,确定B属性的值需要依赖于A属性组的所有属性
  部分函数依赖:如果A是一个属性组,确定B属性的值需要依赖于A属性组的部分属性
  传递依赖:通过A属性(属性组)可以确定B属性的值,通过B属性可以确定C属性的值
  码:在一张表中,一个属性或属性组的值被其他所有属性完全依赖,这个属性或属性组为该表的码
    主属性:码属性组中所有的属性
    非主属性:码属性组以外的其他属性

数据库的备份和还原
命令行
备份:mysqldump -u用户名 -p密码 数据库名 > 本地路径
还原
  (1)登录MySQL
  (2)创建数据库
  (3)使用数据库
  (4)执行语句:source 本地sql文件路径

图形化工具
  备份:选中数据库 -> 右键 -> 备份导出 -> 转储到sql -> 选择路径 -> 保存
  还原:选中[email protected] -> 右键 -> 执行sql脚本 -> 选中本地sql文件 -> 执行

原文地址:https://www.cnblogs.com/xcs842590060/p/10051201.html

时间: 2024-10-09 18:55:25

2018.11.29_MySQL约束_总结的相关文章

2018/11/12(python)

文件处理流程 1.打开文件,得到文件句柄并赋值给一个变量 2.通过句柄对文件进行操作 3.关闭文件 f=open('实验文件.txt',encoding='gbk') data=f.read() print (data ) f.close() 读写都是字符串形式 读 f=open('实验文件.txt','r',encoding='gbk') print(f.readlines()) f.close() 写,会覆盖原文件 f=open('实验文件.txt','w',encoding='gbk')

2018.11.16 浪在ACM 集训队第五次测试赛

2018.11.16 浪在ACM 集训队第五次测试赛 整理人:李继朋 Problem A : 参考博客:[1]朱远迪 Problem B : 参考博客: Problem C : 参考博客: Problem D : 参考博客:[1]朱远迪 Problem E : 参考博客: 原文地址:https://www.cnblogs.com/QLU-ACM/p/9977949.html

2018.11.25日脉象记录

2018.11.22日改方子 变化: 柴胡从9克减为6克                 //感冒的症状减退? 天花粉15克加到30克 //这四个变化的原因都是附子+党参导致的血热,出汗,血亏,水少 大枣从45克增加到60克 //停止茯苓排水,增加大枣补血,生蒲黄凉血,继续疏通经络 茯苓12克减为0克   //左右手整体脉象变成洪大中空,说明热损耗了津液 生蒲黄9克,凉血   //天花粉增量是消除肺中积聚的热,肾虚第一就要保肺,使得肺能降雨给肾,补肾阴 增加: 炒芥子9克 归肺经,温中散寒,利气

2018.11.28 Android踩坑(读写文件)

在学到使用Android Device Monitor 查看文件的时候,发现Android Device Monitor在Android Studio里面找不到了,网上查了原来是被官方弃用了,现在通过命令行的方式启动 1.打开Project Structure找到sdk安装路径 2.找到这个路径打开里面tools文件夹下面的monitor.bat双击运行即可打开Android Device Monitor 虽然说找到了Android Device Monitor,但是打开报了个Could not

【谜客帝国】第142届出来混饭的主擂谜会(2018.11.30)

[谜客帝国]第142届出来混饭的主擂谜会(2018.11.30) 主持:瓷  计分:默沫 1.莫明其妙(礼貌用语)晚上好 2.漂泊母牵挂(字)嗨 3.一双玉臂千人枕(新称谓)女博客 4.半点朱唇万客尝(成语)任人唯亲 5.一场秋雨一场凉(医学名词)渐冻人 6.残月如弓,星星双映(字)弱 7.母亲伴内戚,端午西湖游(市名)上海 8.一心求平安(字)恙 9.二月伴儿游古迹(中药)元胡 10.“骑赤兔,提青偃,过五关,斩六将”(军用名词二 2+4)马刀,战斗减员 11.书法比赛(建筑名词)品字形结构

【谜客帝国】第141届幽谷寒梅主擂谜会(2018.11.15)

 [谜客帝国]第141届幽谷寒梅主擂谜会(2018.11.15) 主持:幽谷寒梅  计分:渣渣 1.捧来一掬春,三人分一分(字)拘 2.“薄技在身,胜握千金”(6字爆料某知名演员境况)陈小艺超有钱 3.但觉纣王仁心无存(6字旅游语,含吉林地名)感受德惠风光 [注:纣王名受(一作受德).惠风:仁心.仁政,汉张衡 <东京赋>:“惠风广被,泽洎幽荒.”] 4.并未让其交代(4字比较语,含古尊称)没令坦白 5.“白发垂项,佝偻携杖”(知名谜人专职,掉尾格)老罗背锅 6.毋为威武动屈心(南北朝人物)莫折

11. SQL -- 约束、Check、触发器的执行顺序

让我们看看约束. Check 和触发器在这个过程中的先后顺序,或许能加深些对事务的理解. CREATE TABLE TestTable ( ID         INT    CONSTRAINT PK_TestTable_id PRIMARY KEY, UniqueID   INT    UNIQUE, Number     INT    CHECK (Number >= 10 AND Number<=100), NonNULL    INT    NOT NULL ); CREATE TA

【周报】Seele进展周报2018.11.19-2018.11.25

Seele元一全球社区的朋友们,大家好!今天起,社区周报进行改版升级,希望你们会更喜欢新的形式,也期待听到你们对周报的反馈与需求.[产品开发中]构建区块链+繁荣的开发生态,一直是Seele公链的努力方向.为方便开发者和用户使用,基于Seele公链的开发者工具和相关配套DApp产品在持续推进中,所以今后的周报都会有一个产品开发进度模块.[价值的沟通]有关数字资产市场交易情况的信息,以前由Seele Tech科技公司代基金会进行沟通.今后,遇到一些即时性动态如上新交易所.糖果活动等,基金会会委托科技

SpringMVC异常_01_约束_&lt;mvc:annotation-driven /&gt;报错

异常信息:xsd not found:cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be fou 原因:Eclipse无法识别上面这个标签,原因在于没有添加相关springmvc约束 解决方法:添加约束,步骤如下: window->preferences->搜索xml->XML Catalog->Catalog Entry->add->File System