MySQL数据管理
1.外键(了解即可)连了外键 在新增数据时候,有时候会出错,所以现在大多不练外键,都通过代码逻辑去限制
添加外键:
方式一,在创建表的时候,增加约束(麻烦,比较复杂)
--约束constraint
CREATE TABLE IF NOT EXISTS `student` (
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`pwd` varchar(20) NOT NULL DEFAULT '123456' COMMENT '密码',
`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',
`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
`gradeid` INT(10) NOT NULL COMMENT '学生的年级',
`address` VARCHAR(50) DEFAULT NULL COMMENT '家庭住址',
`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY(`id`),
KEY `FK_gradeid` (gradeid),
CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade`(`gradeid`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
删除有外键关系的表的时候,必须先删除引用别人的表(从表),再删除被引用的表(主表)
方式二,创建表成功后,添加外键约束
--创建表的时候没有外键关系
ALTER TABLE student
ADD CONSTRAINT FK_gradeid FOREIGN KEY (gradeid) REFERENCES grade(gradeid);
--ALTER TABLE 表 ADD CONSTRAINT 约束名 FOREIGN KEY (作为外键的列) REFERENCES 目标表(目标字段)
以上操作都是物理外键,不建议使用!(避免数据库过多造成困扰)
最佳实践
- 数据库就是单纯的表,只用来存数据,只有行(数据)和列(字段)
- 我们想使用多张表的数据,想使用外键(通过程序去实现)
2.DML语言(全部记住)
数据库意义:数据存储,数据管理
DML语言:数据操作语言
- insert
- update
- delete
3.添加
-- 插入语句(添加)
-- insert into 表名([字段名1,字段名2,字段名3]) values ('值1','值2','值3')
INSERT INTO `grade` (`gradename`) VALUES ('大四');
-- 由于主键自增,我们可以省略主键
INSERT INTO `grade` VALUES (`大三`);
-- 一般我们写插入语句,一定要数据和字段一一对应
-- 插入多个字段
INSERT INTO `grade` (`gradename`) VALUES ('大一'),('大二');
INSERT INTO `student` (`name`,`pwd`,`sex`) VALUES ('张三','123','男'),('李四','123','男');
语法:insert into 表名([字段名1,字段名2,字段名3]) values ('值1','值2','值3')
注意事项:
1.字段和字段之间使用英文逗号隔开
2.字段是可以省略的,但是后面的值必须要一一对应
3.可以同时插入多条数据,values 后面的值需要使用,隔开即可
INSERT
4.修改
-- 修改学员名字
UPDATE `student` SET `name` = 'ub' WHERE id = 1;
-- 不指定条件的情况下,会改动所有表
UPDATE `student` SET `name` = 'crs';
-- 语法:
-- UPDATE 表名 SET column_name = value where [条件];
-- 修改多个属性,逗号隔开
UPDATE `student` SET `name` = 'UB', `email` = '234234@qq.com' WHERE id = 1;
-- 语法:
-- UPDATE 表名 SET column_name = value, [column_name = value, ...] where [条件];
条件:where子句 运算符
| 操作符 | 意义 | 范围 | 结果 |
|---|---|---|---|
| = | 等于 | 5=6 | false |
| < | 小于 | 3<5 | true |
| > | 大于 | 4<2 | false |
| <>或 != | 不等于 | 2!=3 | true |
| >= | 大于等于 | ||
| BETWEEN ... AND ... | 在某个范围内 | [2,3] | |
| AND | 我和你&& | 5>1 AND 1 > 2 | false |
| OR | 我或你 | 5>1 OR 1>2 | true |
语法:UPDATE 表名 SET column_name=value, [column_name=value,...] WHERE [条件]
注意:
- column_name 是数据库的列,尽量带``
- 条件,筛选的条件如果没有指定,则会修改所有的列
- value,是一个具体的值也可以是一个变量(大部分对于时间使用函数插入数据)UPDAET
studentSETbirthday= CURRENT_TIME WHEREname= '张三' ANDsex= '女';
5.删除
-- 删除数据
-- 语法:DELETE FROM 表名 [WHERE 条件]
DLETE FROM `student` WHERE id = 1;
-- 专业清空数据库命令 TRUNCATE 完全清空一个表的数据库
TRUNCATE `student`
DELETE 和 TRUNCATE的区别
- 相同点:都能删除数据,都不会删除表结构
- 不同点:
- TRUNCATE 重新设置 自增列 计数器会归零
- TRUNCATE 不会影响事务
浙公网安备 33010602011771号