MySQL基础②(数据类型、DDL、DML)
【摘要】
文章目录
前置:MySQL数据类型DDL用DDL操作数据库MySQL中自带的四个数据库用DDL操作表查询表创建表删除表修改表
DML添加数据修改数据删除数据
前置:MySQL数...
前置: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
- 3
- 4
- 5
例如:
需求:设计一张学生表,请注重数据类型、长度的合理性
1. 编号
2. 姓名,姓名最长不超过10个汉字
3. 性别,因为取值只有两种可能,因此最多一个汉字
4. 生日,取值为年月日
5. 入学成绩,小数点后保留两位
6. 邮件地址,最大长度不超过 64
7. 家庭联系电话,不一定是手机号码,可能会出现 - 等字符
8. 学生状态(用数字表示,正常、休学、毕业...)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
-- SHOW TABLES;
CREATE TABLE student_form(
编号 INT,
姓名 CHAR(10),
性别 CHAR(1),
生日 DATE,
入学成绩 DOUBLE(5,2),
邮件地址 VARCHAR(64),
家庭联系电话 VARCHAR(15),
学生状态 TINYINT
);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
删除表
修改表
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;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
结果:
修改数据
注意:修改语句中不加条件,则将所有数据都修改
例如:
-- 将张三的性别改为女
update stu set sex = '女' where name = '张三';
-- 将张三的生日改为 1999-12-12 分数改为99.99
update stu set birthday = '1999-12-12', score = 99.99 where name = '张三';
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
删除数据
注意:删除语句中如果不加条件则所有语句都会被删除。
例如:
-- 删除张三记录
delete from stu where name = '张三';
- 1
- 2
- 3
这样就删除掉了张三那一行
文章来源: blog.csdn.net,作者:十八岁讨厌编程,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/zyb18507175502/article/details/124379386
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)