7.Mysql的数据管理

1.外键

创建方式1、在新建表的时候就进行创建

#年级表
create table if not EXISTS `grade`(
	`gid` int not null auto_increment COMMENT'年级id',
	`gname` VARCHAR(20) not NULL COMMENT'年级名称',
	PRIMARY KEY(`gid`)
)ENGINE = INNODB DEFAULT charset=utf8;
#用户表
create table if not EXISTS `user`(
	#设置字段名,格式一般为:`字段名`	字段类型	是否允许为空	....	
	`id` int(4)	not null AUTO_INCREMENT COMMENT '学号',
	`gid` int  not NULL COMMENT'学生的年级',
	`name` VARCHAR(30) not null DEFAULT'匿名' COMMENT'姓名',
	`password` varchar(20) not null DEFAULT'123456' COMMENT'密码',
	`sex` VARCHAR(2) not null DEFAULT'女' COMMENT'性别',
	`birthday` Datetime DEFAULT NULL COMMENT'出生日期',
	`address` VARCHAR(100) DEFAULT NULL COMMENT'家庭住址',
	`email` VARCHAR(50)	DEFAULT NULL COMMENT '邮箱',
	#设置主键,一般一个表只有一个主键
	PRIMARY KEY(`id`),
	#定义外键key
	KEY `FK_gid`(`gid`),
	#给这个表的外键添加约束,引用grade表的gid
	CONSTRAINT `FK_gid` FOREIGN KEY(`gid`) REFERENCES `grade`(`gid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;

创建方式2、新建表后,再对表结构进行修改

#年级表
create table if not EXISTS `grade`(
	`gid` int not null auto_increment COMMENT'年级id',
	`gname` VARCHAR(20) not NULL COMMENT'年级名称',
	PRIMARY KEY(`gid`)
)ENGINE = INNODB DEFAULT charset=utf8;
#用户表
create table if not EXISTS `user`(
	#设置字段名,格式一般为:`字段名`	字段类型	是否允许为空	....	
	`id` int(4)	not null AUTO_INCREMENT COMMENT '学号',
	`gid` int  not NULL COMMENT'学生的年级',
	`name` VARCHAR(30) not null DEFAULT'匿名' COMMENT'姓名',
	`password` varchar(20) not null DEFAULT'123456' COMMENT'密码',
	`sex` VARCHAR(2) not null DEFAULT'女' COMMENT'性别',
	`birthday` Datetime DEFAULT NULL COMMENT'出生日期',
	`address` VARCHAR(100) DEFAULT NULL COMMENT'家庭住址',
	`email` VARCHAR(50)	DEFAULT NULL COMMENT '邮箱',
	#设置主键,一般一个表只有一个主键
	PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;

#对user表添加外键约束
alter table `user` 
add constraint `FK_gid` 
foreign key(`gid`) 
references `grade`(`gid`);

#基本结构
alter table `要添加外键的表的表名`
add	constraint `约束名` 
foreign key(`要作为外键的字段名`) 
references `要引用的表的表名` (`被引用表的字段名`)

以上操作都是物理外键,即数据库级别的外键,我们不建议使用(避免数据库过多造成困扰,例如我们删除表的时候,如果一张表被另一张表引用为外键,则会造成被引用表无法删除的问题,必须要先删除引用表,才能删除被引用表)

最佳实践:

  • 我们希望数据库就是单纯的表,只用来存储数据,只有行(数据)和列 (字段)
  • 如果想使用多张表的数据,要用到外键,我们就使用程序级别的外键去实现。

2.DML语言(精通)

DML语言:数据库操作语言

  • insert:

插入一行数据:
insert into `表名` [(字段名1,字段名2,字段名3,…)] values (值1,值2,值3,…)
插入多行数据:

insert into `表名` [(字段名n)]
values(第一个值n),(第二个值n),>(第三个值n),…

- 注意点:
	- []内的字段名可以不写,但是不写的话,mysql会自动将表的每个字段名和后面每个值去一一匹配,会出现值对应不上的问题,写了的话就是指定匹配,最好还是加上;
	- 如果表中主键有自动增长,在添加的时候我们就不需要对这个字段赋值;
	- 如果字段的属性不为整型,需要加双引号括起来;
  • update:

修改一条数据:
update `表名` set `字段名1` = “值1”, `字段名2` = “值2”,…where `字段名n` = “值n”
修改全部数据(强烈不建议使用)

update `表名` set `字段名1` = “值1”, `字段名2` = “值2”,…

多个设置的属性之间,使用英文逗号隔开。

扩展:where子句,运算符会返回一个布尔值

操作符含义示例结果
=等于5=6false
<>或 !=不等于5<>6true
<小于5<6true
>大于5>6false
<=小于等于5<=6true
>=大于等于5>=6false
between … and …在某个区间[5,6]在5和6之间的所有,包括5和6
and并列&&(和),可以多个拼接,无上限
or或 ||,可以多个拼接,无上限
  • delete:

删除数据,根据某种条件删除:
delete from `表名` where 条件
删除表中全部数据(避免使用):
delete from `表名`

我们不要使用delete from `表名`这种方式删除表中所有数据,对于清空数据库中的所有数据,可以使用truncate命令

  • 清空数据库表
truncate `表名`

使用 truncate `表名` 语句,表的自增列会重置,计数归零,但是 **delete from `表名`**不会重置自增列,而且使用truncate不会影响事务,这也是二者的区别。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值