mysql.exe -h localhost -P 3306 -u root -p
use mydb; —— 进入数据库
查看:show index from 表名\G
desc:查看表结构
select * from 表名:查询所有数据
时间日期型
use mydb;
-- 创建时间日期表
create table my_date(
d1 datetime,
d2 date,
d3 time,
d4 timestamp,
d5 year
)charset utf8;
-- 插入数据
insert into my_date values('2020-2-12 10:30:10','2020-2-12','10:30:10',
'2020-2-12 10:30:18',2020);
-- 时间使用负数
insert into my_date values
('2020-2-12 10:30:10','2020-2-12','-10:30:10',
'2020-2-12 10:30:10',2020);
insert into my_date values
('2020-2-12 10:30:10','2020-2-12','-210:30:10',
'2020-2-12 10:30:10',2020);
insert into my_date values
('2020-2-12 10:30:10','2020-2-12','-2 10:30:10',
'2020-2-12 10:30:10',2020);-- -2表示过去两天,就是48个小时
-- year可以使用两位或者四位
insert into my_date values
('2020-2-12 10:30:10','2020-2-12','10:30:10', '2020-2-12 10:30:10',69);
insert into my_date values
('2020-2-12 10:30:10','2020-2-12','10:30:10', '2020-2-12 10:30:10',70);
-- timestamp:修改记录
update my_date set d1='2020-02-12 20:20:20' where d5=2069;
-- 使用函数获取时间戳
select unix_timestamp();
字符串类型
定长与变长的区别:
定长:数据固定长度,磁盘空间比较浪费但效率高(身份证、电话号码、手机、邮箱)
变长:磁盘空间比较节约但效率低(名字、地址)
文本字符串:
如果数据量非常大,通常超过255个字符就会使用文本字符串
文本字符串根据存储的数据的格式分为:
text:存储文字、存储二进制数据的文件路径
blob:存储二进制数据(但通常不用)
二进制数据(音频、视频、图片)可以存数据库,但是通常不用它存,而是直接存在磁盘或硬盘上(数据库只保存一下它的路径,然后直接通过路径在磁盘或硬盘上找)
枚举字符串(enum):
事先把所有可能出现的结果都设计好,实际上存储的数据必须是规定好的数据中的一个
枚举的使用方式:
enum(可能出现的元素列表);
例如:enum('男','女','不男不女','妖怪','保密');
使用:存储数据,只能存储上面定义好的数据
列属性:
真正约束字段的是数据类型,但是这种约束很单一,需要有一些额外的约束,来更加保证数据的合法性,这就需要列属性
列属性包括:
NULL/NOT NULL(是/否可以为空)
default(默认值)
Primary key (主键)
unique key(唯一键)
auto_increment(自增长)
comment(描述)
空属性:
两个值:NULL(默认的)、NOT NULL(不为空)
-- 创建班级表
create table my_class(
name varchar(20) not null,
room varchar(20) null -- 代表允许为空,不写,默认就是允许为空
)charset utf8;
列描述:
comment,描述,没有实际含义,是专门用来描述字段,会根据表创建语句保存,用来给程序员(数据库管理员)来进行了解的
-- 创建表
create table my_teacher(
name varchar(20) not null comment '姓名',
money decimal(10,2) not null comment '工资'
)charset utf8;
默认值:
default,某一种数据会经常性地出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性地使用默认值
-- 默认值
create table my_default(
name varchar(20) not null, -- 默认值null
age tinyint unsigned default 0, -- 默认值0
gender enum('男','女','保密') default '男' -- 默认值男
)charset utf8;
-- 插入数据
insert into my_default (name) values('阿飞');
insert into my_default values('男闺蜜',18,default);