MySQL: 手写的SQL语句.可直接执行 ---学生表,老师表,课程表,班级表,成绩表

2022-07-26,,,,

MySQL: 手写的SQL语句.可直接执行

学生表,老师表,课程表,班级表,成绩表

  • 删除 表 如果 存在 表名
    drop table if EXISTS tbl_score; – 删除成绩(先删除外键表再删主表)
    drop table if EXISTS tbl_student; – 删除学生
    drop table if EXISTS tbl_class; – 删除班级
    drop table if EXISTS tbl_teacher; – 删除老师
    drop table if EXISTS tbl_course; – 删除课程

  • create table 表名 (
    列名1 类型 约束1 约束2 ,
    列名2 类型 约束,

    )


常见约束/列的限制条件

primary key :主键特点:唯一不能重复!
auto_incement: 自增,自增列必须为int类型
表中必须有主键,为了防止未设置主键,习惯添加整数自增的id列为虚拟主键
default: 默认
not null 非空
unique : 唯一约束!

常用的数据类型:

整数
varchar(长度) 可变长度 常用
char(N) 固定字符长度
浮点类型/小数: float/double
date.datetime, time

  • 班级对象(tbl_class) : 唯一标识id,班级编号,人数
    create table tbl_class(
    id int primary key auto_increment COMMENT ‘注释主键’, – 主键自增
    cname varchar(50),
    size int # 班级人数
    );

  • 插入 到 表名(列1名,列2名,列3名) 值(列1值,列2值,列3值…)
    insert into 表名(…) values(…)

  • insert into tbl_class values(default,‘人工智能一班’,30); # 不制定列名,必须为所有列都插入数据,主键自增用default代替!

insert into tbl_class values(default,'人工智能一班',30);
insert into tbl_class values(default,'数据分析一班',30);
insert into tbl_class values(default,'爬虫一班',30);
insert into tbl_class values(default,'大数据',30);
  • 学生对象(student): 唯一标识id,姓名,性别,年龄,生日,电话,地址,邮箱,班级编号
    create table tbl_student(
    id int primary key auto_increment, #id自增
    sname varchar(50) not null, – 非空
    sex char(2), – 2个字符
    age int ,
    birthday date, – 日期年月日
    phone VARCHAR(11), – 字符串(必须为字符串,因为项目中经常对手机号进行截取,拼接等操作)
    email varchar(50),
    addr varchar(100),
    c_id int, – 外键类型必须和主键类型相同! 学生需要班级名,实际保存的是班级外键(班级id)
    foreign key(c_id) references tbl_class(id) – 外键 (外键列名) 参考 主表(主键)

);

  • 插入数据 (如果班级id不存, 直接报错!)
  • 必须先删除从表,再删除主! 学生参考班级, 学生就是主表!
insert into tbl_student values(default,'张A','男',20,'1980-04-03','18888888888','zhanga@163.com','北京',1);
insert into tbl_student values(default,'张B','男',20,'1980-04-03','18888888888','zhanga@163.com','北京',1);
insert into tbl_student values(default,'赵C','女',21,'1980-04-03','18888888888','zhanga@163.com','天津',1);
insert into tbl_student values(default,'赵D','女',21,'1980-04-03','18888888888','zhanga@163.com','天津',1);
insert into tbl_student values(default,'钱E','女',21,'1980-04-03','18888888888','zhanga@163.com','上海',1);
insert into tbl_student values(default,'钱F','男',17,'1980-04-03','18888888888','zhanga@163.com','上海',1);
insert into tbl_student values(default,'孙G','男',16,'1980-04-03','18888888888','zhanga@163.com','杭州',1);
insert into tbl_student values(default,'孙H','女',17,'1980-04-03','18888888888','zhanga@163.com','杭州',2);
insert into tbl_student values(default,'李I','男',26,'1980-04-03','18888888888','zhanga@qq.com','苏州',2);
insert into tbl_student values(default,'李J','女',34,'1980-04-03','18888888888','zhanga@163.com','苏州',2);
insert into tbl_student values(default,'周K','女',40,'1980-04-03','18888888888','zhanga@163.com','四川',2);
insert into tbl_student values(default,'周L','男',32,'1980-04-03','18888888888','zhanga@163.com','四川',2);
insert into tbl_student values(default,'吴M','女',16,'1980-04-03','18888888888','zhanga@163.com','广州',2);
insert into tbl_student values(default,'吴N','女',20,'1980-04-03','18888888888','zhanga@163.com','广州',3);
insert into tbl_student values(default,'郑O','男',22,'1980-04-03','18888888888','zhanga@163.com','重庆',4);
insert into tbl_student values(default,'郑P','男',23,'1980-04-03','18888888888','zhanga@163.com','重庆',4);
insert into tbl_student values(default,'王Q','女',24,'1980-04-03','18888888888','zhanga@163.com','北京',1);
insert into tbl_student values(default,'王R','男',28,'1980-04-03','18888888888','zhanga@163.com','天津',1);
insert into tbl_student values(default,'冯S','女',39,'1980-04-03','18888888888','zhanga@163.com','山东',1);
insert into tbl_student values(default,'冯T','男',20,'1980-04-03','18888888888','zhanga@163.com','山东',2);
insert into tbl_student values(default,'陈U','女',25,'1980-04-03','18888888888','zhanga@163.com','山西',2);
insert into tbl_student values(default,'陈V','男',28,'1980-04-03','18888888888','zhanga@163.com','山西',3);
insert into tbl_student values(default,'楚W','女',28,'1980-04-03','18888888888','zhanga@163.com','山西',4);
insert into tbl_student values(default,'楚X','男',29,'1980-04-03','18888888888','zhanga@qq.com','河北',1);
insert into tbl_student values(default,'魏Y','女',22,'1980-04-03','18888888888','zhanga@163.com','河北',2);
insert into tbl_student values(default,'魏Z','男',21,'1980-04-03','18888888888','zhanga@163.com','河南',3);

#select * from tbl_student;
  • 老师对象(teacher): 唯一标识id,姓名,性别,年龄,电话
create table tbl_teacher(
	id int primary key auto_increment ,
	tname varchar(50) not null,
  sex char(2),
  age int,
  phone varchar(11)
);
insert into tbl_teacher values(default,'成龙','男',58,'1766666601');
insert into tbl_teacher values(default,'黎明','男',58,'1766666601');
insert into tbl_teacher values(default,'孙俪','女',35,'1766666601');
insert into tbl_teacher values(default,'范冰冰','女',35,'1766666601');

select * from tbl_teacher

  • 课程对象(course): 唯一标识id,课程名,开课时间,课时数量
create table tbl_course(
	id int primary key auto_increment ,
	cname varchar(11) not null unique, #非空,唯一
	start_time datetime,
	count int 
);
insert into tbl_course values(default,'人工智能AI',now(),80); -- now()表示自带日期函数,
insert into tbl_course values(default,'数据分析',now(),70);
insert into tbl_course values(default,'爬虫',now(),60);
insert into tbl_course values(default,'大数据',now(),90);
  • 成绩对象(score) : id,分数,课程名, 学生名
create table tbl_score(
	id int primary key auto_increment,
  score float(4,1), -- 4位, 小数点保留1位
  s_id int not null,
	c_id int not null,
	foreign key(s_id) references tbl_student(id),  #建表时指定外键
  foreign key(c_id) references tbl_course(id)  #建表时指定外键
);

修改 表 表名 增加 关系 关系名 外键 (外键列) 参考 主表(主键)

#alter table tbl_score add constraint FK_scoreid_courseid foreign key(c_id) references tbl_course(id);

  • 第1个人,第4门课
insert into tbl_score values (default,58,1,1);
insert into tbl_score values (default,89,1,1);
insert into tbl_score values (default,78,1,2);
insert into tbl_score values (default,65,1,3);
insert into tbl_score values (default,90,1,4);
  • 第2个人4门课
insert into tbl_score values (default,90,2,1);
insert into tbl_score values (default,54,2,2);
insert into tbl_score values (default,89,2,2);
insert into tbl_score values (default,87,2,3);
insert into tbl_score values (default,92,2,4);
  • 第3个人3门课
insert into tbl_score values (default,90,3,1);
insert into tbl_score values (default,89,3,2);
insert into tbl_score values (default,87,3,3);
  • 第4个人3门课
insert into tbl_score values (default,87,4,1);
insert into tbl_score values (default,86,4,2);
insert into tbl_score values (default,90,4,3);
insert into tbl_score values (default,67,4,4);
  • 第5个人4门课
insert into tbl_score values (default,98,5,1);
insert into tbl_score values (default,90,5,2);
insert into tbl_score values (default,78,5,3);
insert into tbl_score values (default,98,5,4);

select * from tbl_score;

  • 删除主键和外键
alter table 表名 drop foreign key 外键(区分大小写); alter table 表名 drop

primary key; alter table tbl_score drop foreign key

FK_scoreid_courseid

本文地址:https://blog.csdn.net/Chris_R/article/details/111027896

《MySQL: 手写的SQL语句.可直接执行 ---学生表,老师表,课程表,班级表,成绩表.doc》

下载本文的Word格式文档,以方便收藏与打印。