首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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

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

    主外关联删除(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 这种删除表和上面相同

    2.8K30

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

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

    2.1K10

    通过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

    96720

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

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

    1.8K40

    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(设默认值

    5.5K70

    查看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打开

    20.6K30

    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现在已提供什么存储引擎

    21.3K10

    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。

    5K30

    查看Windows电脑全部快捷:OpenArk

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

    39110

    mysql 分区_mysql分区

    对于已经过期或者不需要保存数据,可以通过删除与这些数据有关分区来快速删除数据 跨多个磁盘来分散数据查询,以获得更大查询吞吐量 分区:partition key 查看是否支持分区: mysql>...之外类型列作为分区; 如果存在主键/唯一字段,则不能使用除主键/唯一字段之外其他字段进行分区。...对于上百万条记录表来说,删除分区要比运行一个delete 语句有效得多 经常运行包含分区查询,mysql可以很快地确定只有某一个或某些分区需要扫描。...; 在执行hash分区时,mysql会对分区应用一个散列函数,以此确定数据应当放在N个分区中哪个分区中。...; 子分区 对分区表中每一个分区再次分割,又被称为复合分区;适合用于保存非常大量数据记录; mysql分区处理null值方式 mysql禁止分区键值使用null,分区可能是一个字段或者一个用户定义表达式

    3.8K30

    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 数量

    2.3K70
    领券