首页
学习
活动
专区
圈层
工具
发布

【数据库】MySQL进阶一、主外键讲解

MySQL进阶主外键讲解 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性 外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来和其他表建立联系用的...Id=Dept_id,而Dept_id就是员工表中的外键:因为员工表中的员工需要知道自己属于哪个部门,就可以通过外键Dept_id找到对应的部门,然后才能找到部门表里的各种字段信息,从而让二者相关联。...所以说,外键一定是在从表中创建,从而找到与主表之间的联系;从表负责维护二者之间的关系。 2.外键的使用需要满足下列的条件:(这里涉及到了InnoDB的概念) 1....注:InnoDB是数据库的引擎。MySQL常见引擎有两种:InnoDB和MyISAM,后者不支持外键。 2. 建立外键关系的对应列必须具有相似的InnoDB内部数据类型。...FOREIGN KEY:将从表中的字段1作为外键的字段。 REFERENCES:映射到主表的字段2。

2.7K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    主外键关联删除(on delete set null和on delete cascade)

    主外键关联,当删除的是父表数据,参照这些要删除的数据,Oracle有三种处理方式: 1、禁止删除,也是Oracle默认方法。 2、将参照要删除数据的子表对应数据置空。...3、将参照要删除数据的子表对应数据删除。 对于1,比较容易理解,不解释。 对于2,需要使用on delete set null建立外键约束。...对于3,需要使用on delete cascade建立外键约束。...-------- -------------------- ----------      3 Linda          Liu                     2 可以看到子表中参照父表的行也被删除了...ERROR at line 1: ORA-02266: unique/primary keys in table referenced by enabled foreign keys 这种删除表的和上面相同

    3.5K30

    在PowerDesigner中设计物理模型1——表和主外键

    Name是模型上显示的名称,Code是生成的实际的表名,后面的3个复选框P代办主键、F代表外键,M代表不能为空。...另外需要注意的是,在建立主键时,系统会在主键上建立索引,索引分为聚集索引和非聚集索引,在“键属性”窗口的General选项卡中可以设置该主键上建立的索引是聚集索引还是非聚集索引,如图所示: 外键 如果是由概念模型或者逻辑模型生成物理模型...,那么外键是通过Relationship生成的,也可以通过工具栏中的Reference来实现两表之间的外键关系。...假如一个课程只会在一个固定的教室上课,而一个教室会安排多个课程在不同的时间上课,所以教室和课程是一对多的关系,那么课程表中就需要添加RoomID列以形成外键列,具体操作方法就是在工具栏中单击“Reference...”按钮,然后在设计面板中,课程表上按下鼠标左键,并拖拽到教师表中放开鼠标,这时如果课程表中没有RoomID列,系统会自动创建RoomID列并创建该列上的外键引用,如果已经存在RoomID列,则只添加外键引用

    3.8K10

    通过sql命令建表 和 主外键约束以及其他约束

    emp_sex nchar(1), 11 dept_id int constraint fk_dept_id_b foreign key references dept(dept_id) --外键约束...SQL Server里最后一行)的逗号可有可无,但是Oracle数据库不能加逗号,但是建议SQL最后一个字段不要写逗号,方便移植 4. nvarchar表示国际化编码长度可变的字符型变量 5....变量类型写在变量名后面,跟C语言以及其他语言不同,SQLServer不是C语言写的 6. 主键外键可以命名,不然就是默认的名字 7....写完后,鼠标左键选中整个代码,分析、执行,最后生成表 什么是约束constraint: 对一个表中的属性操作的限制 分类: 主键约束:不允许重复元素,避免数据的冗余 外键约束:通过外键约束,从语法上保证了本事物所关联的其他事物一定是存在的...事物和事物之间的关系是通过外键来体现的 check约束:保证事物属性的取值在合法的范围之内 1 create table student 2 ( 3 stu_id int primary key

    1.5K20

    SQL Server数据库中导入导出数据及结构时主外键关系的处理

    将“编写外键脚本”的值设置为false,意思是这一步骤生成的数据结构脚本中不包含表之间的外键关系。其他选项根据实际情况设置。 点击【确定】按钮,生成脚本,入下图。 ?...选中目标数据库,并打开步骤3中保存的“OriginalData.sql”数据脚本,运行之,成功后,查看数据表 ? 查询结果可以看出已经成功导入数据。...设置 SET IDENTITY_INSERT dbo.T_ACL_User Off ; 步骤5:从源数据库生成仅包含表外键关系的数据结构脚本   步骤与步骤1大致相同,最后一步设置相反 ?...步骤6:导入外键结构关系脚本至目标数据库   选中目标数据库,打开步骤5中保存的“OriginalDataStructureOnlyWithFK.sql”脚本文件,运行之,运行成功后,查看表结构 ?...外键已经成功创建。

    2.6K40

    mysql的外键

    在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束。...外键的使用条件: 1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持); 2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引...,但如果在较早的版本则需要显示建立; 3.外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以; 外键的好处:可以使得两张表关联...,保证数据的一致性和实现一些级联操作; 外键的定义语法: [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)...ON DELETE、ON UPDATE表示事件触发限制,可设参数: RESTRICT(限制外表中的外键改动) CASCADE(跟随外键改动) SET NULL(设空值) SET DEFAULT(设默认值

    8.7K70

    mysql查看版本sql_linux查看mysql版本

    ();或者启动mysql后直接可以看到版本信息 点击“开始菜单”,选择“所有程序”,然后选择“附件”,选择“运行”,然后在运行对话框输入“cmd”,点击确定即可打开命令行界面.快捷方式是:win+r键...【使用命令行查看mysql版本-直接查看】:在命令行输入“mysql–version",按”Enter“键即可....查看版本信息#1使用命令行模式进入mysql会看到最开始的提示符YourMySQLconnectionidis3Serverversion:5.1.69Sourcedistribution#2命令行中使用...status可以看到 1、使用-V参数首先我们想到的肯定就是查看版本号的参数命令,参数为-V(大写字母)或者–version使用方法:D:\xampp\mysql\bin>mysql-V或者D:\xampp...\mysql\bin> 查看mysql版本方法一:status;方法二:selectversion(); 一般情况下,mysql会默认提供多种存储引擎,你可以通过下面的查看:看你的mysql现在已提供什么存储引擎

    26.9K10

    查看mysql日志命令_linux查看mysql安装路径

    centos是linux吗_网站服务器运行维护 centos是一个基于Red Hat Linux提供的可自由使用源代码的企业级Linux发行版本,它是来自于Red Hat Enterprise Linux...依照开放源代码规定释出的源代码所编译而成。...Linux中MySQL日志在哪 Linux中MySQL日志一般保存在/var/log/目录下,但还需要看具体的配置文件才能确定,具体方法如下: 1、首先登陆 mysql: >mysql -u root...-p 2、然后查看是否启用了日志(推荐学习:Linux视频教程) mysql>show variables like ‘log_%’; 3、查看当前的日志 mysql> show master status...; 4、你需要知道的mysql的日志类型:Linux中oracle如何启动_网站服务器运行维护 Linux中启动oracle的方法:1、打开命令行窗口输入su – oracle;2、输入sqlplus打开

    27.1K30

    MySQL查看索引

    查看索引 mysql> show index from tblname; mysql> show keys from tblname; · Table 表的名称。...· Key_name 索引的名称。 · Seq_in_index 索引中的列序列号,从1开始。 · Column_name 列名称。 · Collation 列以什么方式存储在索引中。...在MySQL中,有值‘A’(升序)或NULL(无分类)。 · Cardinality 索引中唯一值的数目的估计值。通过运行ANALYZE TABLE或myisamchk -a可以更新。...基数根据被存储为整数的统计数据来计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,MySQL使用该索引的机 会就越大。...· Sub_part 如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL。 · Packed 指示关键字如何被压缩。如果没有被压缩,则为NULL。

    7.5K30

    查看Windows电脑的全部快捷键:OpenArk

    本文介绍在Windows电脑中,基于OpenArk工具,查看电脑操作系统与所有软件的快捷键,并对快捷键冲突加以处理的方法。   ...最近,发现有道词典的双击Ctrl功能失效了,不能很方便地翻译界面中的英语;所以,就尝试了早闻大名的OpenArk工具,对电脑中的所有快捷键加以分析,看看是不是系统或者其他软件将这个快捷键占用了。...这里介绍一下具体的操作方法。需要说明的是,这一方法对于多数Windows系统版本的电脑都适用。   ...随后,即可在工具右侧看到电脑中的全部快捷键;如下图所示,我们可以按照“热键”升序或降序对这些快捷键加以排序,从而方便我们找到自己想要的快捷键。   ...对于任何一个快捷键,我们在其上方右键,即可对其执行相关操作;例如,可以通过“删除热键”选项,将这个快捷键删除,如下图所示。

    5.2K10

    MySql 查看Query Cache的状态

    query cache 是mysql性能优化时的重要指标,通过查看query cache的状态信息,就可以知道例如 缓存是否有碎片、命中缓存的数量、没用到缓存的次数 …… 使用方法 mysql>show...缓存中的空闲内存 Qcache_hits 多少次命中,通过这个参数可以查看到querycache的基本效果 Qcache_inserts 多少次未命中然后插入,通过“Qcache_hits”...相互结合,能够更清楚地了解到系统中query cache的内存大小是否足够,是否非常频繁地出现因为内存不足而有query被换出的情况 Qcache_not_cached 不适合进行缓存的查询数量,...例如一些查询使用了now()之类的函数 Qcache_queries_in_cache 当前Query Cache 中cache 的Query 数量 Qcache_total_blocks 当前...Query Cache 中的block 数量

    3.2K70
    领券