#指定数据库 表在数据库中创建用来存储数据
USE kj13test;
#创建表
/**
狗信息
dogId dogName dogType dogAge
1001 小白 二哈 2
1002 旺财 xx 3
`撇号:避免命名和关键词冲突
*/
DROP TABLE IF EXISTS `dogInfo`;
CREATE TABLE IF NOT EXISTS `dogInfo` (
dogId INT NOT NULL AUTO_INCREMENT, #not null 必须要有值,非空
dogName VARCHAR(50) COMMENT '狗狗昵称',
dogType VARCHAR(50) DEFAULT '秋田犬' COMMENT'狗狗品种',
dogAge INT ZEROFILL COMMENT '狗狗年龄',
PRIMARY KEY(dogId)
)ENGINE INNODB CHARSET utf8 COLLATE utf8_bin;#引擎 编码 校验
DESC dogInfo;#展示表结构
SHOW CREATE TABLE dogInfo;#显示创建表语句
ALTER TABLE `kj13test`.`student` ADD CONSTRAINT `fk_student_grade` FOREIGN KEY(`gradeId`) REFERENCES `kj13test`.`grade`(`gradeId`);
#删除外键
/*
1.确保表里没有数据
2.先删除外键
3.外键会产生一个索引,再删除索引
*/
#添加数据
/*
1.添加学生记录,能否添加成功?
不能添加,因为学生表依赖年级表中的主键id,应该先添加年级表中的主键
操作:添加三个年级 1--s1 2--s2 3--y2
添加学生信息
*/
#插入语句
/*
1.插入的列的选择,
自增列可以选择性的插入
非空列必须要插入
2.插入列的值 数量一致,类型一致 varchar表示字符类型,实际值需要用单引号包起来
*/
INSERT INTO `student` (`stuName`,`stuAge`,`stuScore`,`gradeId`)
VALUES
('zhaoliu',14,90,1),
('wangwu',14,95,1);
('zhangsan',13,94,1);
#查看表中的数据
SELECT * FROM student;
#非空字段可以不用写出来添加
INSERT INTO `student` (`stuName`,`stuAge`,`stuScore`,`gradeId`,`email`,`address`)
VALUES
('田七',13,94,1,'s','s');
#修改操作
/*
为什么添加where?如果不加条件从句,那么会修改所有的行
*/
UPDATE `kj13test`.`student` SET `email` = '123@.com' , `address` = '地球联合国' WHERE `stuName` = '多多' AND `stuAge` IS NULL AND `stuScore` IS NULL AND `gradeId` = '1' AND `email` = '' AND `address` = '';
#什么情况下不能修改
/*
修改的数据影响到主外键的约束
例如:student表中修改的gradeId不存在
或者grade表中修改的gradeId影响到student表中的外键
*/
#删除
DELETE FROM `subject` WHERE gradeId=2;
#不保留自增值 表清空
TRUNCATE TABLE `subject`;
S02E01