MySQL教程3 MySQL8操作数据表中记录 13.MySQL多表更新 学习猿地( 二 )


文章插图
 可以看到插入成功 。
friInfo表中的departmentId列的数据只能从department中的id列选取 。
(2)可以在创建表的时候直接添加约束
例: 
create table department(id int not null auto_increment primary key,name varchar(20))engine=innodb default charset=utf8;create table friInfo(id int not null auto_increment primary key,name varchar(20),departmentId int,constraint fk_f_d foreign key(departmentId) referneces department(id))engine=innodb default charset=utf8; 
3.数据行级别(****)

  • 显示表中数据:select * from ‘数据表明‘;
  • 添加列:lter table ‘表名‘ add ‘列名’ 类型;
  • 删除列:alter table ‘表名‘ drop column ‘列名‘;
  • 修改列类型:alter table ‘表名‘ modify column ‘列名‘ 类型;
  • 修改列名和类型:alter table ‘表名‘ change ‘原列名‘ ‘新列名‘ 类型;
  • 添加主键:alter table ‘表名‘ add primary key;
  • 删除主键:alter table ‘表名‘ drop primary key;
  • 添加外键:alter table ‘主表名‘ add constraint ‘外键名‘ foreign key ‘从表名‘(‘外键字段‘) references ‘主表‘(字段‘);
  • 删除外键:alter table ‘表名‘ drop foreign key ‘外键名‘;
  • 二 SQL基本数据类型
    1. 数字
    (1) bit(m) 二进制位 , m表示二进制位的长度 , 范围1~64 , 默认m=1
    (2) tinyint 相当于c++中的int8类型 , 默认是有符号的 , 创建无符号:tinyint unsigned;注意:布尔类型用 tinyint(1)表示;
    (3) smallint 相当于c++中的int16类型;
    (4) int 相当于c++中的int32类型;
    (5) bigint 相当于c++中的int64类型;
    (6) decimal(m[,d]) 精确的小数 , m是数字总个数(负号不算) , 最大值65 , d是小数点后个数 , 最大值30;
    (7) float(m,d) 单浮点数 , m是数字总个数 , d是小数点后数字个数;数值越大越不准确;
    (8) double(m,d) 双浮点数 , m是数字总个数 , d是小数点后数字个数;数值越大越不准确;
    2.字符串
    (1) char(m) 固定长度的字符串 , 最大长度255字符 , m代表字符串长度 , 即使数据小于m , 也会占用m个字符;
    (2) varchar(m) 可变长度的字符串 , 最大长度255字符 , m代表字符串长度 , 只要小于m长度的字符串都可以保存在数据类型中;相比于char类型效率较低;
    (3) text 保存变长的大字符串 , 最大长度65535个字符;
    (4) mediumtext 保存变长的大字符串 , 最大长度16777215个字符;
    (5) longtext 保存变长的大字符串 , 最大长度4294967295个字符;
    (6) TinyBlog、Blog、MediumBlog、LongBlog 二进制数据;
    3.时间
    (1) date: YYYY-MM-DD;
    (2) time: HH:MM:SS;
    (3) datetime:  YYYY-MM-DD HH:MM:SS;
    (4) year: YYYY;
    (5) timestamp: YYYYMMDD HHMMSS;
    4.枚举
    相当于c++中的枚举 。
    用法:
    create table studentInfo(name varchar(20),age int,class ENUM(‘class1‘, ‘class2‘, ‘class3‘))engine=innodb default charset=utf8;
    insert into studentInfo(name,age,class) values(‘a‘,19,‘class1‘),(‘b‘,20,‘class2‘),(‘c‘,21,‘class3‘);5.集合
    可以设置多个值 。
    用法:
    create table teacher(name varchar(20),course SET(‘math‘, ‘sports‘, ‘english‘))engine=innodb default charset=utf8;insert into teacher(name,course) values(‘a‘, (‘math‘, ‘sports‘)), (‘b‘, (‘english‘, ‘sports‘)), (‘c‘, (‘math‘, ‘english‘));