用Mysql在Navicat做题遇到的判断年月日的问题

虽然前两天刚刚总结完mysql的语法,但是还是有一些细节的问题没有很清楚,今天做题遇到的问题记录一下

1、数据类型datetime(读取年月)

-- 查询my_table中在六月出生的人的信息
select * from my_table
WHERE MONTH(birthday)='6' 
--查询my_table中在2000年出生的人的信息 
select * from my_table
WHERE YEAR(birthday)='2000' 

2、关于主键(码)、外键(码)、索引

主码(primary key)、外码(foreign key)

primary key:定义在一张表中某一列或几列,表示唯一标识符,被primary key标记的列,不能为空,不能重复
foreign key:给表中和主码列相同的列定义外码,将两张表的关系定义为主从表关系,主表里面没有的,从表里面也不能有,然后两表之间可以进行级联操作

级联操作:外码参照主码操作,当删除、修改某个主表里面的记录时,从表里面的那个对应的记录也会自动删除、修改。

-- 创建时定义
create table my_table_1(
	col_1 int(4) primary key,
)
-- my_table_1的主码作为my_table_2的外码
-- 而col_2定义为my_table_2的主码,作为my_table_3的外码
create table my_table_2(
	col_1 int(4),
	col_2 varchar(10) primary key,
	foreign key(col_1) references my_table_2(col_1)
)
create table my_table_3(
	col_1 int(4),
	col_2 varchar(10),
	col_3 varchar(20),
	foreign key(col_1) references my_table_1(col_1)
	foreign key(col_2) references my_table_2(col_2)
)

索引(index)

索引主要是为了优化数据库,加快检索效率的,目前做作业和简单的数据库增删查改还没到优化数据库的程度,所以暂时没有深入研究索引,这里有篇文章写的比较好懂:索引是什么,和主码的关系

猜你喜欢

转载自blog.csdn.net/weixin_43133548/article/details/109124486