mysql 中多表 总结

1.多表的创建语法

  alter table 从表名  add constraint 外键名 foreign key (从表类名) references 主表名(主表列);

  准备数据:

CREATE DATABASE one2many;
USE one2many;
#创建学生表
CREATE TABLE stu (
	stuid VARCHAR(32) PRIMARY KEY,
	NAME VARCHAR(32),
	number INT ,
	adress VARCHAR(32)
);
INSERT INTO stu VALUES (‘s001‘,‘huluwa‘,123456,‘葫芦山‘);
INSERT INTO stu VALUES (‘s002‘,‘automan‘,654321,‘北海道‘);

#创建成绩表
CREATE TABLE score(
	scoid VARCHAR(32),
	chinese INT,
	math INT,
	english INT,
	studentid VARCHAR(32)  #在成绩表中添加一列,存放学生表中学生ID
);
INSERT INTO score VALUES(‘sc1‘,100,90,90,‘s001‘);
INSERT INTO score VALUES(‘sc2‘,90,80,90,‘s002‘);
INSERT INTO score VALUES(‘sc3‘,90,70,70,‘s001‘);
INSERT INTO score VALUES(‘sc4‘,100,95,95,‘s002‘);

    在上述两个表中,score表中的seudentid类存储了stu表中学生的信息,可以通过成绩在score表中查询到studentid后,在stu表中通过studentid的值查到该成绩对应的学生的信息,但此时两个表并没有添加外键关系,可以随意从表可以随意添加符合数据类型的值(这个值在主表中没有对应的信息).主表可以随意删除学生信息,删除后从表将查询不到,但是对应的考试成绩还存在,简单说就是主表可以随意删除数据,从表可以随意添加数据,这是不符合业务逻辑的

  添加主键约束

ALTER TABLE score ADD CONSTRAINT stu_score FOREIGN KEY (studentid) REFERENCES stu(stuid);

    此时主表随意删除数据(从表中未删除)或从表随意添加数据(主表中没有对应的值)时就会报错.------a foreign key constraint fails

2.多表的查询

  1.

时间: 2024-09-29 08:42:06

mysql 中多表 总结的相关文章

MySQL中数据表的增操作

今天学习到表的增操作,写个博客总结一下,PS:下面所有的注释都是我在电脑上全部操作完成后,再复制到记事本上添加的.至于在执行的时候可不可以那样添加注释,就有待考证了. 选择库 mysql> show databases;#查看目前有哪些数据库存在 +--------------------+ | Database | +--------------------+ | information_schema | | ceshi_ku | | mysql | | performance_schema

MySQL中数据表的查操作

查询数据表的全部内容 mysql> show tables;#查看当前数据库下的所有表 +--------------------+ | Tables_in_ceshi_ku | +--------------------+ | biao | | ceshi_biao | +--------------------+ 2 rows in set (0.00 sec) mysql> select * from biao;#查看该表所有的内容,*代表通配符,在这里是代表所有的列 +------+-

MySQL中多表删除方法(转载)

如果您是才接触MySQL数据库的新人,那么MySQL中多表删除是您一定需要掌握的,下面就将为详细介绍MySQL中多表删除的方法,供您参考,希望对你学习掌握MySQL中多表删除能有所帮助. 1.从MySQL数据表t1中把那些id值在数据表t2里有匹配的记录全删除掉 DELETE t1 FROM t1,t2 WHERE t1.id=t2.id 或DELETE FROM t1 USING t1,t2 WHERE t1.id=t2.id 2.从MySQL数据表t1里在数据表t2里没有匹配的记录查找出来并

MySQL中多表删除方法

如果您是才接触MySQL数据库的新人,那么MySQL中多表删除是您一定需要掌握的,下面就将为详细介绍MySQL中多表删除的方法,供您参考,希望对你学习掌握MySQL中多表删除能有所帮助. 1.从MySQL数据表t1中把那些id值在数据表t2里有匹配的记录全删除掉 DELETE t1 FROM t1,t2 WHERE t1.id=t2.id 或DELETE FROM t1 USING t1,t2 WHERE t1.id=t2.id 2.从MySQL数据表t1里在数据表t2里没有匹配的记录查找出来并

eclipse怎么连接到MySQL中的表!!!!!

简介: 用eclipse编写的好的代码,我们怎么才能连接到数据库呢?对于初学者,特别是在连接数据库这块经常会发生一些莫名的错误,一般来说,归根是我们连接数据库这一过程发生错误.那么我们如何来解决呢?那我就来分享一下我连接数据库的操作过程,作为一个参考吧! 首先打开Navicat Premium软件,点击文件,之后点击新建连接,选择MySQL,我个人喜欢用图来描述: 填写连接名(随便取一个英文名),然后填写密码,记住自己的用户名 点击连接测试: 有一些的会报这样的错误: 报这个错误的意思是连接初始

MySQL中所有表的方法

MySQL删除数据库中所有表的方法: -- 切换到要删除表的数据库 USE REPLACE_WITH_DATABASE_NAME_YOU_WANT_TO_DELETE; -- 删除所有表 SET FOREIGN_KEY_CHECKS = 0; SET GROUP_CONCAT_MAX_LEN=32768; SET @tables = NULL; SELECT GROUP_CONCAT('`', table_name, '`') INTO @tables   FROM information_sc

如何查看MySQL中每张表占用的空间大小

如题,找到MySQL中的information_schema表,这张表记录了所有数据库中表的信息,主要字段含义如下: TABLE_SCHEMA : 数据库名 TABLE_NAME:表名 ENGINE:所使用的存储引擎 TABLES_ROWS:记录数 DATA_LENGTH:数据大小 INDEX_LENGTH:索引大小 如果需要查询所有数据库占用空间大小只需要执行SQL命令: mysql> use information_schema Database changed mysql> SELECT

浅谈mysql中各种表空间(tablespaces)的概念

mysql中,会涉及到各种表空间的概念,虽然,很多方面这些概念和Oracle有相似性,但也有很多不同的地方,初学者很容易被这些概念弄的晕头转向,从而,混淆这些概念的区别和理解,下面,就简要介绍和说明一下这些表空间的概念. 1.系统表空间(System Tablespace) innodb系统表空间包含innodb数据字典(innodb相关对象的元数据),同时,双写缓冲(doublewrite buffer).改变缓冲(change buffer)和undo日志(undo logs)等也存储于系统

应用程序不了找到mysql中的表,客户端可以正常打开表

原因是mysql中区分大小写的参数:lower-case-table-names=1 默认是区分大小写的,程序中代码可能是大小写混合的,其中访问数据库的sql是大小写混合的.所以找不到数据库中的表 tis.platform_user 解决方法:设置mysql忽略数据库表名大小写 通过设置 lower-case-table-names=1  实现忽略表名大小写 <wiz_code_mirror> [root@tisdb ~]# cat /etc/my.cnf # For advice on ho

mysql中的表操作

------------恢复内容开始------------ 创建数据库 create database 数据库名 切换数据库 use 数据库名 建表: create table 表名 ( 字段名1,类型,约束 字段名2,类型,约束 ... ) 约束: 1.主键约束 1)直接在建表时字段类型后加 primary key 2)在表最后加 constraint 约束名 primary key(字段名) 3)表外修改 alter table 表名 add constraint 约束名 primary