MySQL基础②(数据类型、DDL、DML)

导读:本篇文章讲解 MySQL基础②(数据类型、DDL、DML),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

也许你感觉自己的努力总是徒劳无功,但不必怀疑,你每天都离顶点更进一步。今天的你离顶点还遥遥无期。但你通过今天的努力,积蓄了明天勇攀高峰的力量。加油!

前置:MySQL数据类型

MySQL支持多种类型,可以分为三类:

  • 数值
  • 日期
  • 字符串

在这里插入图片描述

注意:
DECIMAL是通过字符串的 形式来表示这种小数型,从而提高小数表达的精度。
DATA是年 月 日
TIME是时 分 秒
YEAR是年份
DATETIME是年 月 日 时 分 秒
TIMESTAMP(时间戳)也是年 月 日 时 分 秒。他有一个特殊点:如果我们给某一个字段设置类型为TIMESTAMP而不给它赋值的话,那么MySQL会把系统默认的时间给到字段对应的值,但一般情况下不推荐使用TIMESTAMP,因为它表示的时间最大直到2038年。我们一般多使用DATATIME.

我们一般不会把电影这种大文件放到数据库中存储,因为这是非常消耗数据库性能的。如果我们要存储这种大的文件数据,会有专门的文件服务器。而在数据库里面我们只需要用varchar类型来保存文件的访问路径就行了。

几个使用的注意点:

  • 我们在使用DOUBLE时,一般要引用两个参数。DOUBLE(分数值的总长度,小数点后保留的位数)
  • CHAR和VARCHAR我们在使用时都要指定最大的字符存储数。CHAR()或VARCHAR()
    • 他们的不同点在于:(例如我们存储’张三‘)
    • CHAR是定长字符串,张三虽然是两个字符,但它依旧会占10个字符空间(后面的8个其实用空格补齐了)
    • VARCHAR是变长字符串,它在存储数据的时候会先去计算原始数据的长度,根据长度来存储这个数据。
    • 因此我们可以得到一个结论:CHAR的存储性能要高一点,但会浪费空间;VARCHAR的存储性能要低一点,但节约空间
    • 使用场景:
      • 如果确定数据的字符个数,则用CHAR。例如存储性别
      • 不确定数据的字符个数,用VARCHAR。例如用户名

DDL

用DDL操作数据库

总纲
在这里插入图片描述

MySQL中自带的四个数据库

  • information_schema:里面记录了MySQL里面有哪些库、哪些表。且其存在特殊性,他存储数据是一种特殊的表,叫做视图,而视图是一种逻辑表,所有不存在物理的文件(它在data目录里面不存在对应的文件夹,其他三个都有)
  • mysql:存储了MySQL数据库中最为核心的信息,比如说权限、安全。
  • performance_schema:里面存储了MySQL性能相关的信息
  • sys:存储了系统相关的信息

对于MySQL自带的这四个数据库我们一般不会直接去操作他们。

用DDL操作表

查询表

在这里插入图片描述

创建表

语法:
在这里插入图片描述

注意:最后一行末尾不能加逗号

例如:我们现在创建一个表
在这里插入图片描述
那么我们的sql语句:

CREAT TABLE tb_user(
	id int;
	username varchar(20);
	password varchar(32)
);

例如:

需求:设计一张学生表,请注重数据类型、长度的合理性
1. 编号
2. 姓名,姓名最长不超过10个汉字
3. 性别,因为取值只有两种可能,因此最多一个汉字
4. 生日,取值为年月日
5. 入学成绩,小数点后保留两位
6. 邮件地址,最大长度不超过 64
7. 家庭联系电话,不一定是手机号码,可能会出现 - 等字符
8. 学生状态(用数字表示,正常、休学、毕业...
-- SHOW TABLES;
CREATE TABLE student_form(
	编号 INT,
	姓名 CHAR(10),
	性别 CHAR(1),
	生日 DATE,
	入学成绩 DOUBLE(5,2),
	邮件地址 VARCHAR(64),
	家庭联系电话 VARCHAR(15),
	学生状态 TINYINT
);

删除表

在这里插入图片描述

修改表

在这里插入图片描述

DML

添加数据

在这里插入图片描述
例如:

-- 给指定列添加数据 INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…);
INSERT INTO stu (id, NAME)
VALUES
	(1, '张三');

-- 给所有列添加数据,列名的列表可以省略的
INSERT INTO stu (
	id, -- 编号
	NAME,-- 姓名
	sex,
	birthday,
	score,
	email,
	tel,
	STATUS
)
VALUES
	(
		2,
		'李四',
		'男',
		'1999-11-11',
		88.88,
		'lisi@itcast.cn',
		'13888888888',
		1
	);

INSERT INTO stu
VALUES
	(
		2,
		'李四',
		'男',
		'1999-11-11',
		88.88,
		'lisi@itcast.cn',
		'13888888888',
		1
	);


INSERT INTO stu
VALUES
	(
		2,
		'李四',
		'男',
		'1999-11-11',
		88.88,
		'lisi@itcast.cn',
		'13888888888',
		1
	),(
		2,
		'李四',
		'男',
		'1999-11-11',
		88.88,
		'lisi@itcast.cn',
		'13888888888',
		1
	),(
		2,
		'李四',
		'男',
		'1999-11-11',
		88.88,
		'lisi@itcast.cn',
		'13888888888',
		1
	);

select * from stu;

结果:
在这里插入图片描述

修改数据

在这里插入图片描述

注意:修改语句中不加条件,则将所有数据都修改

例如:

-- 将张三的性别改为女

update stu set sex = '女' where name = '张三';

-- 将张三的生日改为 1999-12-12 分数改为99.99

update stu set birthday = '1999-12-12', score = 99.99 where name = '张三';

删除数据

在这里插入图片描述

注意:删除语句中如果不加条件则所有语句都会被删除。

例如:

-- 删除张三记录

delete from stu where name = '张三';

这样就删除掉了张三那一行

附:数据类型表

整型

类型名称 取值范围 大小
TINYINT -128〜127 1个字节
SMALLINT -32768〜32767 2个宇节
MEDIUMINT -8388608〜8388607 3个字节
INT (INTEGHR) -2147483648〜2147483647 4个字节
BIGINT -9223372036854775808〜9223372036854775807 8个字节

无符号在数据类型后加 unsigned 关键字。

浮点型

类型名称 说明 存储需求
FLOAT 单精度浮点数 4 个字节
DOUBLE 双精度浮点数 8 个字节
DECIMAL (M, D),DEC 压缩的“严格”定点数 M+2 个字节

日期和时间

类型名称 日期格式 日期范围 存储需求
YEAR YYYY 1901 ~ 2155 1 个字节
TIME HH:MM:SS -838:59:59 ~ 838:59:59 3 个字节
DATE YYYY-MM-DD 1000-01-01 ~ 9999-12-3 3 个字节
DATETIME YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 8 个字节
TIMESTAMP YYYY-MM-DD HH:MM:SS 1980-01-01 00:00:01 UTC ~ 2040-01-19 03:14:07 UTC 4 个字节

字符串

类型名称 说明 存储需求
CHAR(M) 固定长度非二进制字符串 M 字节,1<=M<=255
VARCHAR(M) 变长非二进制字符串 L+1字节,在此,L< = M和 1<=M<=255
TINYTEXT 非常小的非二进制字符串 L+1字节,在此,L<2^8
TEXT 小的非二进制字符串 L+2字节,在此,L<2^16
MEDIUMTEXT 中等大小的非二进制字符串 L+3字节,在此,L<2^24
LONGTEXT 大的非二进制字符串 L+4字节,在此,L<2^32
ENUM 枚举类型,只能有一个枚举字符串值 1或2个字节,取决于枚举值的数目 (最大值为65535)
SET 一个设置,字符串对象可以有零个或 多个SET成员 1、2、3、4或8个字节,取决于集合 成员的数量(最多64个成员)

二进制类型

类型名称 说明 存储需求
BIT(M) 位字段类型 大约 (M+7)/8 字节
BINARY(M) 固定长度二进制字符串 M 字节
VARBINARY (M) 可变长度二进制字符串 M+1 字节
TINYBLOB (M) 非常小的BLOB L+1 字节,在此,L<2^8
BLOB (M) 小 BLOB L+2 字节,在此,L<2^16
MEDIUMBLOB (M) 中等大小的BLOB L+3 字节,在此,L<2^24
LONGBLOB (M) 非常大的BLOB L+4 字节,在此,L<2^32

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/122179.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!