外键

mysql总复习

喜你入骨 提交于 2019-12-03 10:08:00
目录 数据库操作 库操作 表操作 数据行操作 表关系操作 单表操作 外键创建 多表联查 pymysql模块 索引 主键索引 唯一索引 普通索引 数据库操作 库操作 create database 库名 charset utf8; //创建表 show databases; //查看所有库 show create database 库名; // 查看创建库的语句 select database(); //查看当前的数据库 use 库名; //使用数据库 drop database 库名; //删除库 alter database 库名 charset utf8; //更改库字符编码 表操作 // 创建表 create table t1 ( id int primary key, name varchar(32) ) charset utf8; // 修改表名 alter table t1 rename t11; // 添加字段 alter table 表名 add 字段名 列类型 ; alter table 表名 add 字段名 列类型 first; alter table 表名 add 字段名 列类型 after 字段; // 修改字段名 alter table 表名 change 旧字段名 新字段名 数据类型; //修改字段属性 alter table 表名 modify 字段名

数据库约束

烈酒焚心 提交于 2019-12-03 09:59:17
之前的一篇文章介绍了数据库mysql的安装过程,在接下来的一些文章中,我将会讲述mysql数据库中的SQL语句,以及Java链接数据库等操作。 在说明SQL语句之前,首先说的是关于数据库的约束。 我们所有的关系数据库都支持对数据表使用约束,因为通过约束我们可以更好的保证数据表里的数据的完整性。约束是在表上强制的执行数据校检规则,约束只要用于保证数据库里数据的完整性,并且当表中的数据存在相互依赖型的时候,可以保护相关的数据不被删除。 为数据表指定约束有如下两个时机:(1).建表的同时为相应的数据列指定约束。(2).建表后创建,以修改表的方式来增加约束。 接下来我主要介绍三种约束:mysql中的一些普通的约束,主键约束,外键约束。 1.mysql中的一些普通约束。 主要包括: (1).unique:唯一约束,指定某列不能为空。用于保证指定列或者指定列组合不允许出现重复值。 (2).not null:非空约束,指定某列的值不能为空。 (3).null:与not null相反,表示有些数据的默认值可以为null. (4).default:指默认值,可以给某一字段设置好相应的默认值。 2.主键约束(primary key):指定该列的值可以唯一的标识该条记录。相当于:非空+唯一。 在mysql数据库操作的过程中,如果没有手动指定主键,在mysql中会自动查找一个具备非空且唯一的字段作为主键

PowerDesigner使用介绍

本秂侑毒 提交于 2019-12-03 06:43:35
1.概述 2.创建物理模型 3.创建数据表 4.增加外键约束 5.生成SQL语句 6.生成设计文档 1.概述 PowerDesigner 是 Sybase 公司的 CASE 工具集,使用它可以方便地对管理信息系统进行分析设计,它几乎包括了数据库模型设计的全过程。利用 PowerDesigner 可以制作数据流程图、概念数据模型、物理数据模型,可以生成多种客户端开发工具的应用程序,还可为数据仓库制作结构模型,也能对团队设备模型进行控制。 公司主要使用 PowerDesigner 创建以下两类模型文件: 逻辑模型( CDM ):描述了与任何软件和数据存储系统都无关的数据库整体逻辑结构,通常包含了与物理数据库无关的数据对象,提供了一种描述企业运行或业务行为的形象化的表达方式。 物理模型( PDM ):叙述数据库的物理实现。主要目的是把 CDM 中建立的现实世界模型生成特定的 DBMS 脚本,产生数据库中保存信息的储存结构,保证数据在数据库中的完整性和一致性。 我主要就物理模型来简单讲讲 PowerDesigner 的操作细节。 2.创建物理模型 图 2-1 为 PowerDesigner 的工作页面,点击文件 --> 创建新模型,弹出如图 2-2 的对话框: 图 2-1 图 2-2 选择左侧 Physical DataModel (即物理模型),右侧选择 Physical Diag

1030 回顾

僤鯓⒐⒋嵵緔 提交于 2019-12-03 05:13:31
昨日回顾 1.单表的操作 分组 group by select * from 表名 group by 分组段名 聚合函数 1.count select count(id) from xx group by gender 2.having select count(id) from xx group by gender having count(id)>23; 3.order by 升序 : sdc order by id asc; 降序 : desc order by id desc; 多列分组 : 先根据前一个排序,再根据后面的排序 4.limit limit offset,size offset: 行数据索引 size: 取多少行数据 先后数据: where > group by > having > order by >limit 2.多表操作 外键 constraint 随意的外键名 foreign key (表中的字段) references 引用的表(表的字段) 一对多 有外键的是多,多的一方设置外键 多对多 一对一 新建一个id对应数值 多表联查 left join 左连接 select * from 表1 left join 表2 on 表1.段1 = 表2.段2; 后面可加条件判断,where,group by, right join 右链接 inter join

Django数据库优化及事务

假装没事ソ 提交于 2019-12-03 04:40:52
在设置外键字段时需要注意: 当你使用django2.x的版本时候,在建立外键关系时,需要你手动添加几个关键点参数 models.cascade #设置级联删除 db_constraints 数据库查询与优化 only和defer orm内所有的语句操作,都是惰性操作:只会在你真正需要数据的时候才会走数据库,如果你单单只写orm语句是不会走数据库的。这样设计的好处在于减轻数据库的压力。 res = models.Book.objects.values('title') #普通查询方式 获取到的结果是列表套字典 res1 = models.Book.objects.only('title') #结果是一个个对象,可以直接点属性获取到属性值 print(res) print(res1) only和普通查询的不同就是能直接获取到对象,除了可以获取到上面的title属性值,还可以获取到该对象其他的属性值。但是也有优缺点,看下面的例子。 res1 = models.Book.objects.only('title') for r in res1: print(r.title) #只走一次数据库查询 print(r.price) #每取一次数据就走数据库一次 r.title r.price only总结:当你获取一个不是only括号内指定的字段的时候,不会报错,而是会频繁的走数据库查询

每日面试之 面试基础1

删除回忆录丶 提交于 2019-12-03 02:44:41
目录 面试基础1 1 、sorted和sort这俩有什么区别 2、exec() eval()的区别 3、元类可以做什么 4、新式类和经典类 5、迭代器和生成器 6.关于装饰器 7.猴子补丁 8.==和is 9.浅拷贝和深拷贝 10.可变类型和不可变类型 11.Python的自省功能 12.Python中的下划线 13only/defer/select_related/perfetch_related 14为什么学习python 15通过什么途径学习的Python? 16Python和Java、PHP、C、C#、C++等其他语言的对比? 17简述解释型和编译型编程语言? 18Python解释器种类以及特点? 19位和字节的关系? 20 b、B、KB、MB、GB 的关系? 21请至少列举5个 PEP8 规范(越多越好)。 面试基础1 1 、sorted和sort这俩有什么区别 sorted() l=[1,3] l.sort() Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列。 sort是容器的函数,用List的成员函数sort进行排序 sorted是Python的内建函数相同的参数,用built-in函数sorted进行排序 sorted(iterable,key=None,reverse

1030 笔记

谁说胖子不能爱 提交于 2019-12-03 02:42:58
目录 单表操作 1. group by 分组 聚合函数 2. having 过滤 3. order by 排序5 4. limit 分页 5.总结 多表操作 外键 关联关系 多对一 多对多 一对一 多表联查 外连接 内连接 单表操作 *********************** 1. group by 分组 分组指的是:将所有记录按照某个字段进行归类,比如针对员工信息表的职位分组,或者按照性别进行分组等. select 聚合函数,选取的字段 from 表名 group by 选取的字段; group by :是分组的关键字 group by 必须和聚合函数(count)出现 where 条件语句和group by 分组语句的先后顺序: where > group by > having ************** 例子: 单独使用group by 分组 select post from employee group post; 我们按照post字段分组,那么select查询的字段只能是post,想要获取组内的其他相关信息,需要借助函数 // 创建表字段 create table employee( id int not null unique auto_increment, emp_name varchar(20) not null, sex enum('male',

mysql课外积累

白昼怎懂夜的黑 提交于 2019-12-03 02:41:47
where 与 on 的区别 : ON:针对关联表进行条件筛选,不会影响结果集的数量和主表数据。 WHERE:针对结果集进行条件筛选,会影响结果集的数量。 LIKE声明中的%和_是什么意思? --%对应于0个或更多字符,_只是LIKE语句中的一个字符。 blod text BLOB是一个二进制对象,可以容纳可变数量的数据。TEXT是一个不区分大小写的BLOB。 BLOB和TEXT类型之间的唯一区别在于对BLOB值进行排序和比较时区分大小写,对TEXT值不区分大小写。 mysql_fetch_array和mysql_fetch_object的区别: mysql_fetch_array() – 将结果行作为关联数组或来自数据库的常规数组返回。 mysql_fetch_object – 从数据库返回结果行作为对象。 ibd : 数据 + 索引 每个MyISAM表格以三种格式存储在磁盘上: ·“.frm”文件存储表定义 ·数据文件具有“.MYD”(MYData)扩展名 索引文件具有“.MYI”(MYIndex)扩展名 NOW()命令用于显示当前年份,月份,日期,小时,分钟和秒。 CURRENT_DATE()仅显示当前年份,月份和日期。 sql 优化 : explain出来的各种item的意义; select_type 表示查询中每个select子句的类型 type

Django框架——模型(models)层之ORM查询(二)

时光总嘲笑我的痴心妄想 提交于 2019-12-03 02:37:59
1.聚合查询 聚合函数 关键字: aggregate from django.db.models import Max,Min,Sum,Count,Avg 2.分组查询 关键字: annotate 统计每一本书的作者个数 models.Book.objects.annotate(author_num = Count('author')).values('title') 统计每一个出版社卖的最便宜的书的价格 models.Book.objects.annotate(price_min=Min('book__price')).values('price_min') 统计不止一个作者的图书 models.Book.objects.annotate(author_num = Count('author')).values('author_num').filter(author__num__gt=1) 查询各个作者出的书的总价格 models.Author.objects.annotate(sum_price = Sum('book__price')).values('sum_price') 3.F与Q查询 F查询 查询卖出数大于库存数 models.Book.objects.filter(maichu__gt=F('kucun')) 将所有的书的价格全部提高100元 models.Book

外键值 on_delete / db_constraint

夙愿已清 提交于 2019-12-03 02:13:47
#on_delete=None, #当关联的email数据被删除时候,该数据也会被删除,不存在 #on_delete=models.CASCADE, #性质和None一样是默认删除 #on_delete=models.DO_NOTHING, #当关联的数据被删除时,自己不受影响,什么事都不做,不会报错 #on_delete=models.PROTECT, #关联保护,因为邮箱数据被用户表关联,所以该邮箱不允许被删除,并且触发ProtectError #Cannot delete some instances of model 'EmailInfo' because they are referenced through a protected foreign key: 'UserInfo.el'", <QuerySet [<UserInfo: UserInfo object>]> #on_delete=models.SET_NULL, #删除关联数据,自己被设置为null(前提字段需要设置为可空null=True) #对于测试models.SET_NULL时,我们需要先了解,对于数据库的基本字段设置,像null,max_length这些属性,我们需要重新去生成数据表, #对于on_delete等Django中的附属属性,我们可以动态修改,不需要重新生成数据表