外键

mysql 常用命令及解释

て烟熏妆下的殇ゞ 提交于 2020-01-27 20:41:00
mysql 的常用命令 一. 登录数据库 1. 登录本地数据库: mysql –u 用户名 –p; 一般情况下都为:mysql -u root -p; 在 DOS 下你输入以上命令之后,就会让你输入密码,输入正确的密码之后,就可以成功登录 mysql 数据库 二. 查看已有的数据库 1. show databases; 输入以上命令之后,就可以看见已经存在的数据库,一般默认的数据库有information_schema mysql performance_schema test 四个数据库,在使用中,尽量不要修改或删除这四个数据库,及其里面的内容。 三. 创建数据库 1. create database 数据库名 ; 创建数据库时要注意数据库名不能和数据库的命令相同,如 create , descirbe , insert 等关键字,否则会创建失败。 四. 删除数据库 1. drop database 数据库名; 此种方式会一次性不留痕迹删整个数据库里的所有数据,所以在使用时,要注意做好数据的备份工作。 五. 应用数据库 1. use 数据库名; 如果不使用此语句的话,就无法对数据库里的表进行操作,因为系统根本不知道 该对那个数据库里的表进行相应的操作。系统就会报出 ERROR 1046 (3D000): No database selected 错误。 六. 查看数据库的引擎 1

PostgreSQL 如何删除外键限制?

只谈情不闲聊 提交于 2020-01-27 14:11:30
首先找出数据库表的外键名称: \d [tablename] .... "table_name_id_fkey" FOREIGN KEY (id) REFERENCES other_table(id) .... 然后使用下面的命令删除外键: ALTER TABLE [tablename] DROP CONSTRAINT table_name_id_fkey; 来源: CSDN 作者: 亮子介 链接: https://blog.csdn.net/henryhu712/article/details/104092141

MySQL数据管理——(三)

ぃ、小莉子 提交于 2020-01-27 00:16:31
MySQL数据管理——(三) 5.1外键(Foreign key)(了解即可) 创建外键方式一: 在创建表的时候,增加约束(比较繁琐,不推荐使用) -- 创建一张年级表(主表) CREATE TABLE ` grade ` ( ` gradeid ` int ( 11 ) NOT NULL AUTO_INCREMENT COMMENT '年级ID' , ` gradename ` varchar ( 60 ) NOT NULL COMMENT '年级名称' , PRIMARY KEY ( ` gradeid ` ) ) ENGINE = InnoDB DEFAULT CHARSET = utf8 -- 创建一张学生表(从表) -- 在学生表中gradeid字段,要去引用年级表的gradeid字段 -- 外键使用步骤: -- 1、定义外键key -- 2、给这个外键添加约束(执行引用) references 引用 CREATE TABLE ` student ` ( ` id ` INT ( 10 ) NOT NULL COMMENT '学号' , ` name ` VARCHAR ( 60 ) NOT NULL DEFAULT '匿名' COMMENT '姓名' , ` age ` INT ( 2 ) NOT NULL COMMENT '年龄' , ` sex ` VARCHAR

Django ORM 常用字段和参数

十年热恋 提交于 2020-01-26 02:13:48
1、常用字段 AutoFiled int自增列,必须填入参数 primary_key=True。当model中如果没有自增列,则自动会创建一个列名为id的列。 IntegerField 一个整数类型,范围在 -2147483648 to 2147483647。(一般不用它来存手机号(位数也不够),直接用字符串存,) CharField 字符类型,必须提供max_length参数, max_length表示字符长度。 这里需要知道的是Django中的CharField对应的MySQL数据库中的varchar类型,没有设置对应char类型的字段,但是Django允许我们自定义新的字段,下面我来自定义对应于数据库的char类型 自定义char字段: from django.db import models class MyCharField(models.Field): def __init__(self, max_length, *args, **kwargs): self.max_length = max_length super().__init__(max_length=max_length,*args, **kwargs) def db_type(self, connection): return 'char(%s)' % self.max_length class

第十四章 约束

笑着哭i 提交于 2020-01-25 18:55:22
第十四章 约束 –练习1 1.学校有一个选课系统,其中包括如下关系模式: 系(系编号: 主键, 系名称: 唯一键, 系主任: 非空约束, 系所在校去:取值范围只能在南湖校区和浑南校区) create table xi ( xi_no varchar2 ( 10 ) primary key , xi_name varchar2 ( 10 ) unique , xi_mrg varchar2 ( 10 ) not null , xi_loc varchar2 ( 20 ) check ( xi_loc in ( '南湖校区' , '浑南校区' ) ) ) ; select * from xi 班级(班级编号: 主键, 班级名称: 唯一键, 所属系: 外键) create table classbj ( classbj_no varchar2 ( 10 ) primary key , classbj_name varchar2 ( 10 ) unique , xi_name varchar2 ( 10 ) constraint xi_name_fk references xi ( xi_name ) ) 2.创建学生表,包含如下属性: 学号 定长字符型 10位 主键 姓名 变长字符型 20位 非空 性别 定长字符型 2位 取值范围只能为男或女 出生日期 日期型 所在班级 create

数据库不使用外键

拜拜、爱过 提交于 2020-01-25 15:38:42
为什么公司数据库不适用外键 在公司中,看数据库表的设计是不用 外键 的。 在初学数据库的时候,经常用到了外键约束。在论坛中查看讨论的时候,一般人都说很少用外键。因为我们 完全可以在业务(程序控制和事务)上处理表之间关系 。一般互联网应用没必要使用外键,外键会带来一系列 不好的影响 : 1.数据库需要维护外键的内部管理; 2.外键等于把数据的一致性事务实现,全部交给数据库服务器完成; 3.有了外键,当做一些涉及外键字段的增,删,更新操作之后,需要触发相关操作去检查,而不得不消耗资源; 4.外键还会因为需要请求对其他表内部加锁而容易出现死锁情况; 来源: CSDN 作者: 阳沐之 链接: https://blog.csdn.net/qq_35385687/article/details/103757572

Mysql常用

家住魔仙堡 提交于 2020-01-25 03:35:52
文章目录 mysql的语句的执行过程 mysql的优化器优化 判null 外键约束与级联操作 mysql的语句的执行过程 from join on where group by (从此处开始可以使用select中指定的别名) avg、sum、max having select distinct order by mysql的优化器优化 判null ISNULL(xxx):只有xxx为null 的时候 ISNULL(exp) 函数的返回值为1 ,空串和有数据都为0; is null 外键约束与级联操作 添加外键约束: CONSTRAINT 外键名称(形如:FK_从表_主表) FOREIGN KEY((从表外键字段)) REFERENCES 主表(主键字段); 级联操作(在外键的最后面添加): . cascade方式 在父表上update/delete记录时,同步update/delete掉子表的匹配记录 . set null方式 在父表上update/delete记录时,将子表上匹配记录的列设为null 要注意子表的外键列不能为not null . No action方式 如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作 . Restrict方式 同no action, 都是立即检查外键约束 . Set default方式 父表有变更时

MySQL开发规范

只愿长相守 提交于 2020-01-24 15:25:01
MySQL开发规范 基于阿里数据库设计规范扩展而来 : https://yq.aliyun.com/articles/709387 参考,58到家MySQL军规升级版 : https://www.jianshu.com/p/c077581693fb 基础规范 表存储引擎必须使用InnoDB MySQL常见的三种存储引擎(storage_engine) : InnoDB、MyISAM、MEMORY 存储引擎就是指 表的类型以及表在计算机上的存储方式 通过“SHOW ENGINES”语句来查看 MySQL中的存储引擎 特性 innoDB MyISAM Memory 事务安全 支持 无 无 存储限制 64T 有 有 空间使用 高 低 低 内存使用 高 低 高 插入数据的速度 低 高 高 读取数据的速度 低 高 高 对外键的支持 支持 无 无 全文索引 不支持 支持 InnoDB存储引擎 InnoDB给MySQL的表提供了 事务处理 、 回滚 、 崩溃修复能力 和 多版本并发控制 的事务安全 InnoDB存储引擎总支持 AUTO_INCREMENT 。自动增长列的值不能为空,并且值必须唯一。MySQL中规定自增列必须为主键 InnoDB还支持 外键(FOREIGN KEY) 。外键所在的表叫做子表,外键所依赖(REFERENCES)的表叫做父表,父表中被子表外键关联的字段必须为主键。

Django入门教程(七):模型的一对多关系,多对多关系,外键foreign_key,笛卡儿积

◇◆丶佛笑我妖孽 提交于 2020-01-23 01:59:05
大家好,我是连人, 今天咱也不讲django了,来给大家讲讲哲学。 马克思主义哲学认为,世界是普遍联系的。任何事物都不能孤立地存在,都同其他事物发生着联系(点名批评数据库概论,教SQL语句用的都是没连接的表,一个select套另一个select看的我想吐) 在学校里,一个班有很多学生,一个老师可以教很多班,而一个班需要有很多老师来上课。在这之中,班对学生是一个一对多关系,老师对班是一个多对多关系。 今天我们用一个更好理解的例子,假设我们我们要开发一个餐厅网站,而你的甲方是一个大型餐厅,提供很多菜系,每个菜系下有很多菜。这个时候菜系对菜就是一个一对多关系。 甲方要求你整一个点餐系统,A顾客假如点了糖醋里脊,红烧鱼,白菜,B顾客可以点糖醋里脊,白菜,牛肉汤。在这种情况下,糖醋里脊和白菜都与A和B有关,而菜和顾客并不是从属关系,这是一个多对多关系。 下面实际操作: class DishesType ( models . Model ) : name = models . CharField ( max_length = 10 , unique = True ) def __str__ ( self ) : return self . name class Guest ( models . Model ) : name = models . CharField ( max_length =

Flask框架之SQLALchemy实现外键及其四种约束

旧城冷巷雨未停 提交于 2020-01-22 18:48:00
表关系 表之间的关系存在三种:一对一、一对多、多对多。 而 SQLAlchemy 中的 ORM 也可以模拟这三种关系。 一对一其实在 SQLAlchemy 中底层是通过一对多的方式模拟的。 SQLAlchemy创建外键 在 从表 中增加一个字段,指定这个字段 外键 的是哪个表的哪个字段就可以了。 从表 中外键的字段,必须和 主表 的主键字段类型保持一致。 # 主表(user) / 从表(news) class User ( Base ) : __tablename__ = 'user' id = Column ( Integer , primary_key = True , autoincrement = True ) uname = Column ( String ( 50 ) , nullable = False ) def __repr__ ( self ) : return "<User(uname:%s)>" % self . uname class News ( Base ) : __tablename__ = 'news' id = Column ( Integer , primary_key = True , autoincrement = True ) title = Column ( String ( 50 ) , nullable = False )