22.MySQL--数据类型及约束及DML和DQL

MySQL–Day02

第一节:MySQL中数据类型及约束

本节目标

  • 掌握MySQL中数据类型及应用场景
  • 掌握MySQL中高频数据类型的定义方式
  • 掌握MySQL中常见约束的含义及应用场景
  • 理解主键的含义及定义方式
  • 掌握数据库表的定义语法
  • 掌握对表结构修改语句的使用
1.1、MySQL中的数据类型

MySQL数据类型分为三类:数值类型,字符串,时间类型

1.整数类型

作用:用于存储整数

关键字 范围 空间(字节)
tinyint–极小整数 无符号:0-255 有符号:-128-127 1
smallint–小整数 2
mediumint–中型整数 3
int-整数 4
BIGINT-大整型 8

注意:具体在实际开发中用哪一个需要根据你存储的数据来选择,我们使用最多的是INT。

怎么定义:如:num int(4)

这个数字的含义是什么?表示该数字的宽度,如果你填的数据宽度小于指定的宽度,同时又指定了填充0,那么系统就会默认直接补充0,以满足指定的宽度。

2.浮点类型

作用:用于存储小数

注意:存储时也是不精确的,如果需要精确的存储数据decimal(跟Java中BigDecimal)

名称 范围 空间(字节)
float 表示精度范围7 4
double 15 8
decimal 表示精确的数据

怎么定义:

字段名 浮点类型名称(m,n)

m:该数据最多能存储几个位

n:表示该数据的小数点后面的位数

如:num float(5,2)—这个num最多能存5个数字 5.1 5.1111111(存不下)

​ 这个num最多能有2个小数

3.时间类型

作用:用于存储和时间相关的数据,如:日期,时间,时间戳

名称 范围 存储的格式
date 1000-01-01–9999-12-31 YYYY-MM–DD
time HH:MM:SS
datetime YYYY-MM-DD HH:MM:SS
timestamp 从1970-01-01–当前时间的毫秒数 2037 YYYY-MM-DD HH:MM:SS(具体的时间点)

注意:实际开发中,存储时间还可以通过存储数值(1970-1-1–当前时间的毫秒数)

4.文本类型

作用:存储文本,字符串,(长字符串)

名称 字节数 说明
char 0-256字节 定长的字符串
varchar 0-65535 可变长的字符串
text 用于存文本
longtext 用一个存储大型的文本

说明:char和varchar的区别:

char是定长字符串,一旦某个列定义为char,如果你存储的数据小于256,那系统会自动的添加占位符,占位到256。

varchar是可变长度的数据类型,系统会根据你存储的数据动态的分配空间,由于系统每次存储数据的时候会计算长度,导致效率比char稍微低一些。

5.其他数据类型

blob

存储二进制类型–存储图片,音频,视频…

约束

什么是约束:对该列的数据做限制,目的是为了保证数据的完整性和有效性

如:数据库中存储身份证号–不允许重复

1、非空约束 NOT NULL

作用:该列数据不允许为null,该列数据必须有值

2、唯一约束 UNIQUE

作用:该列数据不允许重复出现,但是可以为null

3、主键约束 PRIMARY KEY

作用:主键的唯一标识某一行数据的 如:中国人信息–身份证号 某个学校的学生信息–学号 某个公司的员工–工号

注意:1.每一个表没有特殊要求必须有一个主键

​ 2.主键不一定一个字段,可以是多个字段联合主键

4、自增约束 AUTO_INCREMENT

作用:每次添加数据的时候,可以不用手动给值,他会上一行的基础上加1。往往用于主键。

5、无符号 unsigned

作用:表示该列的数据只能存储整数

6、注释 COMMENT
7、默认值 DEFAULT

作用:没有手工给值,则系统会自动添加默认值

语法:DEFAULT ‘默认值’ ,DEFAULT NULL

注意:约束可以混用

8、建数据表

CREATE TABLE table_name IF NOT EXITES(

​ //指定每一列数据

​ 列名 数据类型 [约束1] [约束2]… COMMENT ‘注释内容’,

​ 列名 数据类型 [约束1] [约束2]… COMMENT ‘注释内容’ ,

​ 列名 数据类型 [约束1] [约束2]… COMMENT ‘注释内容’

) DFAULT CHARSET=UTF-8 – 指定该表的编码

9、更新表结构

1、更改表名

ALTER TABLE 表名 RENAME AS 新名字

需求:将student表名更改为stu

ALTER TABLE student RENAME AS stu;

2.添加字段

ALTER TABLE 表名 ADD 新字段名 数据类型 [约束]

需求:将student表中新增一个age字段表示年龄

ALTER TABLE stu ADD age INT;

3.更改列的列名

ALTER TABLE 表名 CHANGE 旧字段 新字段 数据类型 约束

注意:将原来的旧字段删除然后添加了一个新的字段

需求:将sex字段更改为gender字段

ALTER TABLE stu CHANGE sex gender varchar(2);

4.更改字段 数据类型

ALTER TABLE 表名 MODIFY 字段名 数据类型 约束

需求:将gender字段更改为char类型

ALTER TABLE stu MODIFY gender CHAR(2);

5.删除字段

ALTER TALE 表名 DROP 字段名

需求:删除生日字段

ALTER TABLE stu DROP brith;

6.删除数据库

DROP TABLE [IF EXISTS] 表名

DROP TABLE  IF EXISTS stu;

7.查看某个数据库下的所有的表

SHOW TABLES;

8.查看表结构的详细信息

DESC 表名

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7uZ0aPpc-1628326291709)(upload/image-20210803120704419.png)]

本节练习:

(1)创建一张学生表

需要记录学号(id),用户名(name),密码(pass),性别(sex),生日(birth),地址(adress),邮箱(email)

其中学号做为主键且自增,用户名不能为空,默认为root,密码不能为空,默认为123456,性别

不能为空,默认为男 ,生日,地址和邮箱默认为null

CREATE TABLE  IF NOT EXISTS student(
    id INT AUTO_INCREMENT COMMENT '学号',
    name VARCHAR(10) NOT NULL  DEFAULT 'root' COMMENT '用户给名',
    pass VARCHAR(10) NOT NULL  DEFAULT '123456' COMMENT '密码',
    sex VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
    brith DATE DEFAULT NULL  COMMENT '生日',
    email varchar(15) DEFAULT NULL COMMENT '邮箱',
    PRIMARY KEY(id)
);

(2)将sex字段改为gender并删除生日字段

(3)新增一字段age表示年龄

第二节:DML 数据操作语言

本节目标

  • 掌握想数据库表中添加单个数据及批量添加数据
  • 掌握根据条件修改 数据
  • 掌握根据条件删除制定数据
  • 掌握清空数据表的2中方式并理解二者区别
2.1、数据的添加

INSERT INTO 表名 ([字段名1],[字段名2],…)VALUES ([值1],[值2]…)

-- 数据库中添加一个学生 用户名为:tom 密码:1q2w3e
INSERT INTO student (name,pass) VALUES ('TOM','1q2w3e');

INSERT INTO 表名 VALUES(值1,值2…)

注意:如果不想手动设置,则应该通过DEFALUT进行占位

INSERT INTO student VALUES(DEFAULT,'张三','123456',DEFAULT,DEFAULT,'321321@qq.com');

批量添加:

INSERT INTO 表名 (字段1,字段2…)VALUES(值1,值2…),(值1,值2…),(值1,值2…);

INSERT INTO student VALUES
(DEFAULT,'李四','123456',DEFAULT,DEFAULT,'lisi@qq.com'),
(DEFAULT,'王五','123456',DEFAULT,DEFAULT,'wangwu@qq.com'),
(DEFAULT,'赵六','123456',DEFAULT,DEFAULT,'zhaoliu@qq.com');

注意事项:

1.每个字段或每个值之间需要用逗号进行分割

2.如果需要插入多条数据则只需要写多组,且每一组之间通过逗号进行分隔

3.我们可以不用写字段名,但是我们需要保障给的值应该个字段一一对应,即使不想手动设置值需要用DEFALUT进行占位。

2.2、修改数据

UPDATE 表名 SET 字段名1=新值1,字段名2=新值2 [WHERE 条件]

UPDATE student SET sex = '女';-- 会将数据表中的所有的该字段全部修改-不想看到的

条件的写法:

符号 写法 含义
> a>b 如果a比b大则结果为true
>=
<
<=
=
!= 不等于
between and between 3 and 5 在3到5的闭合区间
and 类似于&&
OR 类似于||

需求:将李四的姓名改为女

UPDATE student SET sex = '男' WHERE id=3;

分析:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hjPV3bjS-1628326291711)(upload/image-20210803145259218.png)]

需求:将ID为1-3的性别改为中性

UPDATE student SET sex = '中' WHERE id BETWEEN 1 AND 3;
</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值