首页 > 数据库 >idea内置数据库DataGrip + 多表操作sql语句

idea内置数据库DataGrip + 多表操作sql语句

时间:2024-07-19 14:58:05浏览次数:10  
标签:comment now 01 多表 idea sql null tb id

多表操作:一对多(多对一),一对一,一对多

可以通过物理外键实现,但实际上更推荐使用逻辑外键

以下均为物理外键使用方法

-- =====================================多表设计================================
-- -------------------一对多   职位 与 员工
-- 员工       子表
create table tb_emp(
    id int unsigned primary key auto_increment comment 'id',
    username varchar(20) not null unique comment '用户名',
    password varchar(32) default '123456' comment '密码',
    name varchar(10) not null comment '姓名',
    gender tinyint unsigned not null comment '性别,1男,2女',
    image varchar(300) comment '图像',
    job tinyint unsigned comment '职位,1班主任,2讲师,3学工管理,4教研管理',
    entrydate date comment '入职时间',
    dept_id int unsigned comment '归属部门的id',     -- 新增
    create_time datetime not null comment '创建时间',
    update_time datetime not null comment '修改时间'
) comment '员工表';
-- 部门       父表
create table tb_dept(
    id int unsigned primary key auto_increment comment 'id',
    name varchar(10) not null unique comment '部门名称',
    create_time datetime not null comment '创建时间',
    update_time datetime not null comment '修改时间'
) comment '部门表';
-- 插入测试数据
insert into tb_dept values
    (1,'学业部',now(),now()),(2,'教研部',now(),now()),(3,'咨询部',now(),now()),
    (4,'就业部',now(),now()),(5,'人事部',now(),now()) ;
insert into tb_emp values
    (null,'11','123456','一',1,'1.jpg',4,'2000-01-01',2,now(),now()),
    (null,'22','123456','二',1,'1.jpg',4,'2001-01-01',2,now(),now()),
    (null,'33','123456','三',1,'1.jpg',4,'2004-01-01',2,now(),now()),
    (null,'44','123456','四',2,'1.jpg',4,'2007-01-01',2,now(),now()),
    (null,'55','123456','五',2,'1.jpg',4,'2009-01-01',2,now(),now()),
    (null,'66','123456','六',3,'1.jpg',4,'2010-01-01',2,now(),now()),
    (null,'77','123456','七',3,'1.jpg',4,'2010-01-01',2,now(),now()),
    (null,'88','123456','八',4,'1.jpg',4,'2011-01-01',2,now(),now()),
    (null,'99','123456','九',4,'1.jpg',4,'2014-01-01',2,now(),now()),
    (null,'1010','123456','十',5,'1.jpg',4,'2016-01-01',2,now(),now()),
    (null,'1111','123456','十一',5,'1.jpg',4,'2018-01-01',2,now(),now()),
    (null,'1212','123456','十二',5,'1.jpg',null,'2021-01-01',2,now(),now()) ;
-- -------------------一对一   用户 与 身份证
create table tb_user(
    id int unsigned primary key auto_increment comment 'id',
    name varchar(10) not null comment '姓名',
    gender tinyint unsigned not null  comment '性别,1男,2女',
    phone char(11) comment '手机号',
    degree varchar(10) comment '学历'
) comment '用户信息表';
insert into tb_user values (null,'ttt',1,'12237334444','初中'),
                           (null,'nnn',1,'12283336444','大专'),
                           (null,'nnn',2,'12233834944','jn'),
                           (null,'nnn',2,'12233734444','xn');
create table tb_user_card(
     id int unsigned primary key auto_increment comment 'id',
     nationality varchar(10) not null comment '民族',
     birthday date not null  comment '生日',
     idcard char(18) not null comment '身份证号',
     issued varchar(20) not null comment '签发机关',
     expier_begin date not null comment '有效期限-开始',
     expier_end date comment '有效期限-结束',
     user_id int unsigned not null unique comment '用户id',       -- unique,一对一关键点,外键唯一
     constraint fk_user_id foreign key (user_id) references tb_user(id)
) comment '用户信息表';
insert into tb_user_card values
    (null,'汉','1960-01-01','100000100000001000','昭阳区公安局','2000-01-01',null,1),
    (null,'回','1970-01-01','100000100000001000','静安区公安局','2005-01-01','2025-01-01',2),
    (null,'汉','1960-01-01','100000100000001000','昌平区公安局','2000-01-01',null,3),
    (null,'汉','1966-01-01','100000100000001000','xxx区公安局','2000-01-01','2020-01-01',4);
-- -------------------多对多   学生 与 课程
-- 需要建立第三张中间表
create table tb_student(
    id int auto_increment primary key comment '主键id',
    name varchar(10) comment '姓名',
    no varchar(10) comment '学号'
) comment '学生表';
insert into tb_student (name, no) VALUES
    ('nnn','10000000'),('lll','10000001'),('kkk','10000002'),('mmm','10000003');
create table tb_course(
    id int auto_increment primary key comment '主键id',
    name varchar(10) comment '课程名称'
) comment '课程表';
insert into tb_course (name) values ('java'),('php'),('c#'),('python');
create table tb_student_course(
    id int auto_increment primary key comment '主键',
    student_id int not null comment '学生id',
    course_id int not null comment '课程id',
    constraint fk_course_id foreign key (course_id) references tb_course(id),
    constraint fk_student_id foreign key (student_id) references tb_student(id)
) comment '学生课程中间表';
insert into tb_student_course (student_id, course_id) VALUES (1,1),(1,2),(1,3),(2,2),(2,3),(3,4);

 

标签:comment,now,01,多表,idea,sql,null,tb,id
From: https://www.cnblogs.com/yansans/p/18311476

相关文章

  • Python:SQLAlchemy 2.0 库使用教程
    SQLAlchemy2.0版本检查importsqlalchemysqlalchemy.__version__建立连接-engine任何SQLAlchemy应用程序的开始都是一个称为Engine的对象。此对象充当连接到特定数据库的中心源,既提供一个工厂,又提供一个称为连接池的存储空间,用于这些数据库连接。用法:engine=crea......
  • Zabbix监控 MS SqlServer2019
    Zabbix监控MSSqlServer2019 环境:Zabbix7.0LTS,sqlserver2019 在mssqlserver的服务器上安装好agent2和插件:zabbix_agent2_plugins-7.0.0-windows-amd64.msi,其中有mssql的必要插件.zabbix_agent2-7.0.0-windows-amd64-openssl.msi,zabbix新一代收集数据的客户......
  • 关于idea2022的内置的DataGrip……
    设置(物理)外键步骤——————企业不禁止/推荐使用选中表——》modifytable…… 选中foreignkey——》new——》foreignkey 填充数据———员工表tb_emp中dept_id关联职位表tb_dept中的id上边的——name:tb_emp_fk_dept_id外键名称(似乎不许与键......
  • mysql的学习
    p29 crossjoin(笛卡尔积)有显示与隐式p30 union联合起来的列数要相同,且列名取决于第一个selectSELECT cus.customer_id,cus.first_name,cus.points,'Bronze'AStypeFROMsql_store.customerscuswherecus.points<1000unionSELECT cus.customer_id,cus.f......
  • MySQL中的using关键字
    先创建两张表CREATETABLEemployees(employee_idINTAUTO_INCREMENTPRIMARYKEY,nameVARCHAR(50),positionVARCHAR(50),salaryDECIMAL(10,2));INSERTINTOemployees(employee_id,name,position,salary)VALUES(1,'JohnDoe'......
  • SQL Server 使用 OPTION (RECOMPILE) 和查询存储的查询
    设置        我们正在使用WideWorldImporters数据库,您可以从Github下载【sql-server-samples/samples/databases/wide-world-importersatmaster·microsoft/sql-server-samples·GitHub】。我正在运行SQLServer2017的最新CU【https://sqlserverbuilds.......
  • 独家揭秘丨GreatSQL 没开Binlog时多线程插入数据性能劣化之谜
    一、问题发现在一次数据迁移中,用到了INSERTINTOt1SELECT*FROMt2这样的SQL用来搬迁大表,为了提高插入效率关闭了Binlog,考虑用多线程来插入提高速度。表的类型信息和插入效率如下所示。测试环境:Linuxnode-76-114.19.90-17.ky10.aarch64,128核CPU,512G内存。GreatSQL参......
  • 解读GaussDB(for MySQL)灵活多维的二级分区表策略
    本文分享自华为云社区《GaussDB(forMySQL)创新特性:灵活多维的二级分区表策略》,作者:GaussDB数据库。背景介绍分区表及二级分区表的功能,可以让数据库更加有效地管理和查询大规模数据,传统商业数据库具备该能力。MySQL支持分区表,与传统商业数据库相比,MySQL对二级分区表功能的支持......
  • mysql数据库常用命令(补充)
    1、查看表的所有内容select*from表名;2、查看指定内容selectname,agefromtest;select表示查询,name表示名字,age表示年龄,from是从的意思,test是表名。翻译过来就是:从test表中查询名字和年龄字段的内容。在select后面指定要查询的项,可以是一项也可以多项。在select后面添......
  • 关于MySQL主从复制的详细流程
    目录一、准备工作二、配置主服务器(Master)三、配置从服务器(Slave)四、数据同步(可选)五、验证复制关于MySQL主从复制的详细流程,可以分为以下几个主要步骤:一、准备工作确保环境:准备至少两台服务器,一台作为主服务器(Master),另一台作为从服务器(Slave)。确保两台服务器间的......