06_MySQL笔记-数据类型-字段属性-存储引擎-字符集-创建新表-数据库建模


个人博客
https://blog.csdn.net/cPen_web


数据类型

数据类型 - 日期和时间类型

https://www.runoob.com/mysql/mysql-data-types.html

年		year
月		month
日		day
小时		hour
分钟		minute
秒		second

timestamp --> 时间戳:距离1970-1-1 0:0:0为起点 有多少秒  格林尼治时间
1970-01-01 00:00:00/2038	到2038年存放不了;4个字节
root@sanchuang mysql>create table t7(name varchar(20),birthday date,check_sc timestamp);
root@sanchuang mysql>desc t7;
+----------+-------------+------+-----+-------------------+-----------------------------+
| Field    | Type        | Null | Key | Default           | Extra                       |
+----------+-------------+------+-----+-------------------+-----------------------------+
| name     | varchar(20) | YES  |     | NULL              |                             |
| birthday | date        | YES  |     | NULL              |                             |
| check_sc | timestamp   | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+----------+-------------+------+-----+-------------------+-----------------------------+
3 rows in set (0.00 sec)

root@sanchuang mysql>insert into t7(name,birthday,check_sc) values('cali','1984-10-01',now());
root@sanchuang mysql>select * from t7;
+------+------------+---------------------+
| name | birthday   | check_sc            |
+------+------------+---------------------+
| cali | 1984-10-01 | 2021-02-15 14:40:52 |
+------+------------+---------------------+
1 row in set (0.00 sec)
root@sanchuang mysql>insert into t7(name,birthday,check_sc) values('rose','1984-10-01','2038-1-1 12:22:22');
#示例:now()函数  获取当前时间
root@(none) mysql>select now();

字符串类型

https://www.runoob.com/mysql/mysql-data-types.html

字符串
	char
	varchar
	text
	blob		二进制的文本
		tinyblob
		MEDIUMBLOB
		LONGBLOB
		blob
	enum		枚举
	set			集合
	binary和varbinary
一个英文字母占1个字节
1个汉字,如果是utf8编码,占3个字节
root@sanchuang mysql>select name,length(name),char_length(name) from t8;
+-----------+--------------+-------------------+
| name      | length(name) | char_length(name) |
+-----------+--------------+-------------------+
| feng      |            4 |                 4 |
| 冯德勇    |            9 |                 3 |
+-----------+--------------+-------------------+
2 rows in set (0.00 sec)

length(name)统计字符串的存储的字节数
char_length(name)统计的是字符的个数

char和varchar有什么区别?

存储方式
char	固定长度的字符串类型 character 字符 --> 在存储的时候,不够固定长度,就在前面填充空格,达到固定长度
	'feng' 但是我的表结构里的长度是30,在存储feng字符串的时候,会在前面填充26个空格来达到30个字符的长度

varchar	可变长的字符串类型  variable character 
	'feng' 我的表结构里的长度是30,但是只是存储feng这4个字符,不填充空格

	char比varchar在长度没有达到规定的时候,更加消除磁盘空间些。如果达到了规定长度,varchar要比char多一个字节的存储空间

虽然VARCHAR数据类型可以节省存储空间,提高数据处理的效率。但是其可变长度带来的一些负面效应,有时候会抵消其带来的优势。

char存储定长数据很方便,char字段上的索引效率很高。


长度方面
	char 最大长度255  varchar 最大长度是65,535


检索的方式不同
	一个长度CHAR列被固定在创建表声明的长度。长度可以是0到255之间的任何值。CHAR 存储值时,将在它们的右边填充空格以达到指定的长度。当CHAR被检索到的值,拖尾的空格被删除
Value CHAR(4) Storage Required VARCHAR(4) Storage Required
‘’ ’    ’ 4 bytes ‘’ 1 byte
‘ab’ 'ab  ’ 4 bytes ‘ab’ 3 bytes
‘abcd’ ‘abcd’ 4 bytes ‘abcd’ 5 bytes
‘abcdefgh’ ‘abcd’ 4 bytes ‘abcd’ 5 bytes

枚举类型 ENUM

CREATE TABLE shirts ( 
name VARCHAR(40), 
size ENUM('x-small', 'small', 'medium', 'large', 'x-large') 
);

INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), ('t-shirt','medium'), ('polo shirt','small');

SET类型

集合类型:插入数据的时候,必须是集合里有的内容,如果没有,就会报错,不能插入,而且插入重复的数据,只显示一个
root@sanchuang mysql>CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));

root@sanchuang mysql>INSERT INTO myset (col) VALUES
    -> ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');

root@sanchuang mysql>select * from myset;
+------+
| col  |
+------+
| a,d  |
| a,d  |
| a,d  |
| a,d  |
| a,d  |
+------+
5 rows in set (0.00 sec)

如何知道一张表的结构?

1 .desc t1
2 .show create table t1

创建表的语法

#示例:if not exists
如果要创建的表已经存在,强制不显示错误消息

root@sanchuang mysql>create table if not exists sanchuang.chenpeng(id int primary key,name varchar(10) not null);
root@sanchuang mysql>desc chenpeng;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(10) | NO   |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
#示例:查看警告信息
root@sanchuang mysql>show warnings;
show命令汇总:
1 .show databases;
2 .show tables;
3 .show variables;
4 .show processlist;		#注&#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

mycpen

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

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

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

打赏作者

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

抵扣说明:

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

余额充值