3-MySQL常用数据类型及表管理

    数据类型
    1.整数类型:只能包含数字的类型,不包含小数点
        TINYINT:占用1字节存储空间(1B) 
        SMALLINT:占用2字节存储空间(2B) 
        MEDIUMINT:占用3字节存储空间(3B) 
        INT:可以动态设置数据占用的存储空间 
        BIGINT:占用8字节存储空间(8B) 
        
    2.浮点类型:带小数点的数
        FLOAT :单精度,4字节
        DOUBLE:双精度类型,8字节
        DECIMAL:定点数类型,可以固定小数点后数据的位数(精度)
    3.字符串类型
        char:固定长度的字符串类型,比如邮政编码char(6),身份证号char(18),长度不能超过8000字节
        VARCHAR:不固定长度的字符串类型,设置最大数据范围,比如varchar(100),长度不能超过8000字节
        BINARY:固定长度的二进制,长度不能超过8000字节
        VARBINARY:不固定长度的字符串类型,长度不能超过8000字节
        BLOB:大文件操作
        text:大文本数据操作
        enum:限定范围(‘男’,‘女’)
        set:简单理解为数组集合
        
    4.日期与时间类型
        year:年
        date:日期(包含年月日)
        time:时间(包含时分秒)
        datetime:日期时间(包含年月日时分秒)
        TIMESTAMP:时间戳,精度比datetime要高
    5.二进制类型
        bit:1位
        BINARY
        VARBINARY
        BLOB
        TINYBLOB
        MEDIUMBLOB 
        LONGBLOB
        

-- 创建数据表create table 语句
/*
    创建学生表(学生表)
    学号  整形,不允许为空(not null) ,主键(primary key)
    姓名  字符串,最大长度20字符
    年龄  整形 ,必须大于0
    班级  字符串
    性别 字符串
    

*/
-- 删除表格
drop table 学生表;
/*
    字段名称必须唯一,
    字段名称中间最好不要出现空格,如果字段名称包含空格,必须加上`符号
    字段名称要有一定的意义

*/
create table 学生表
(
    学号 int(11) not null primary key,  -- 字段名称为学号,整形,不允许为空(not null),设置为主键(primary key)
    姓名 varchar(20) not null,
    年龄 TINYINT ,   
    班级 varchar(30) ,
    性别 enum('男','女') default '男'
);
-- 用select查询表数据
select * from 学生表;
-- 新增记录(insert语句)
-- 字符串类型的值必须用单引号
insert into 学生表(学号,姓名,年龄,班级,性别) values(1,'张三',20,'高技二班','男');
select * from 学生表;

insert into 学生表(学号,姓名,年龄,班级,性别) values(2,'小丽',16,'高技二班','女');

select * from 学生表;
insert into 学生表(学号,姓名,年龄,班级,性别) values(3,'王老五',-128,'高技二班','男');

insert into 学生表(学号,姓名,年龄,班级,性别) values(5,'李四',-1,'高技二班','男');
-- 允许为空的字段,可以不输入值
insert into 学生表(学号,姓名,年龄,班级,性别) values(4,'王麻子',18,null,'男');

-- 允许为空的字段可以不写在列表中,values中也可以不输入值
insert into 学生表(学号,姓名,年龄,性别) values(4,'王麻子',18,'男');
-- 没有输入性别的值,默认为男
insert into 学生表(学号,姓名,年龄) values(6,'王麻子2',18);
-- -----------------------------------------------------------------------------------

-- 创建班级表
/*
        班级ID 整形 自动递增 非空 主键
        班级名称 字符串 非空
        班主任 字符串

*/
create table 班级表
(
    班级ID int not null auto_increment PRIMARY key,
    班级名称 varchar(30) not null,
    班主任 varchar(20)
);

insert into 班级表(班级名称,班主任) values('高技1班','李红丽');
insert into 班级表(班级名称) values('高技2班');
insert into 班级表(班级名称,班主任) values('软编1班','xxx');
insert into 班级表(班级ID,班级名称,班主任) values(4,'软编2班','xxx');
insert into 班级表(班级ID,班级名称,班主任) values(5,'软编3班','xxx');
insert into 班级表(班级名称,班主任) values('软编4班','xxx');
insert into 班级表(班级ID,班级名称,班主任) values(6,'软编4班','xxx'),(7,'软编5班','xxx'),(8,'软编6班','xxx');

select * from 班级表;
-- 如果学生表存在,则删除
drop table if exists 学生表;

create table 学生表
(
    学号 int(11) not null,  -- 字段名称为学号,整形,不允许为空(not null),
    姓名 varchar(20) not null,
    年龄 TINYINT ,   
    班级ID int not null , -- 班级ID必须引用班级表中班级ID字段的值 
    性别 enum('男','女') default '男',
    身份证号 varchar(18) unique, -- unique唯一
    primary key(学号)   -- 设置为主键(primary key)
);
insert into 学生表(学号,姓名,年龄,班级ID,性别,身份证号) values(1,'张三',18,10,'男','362135198808081188');
-- 更新数据
update 学生表 set 班级ID=2;
select * from 学生表;
-- 学生表与班级表建立外键关联(引用完整性)
alter table 学生表 add constraint fk_student_class foreign key(班级ID) REFERENCES 班级表(班级ID);

/*
    必须在学生表建立外键关系,不能在班级表建立外键关系
    建立外键关系以后,学生表新增学生记录时,班级ID字段的值,必须在班级表中存在,否则会新增失败
    建立外键关系以后,删除班级表的记录时,如果班级ID在学生表中已经使用,则删除失败。
*/


insert into 学生表(学号,姓名,年龄,班级ID,性别,身份证号) values(2,'丽丽',16,5,'女','362135198808081181');
insert into 学生表(学号,姓名,年龄,班级ID,性别,身份证号) values(3,'李小龙',20,1,'男','362135198808081182');

select * from 班级表;
select * from 学生表;
select s.*,b.班级名称,b.班主任 from 学生表 s,班级表 b where s.班级ID=b.班级ID;

-- 删除高技1班
delete from 班级表 where 班级ID=1; -- 报错


delete from 班级表 where 班级ID=6;
-- 课程表
/*
    课程ID 整形 自增 主键
    课程名称 字符串
    学分 tinyint
    
    
*/
create table 课程表
(
    课程ID int(11) auto_increment primary key, -- 1.创建主键
    课程名称 varchar(30) not null,
    学分 TINYINT DEFAULT 0
);
-- 或者
drop table 课程表;

create table 课程表
(
    课程ID int(11) auto_increment ,
    课程名称 varchar(30) not null,
    学分 TINYINT DEFAULT 0,
    primary key(课程ID) -- 2.创建主键
);
-- 或者

create table 课程表
(
    课程ID int(11),
    课程名称 varchar(30) not null,
    学分 TINYINT
);
-- 3.创建主键
alter table 课程表 add constraint pk_courseId primary key(课程ID);
-- 创建默认值
alter table 课程表 change column  学分 学分 tinyint default 0;

select * from 课程表;

insert into 课程表(课程名称,学分) values('HTML',2);
insert into 课程表(课程名称,学分) values('MySQL',4),('java',8);

-- 成绩表
/*
    学号 整形 不允许为空
    课程编号 整形
    考试成绩   DECIMAL(18,2);
    
    主键是组合键(学号+课程编号)

*/
create table 成绩表
(
    学号 int not null,
    课程编号 int not null,
    考试成绩 decimal(18,2) default 0
);
-- 创建主键
alter table 成绩表 add constraint pk_score PRIMARY KEY(学号,课程编号);
-- 创建与学生表的外键关联
alter table 成绩表 add CONSTRAINT fk_studid FOREIGN KEY(学号) REFERENCES 学生表(学号);
-- 创建与课程表的外键关联
alter table 成绩表 add CONSTRAINT fk_courseid FOREIGN KEY(课程编号) REFERENCES 课程表(课程ID);
select * from 成绩表;
select * from 学生表;
select * from 课程表;
insert into 成绩表(学号,课程编号,考试成绩) values(2,2,99);
/*
    别名:在表名的后面加一个比较简单的名称,代表表名
    多表关联时,字段列表中包含的字段,在多个表中存在同名的情况,则必须在字段名称前面加上别名,否则别名可以省略
*/
select s.学号,姓名,性别,身份证号,课程名称,学分,考试成绩 from 成绩表 c,学生表 s,课程表 k where c.学号=s.学号 and c.课程编号=k.课程ID;

-- 不用别名
select 学生表.学号,姓名,性别,身份证号,课程名称,学分,考试成绩 from 成绩表,学生表,课程表 where 成绩表.学号=学生表.学号 and 成绩表.课程编号=课程表.课程ID;

本人从事软件项目开发20多年,2005年开始从事Java工程师系列课程的教学工作,录制50多门精品视频课程,包含java基础,jspweb开发,SSH,SSM,SpringBoot,SpringCloud,人工智能,在线支付等众多商业项目,每门课程都包含有项目实战,上课PPT,及完整的源代码下载,有兴趣的朋友可以看看我的在线课堂

讲师课堂链接:https://edu.csdn.net/lecturer/893

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CSDN专家-赖老师(软件之家)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值