mysql建表语句外键
很多同学在进行编程学习时缺乏系统学习的资料。本页面基于mysql建表语句外键内容,从基础理论到综合实战,通过实用的知识类文章,标准的编程教程,丰富的视频课程,为您在mysql建表语句外键相关知识领域提供全面立体的资料补充。同时还包含 machine_start、macox、magellan 的知识内容,欢迎查阅!
mysql建表语句外键相关知识
-
MySQL建表语句转PostgreSQL建表语句全纪录个人习惯用MySQL workbench EER数据建模,然后生成SQL语句到数据库中执行,这样表之间的关系比较直观。像下面这样:画图MySQL workbench-1正向工程,生成DDL语句:MySQL workbench-2忽略生成外键,以及外键索引啥的:MySQL workbench-3生成的DDL语句:MySQL workbench-4到数据库执行。踩坑了最近团队微调,我被调整到另一个小团队。前两天接了个新需求,于是我依然使用MySQL workbench EER建模,结果好不容易建模完成了,却被告知这个项目用的数据库是PostgreSQL!于是就面临如下几种选择:重新找个支持导出PostgreSQL DDL语句的建模软件,再弄一遍。据我所知,macOS平台里没啥好的数据建模软件…PowerDesigner用不了(除非装虚拟机,或者Wine);Navicat太难用了(居然有人说Navicat是最好的数据库客户端,我只能给一个大写的服,在我看来,这货连IDEA自带数据库管理都比不上……这观点可能有点偏
-
MySQL建表语句转PostgreSQL建表语句全纪录个人习惯用MySQL workbench EER数据建模,然后生成SQL语句到数据库中执行,这样表之间的关系比较直观。像下面这样:画图MySQL workbench-1正向工程,生成DDL语句:MySQL workbench-2忽略生成外键,以及外键索引啥的:MySQL workbench-3生成的DDL语句:MySQL workbench-4到数据库执行。踩坑了最近团队微调,我被调整到另一个小团队。前两天接了个新需求,于是我依然使用MySQL workbench EER建模,结果好不容易建模完成了,却被告知这个项目用的数据库是PostgreSQL!于是就面临如下几种选择:重新找个支持导出PostgreSQL DDL语句的建模软件,再弄一遍。据我所知,macOS平台里没啥好的数据建模软件…PowerDesigner用不了(除非装虚拟机,或者Wine);Navicat太难用了(居然有人说Navicat是最好的数据库客户端,我只能给一个大写的服,在我看来,这货连IDEA自带数据库管理都比不上……这观点可能有点偏
-
MySQL 创建主键,外键和复合主键的语句 1.创建主键语法 ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名); 2.创建外键语法 ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[约束名] FOREIGN KEY (info_id)[子表列] REFERENCES news_type[主表名] (id)[主表列] ; 3.使用组合主键 如果一列不能唯一区分一个表里的记录时,可以考虑多个列组合起来达到区分表记录的唯一性,形式 ①创建时:create table sc ( studentno int, courseid int, score int, primary key (studentno,courseid) ); ②修改时:alter table tb_name add primary key (字段1,字段2,
-
mysql外键(Foreign Key)介绍和创建外键的方法在MySQL中,InnoDB引擎类型的表支持了外键约束。外键的使用条件:1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持);2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立;3.外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以;外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作;外键的定义语法:复制代码 代码如下:[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, …)REFERENCES tbl_name (index_col_name, …)[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}][ON UPDATE {RESTRICT | CASCA
mysql建表语句外键相关课程
-
SQL Server基础--T-SQL语句 本教程通过对微软SQL Server数据库工具的介绍以及关系型数据库的理解,分析讲解TSQL的基本查询语句和基本用法。其中穿插大量一线实例讲解。
讲师:小雨老师 入门 172083人正在学习
mysql建表语句外键相关教程
- Django 中 ORM 外键使用 外键 (Foreign Key)是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的连接,这个列就成为第二个表的外键。外键的作用如下:保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,就是当你对一个表的数据进行操作,和他有关联的一个或更多表的数据能够同时发生改变。外键可以是一对一的,一个表的记录只能与另一个表的一条记录连接,或者是一对多的,一个表的记录与另一个表的多条记录连接。在 MySQL 种想使用外键需要具备一定条件的:MySQL 重需要关联的表必须都使用 InnoDB 引擎创建,MyISAM 表暂时不支持外键;外键列必须建立了索引,MySQL 4.1.2 以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显式建立;外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如 int 和 tinyint 可以,而 int和char 则不可以。最后我们来了解下在 MySQL 中创建外键的用法,如下:[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)REFERENCES tbl_name (index_col_name, ...)[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}][ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]该语法可以在 CREATE TABLE 和 ALTER TABLE 时使用,如果不指定 CONSTRAINT symbol,MySQL 会自动生成一个名字。其中 ON DELETE、ON UPDATE 表示事件触发限制,可设参数:RESTRICT:限制外表中的外键改动,默认值;CASCADE:跟随外键改动;SET NULL:设空值;SET DEFAULT:设默认值;NO ACTION:无动作,默认的。例如下面的 SQL 语句是由 Django 来帮我们自动生成 nember 和 vip_level 的:CREATE TABLE `member` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(30) NOT NULL, `age` varchar(30) NOT NULL, `sex` smallint(6) NOT NULL, `occupation` varchar(30) NOT NULL, `phone_num` varchar(14) NOT NULL, `email` varchar(254) NOT NULL, `city` varchar(30) NOT NULL, `register_date` datetime(6) NOT NULL, `vip_level_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `member_vip_level_id_44ba3146_fk_vip_level_id` (`vip_level_id`), CONSTRAINT `member_vip_level_id_44ba3146_fk_vip_level_id` FOREIGN KEY (`vip_level_id`) REFERENCES `vip_level` (`id`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
- 4.1 例2 创建用户积分表 请书写 SQL 语句,创建imooc_user_score表,共有 id,user_score 和 user_id 三个字段,其中 id 字段为主键且自增,user_score 表示用户积分,数据类型为整形,user_id为外键指向 imooc_user 的主键 id。分析:新建数据表使用 Create 指令,user_score 为基本类型字段,id 作为主键,user_id 为外键。语句:整理可得语句如下:CREATE TABLE imooc_user_score( id int unsigned PRIMARY KEY AUTO_INCREMENT, user_score int, user_id int unsigned, FOREIGN KEY (user_id) REFERENCES imooc_user(id));SQL 语句中,user_id 是 imooc_user_score 的字段,同时它也是外键,它的值来源于表 imooc_user 的 id 字段。(MySQL)新建成功后,信息如下:+------------+------------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+------------+------------------+------+-----+---------+----------------+| id | int(10) unsigned | NO | PRI | <null> | auto_increment || user_score | int(11) | YES | | <null> | || user_id | int(10) unsigned | YES | MUL | <null> | |+------------+------------------+------+-----+---------+----------------+若使用 PostgreSQL,新建语句如下:CREATE TABLE imooc_user_score( id serial PRIMARY KEY, user_score int, user_id int, FOREIGN KEY (user_id) REFERENCES imooc_user(id));
- 2.2 什么是弱外键 在 join 一节中,我们提到外键的最终落脚点是使用 Join 来连接数据,不过 SQL 连接并非只支持强外键,它其实也支持弱外键,甚至无外键,只要连接的字段能够对应上,连接都是可行的。那么什么是弱外键了?答案其实很简单,强外键是数据库层面上的外键,而弱外键是逻辑层面的上的外键。如下,我们新建两表:CREATE TABLE imooc_user( id int PRIMARY KEY, username varchar(20), age int);CREATE TABLE imooc_user_score( id int PRIMARY KEY, user_id int NOT NULL, score int);在新建 imooc_user_score 表的 SQL 语句中,我们并未声明 user_id 是外键,但是在逻辑层面上我们认为它就是外键,在连接的时候知道其对应关系就行了。
- 2. 查看建表 sql 语句 修改表字段类型命令 : 命令 : SHOW CREATE table_name;执行结果如下图:如上图所示 “new_student” 为表名,建表语句为:CREATE TABLE `new_student` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL DEFAULT '无名', `age` int(10) unsigned NOT NULL DEFAULT '0', `id_number` varchar(18) NOT NULL DEFAULT '', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;Tips:其中 “student” 为表名称,“id”、“name”、“age”、"id_number"为字段名称,跟在字段名称后面的是字段的数据类型,“UNSIGNED” 表示无符号,"AUTO_INCREMENT"表示自增,"PRIMARY KEY (`id`)"表示设置 “id” 为业务主键,"NOT NULL DEFAULT ‘无名’“表示默认不为空。且默认值为"无名”。
- Java 表达式、语句和块 我们在前面的小节中,已经学习了变量和运算符。有了这些前置知识,我们就可以学习表达式、语句和块了。运算符可用于构建表达式,表达式可以进行值的计算,它是语句的核心组成部分;而语句是指令式编程语言中最小的独立元素;多条语句又可以组成语句块。本小节我们将学习表达式的概念和常用分类,也将了解到什么是语句和块。
- 3.1 例1 创建用户表 请书写 SQL 语句,创建imooc_user表,共有 id,username 和 age 三个字段,其中 id 为主键,数据类型为 unsigned int 且自增,username 为 varchar 类型,age 表示年龄,为 int 类型。分析:新建数据表使用 Create 指令,username 和 age 为基本类型字段,id 作为主键,字段类型为无符号整型,且自增,故该字段需要添加 auto_increment 约束。语句:整理可得语句如下:CREATE TABLE imooc_user( id int unsigned PRIMARY KEY AUTO_INCREMENT, username varchar(20), age int);(MySQL数据库)创建成功后,imooc_user表信息如下:+----------+------------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+----------+------------------+------+-----+---------+----------------+| id | int(10) unsigned | NO | PRI | <null> | auto_increment || username | varchar(20) | YES | | <null> | || age | int(11) | YES | | <null> | |+----------+------------------+------+-----+---------+----------------+不同的数据库对于自增的支持是不同的,有些数据库甚至不支持自增主键,PostgreSQL 中使用 serial 类型来支持自增,如下:CREATE TABLE imooc_user( id serial PRIMARY KEY, username varchar(20), age int);
mysql建表语句外键相关搜索
-
mac osx
machine_start
macox
magellan
malloc
manifest
manifest文件
map
map 遍历
mapreduce编程
maps google com
margin
margin bottom
margin left
margin right
margin top
marginbottom
marginheight
marginleft
margintop