MySQL3数据库管理
MySQL3数据库管理
外键(了解即可)
- 方式一:在创建表的时候,增加约束(麻烦,比较复杂)
CREATE TABLE `grade`(
`gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年级id',
`gradename` VARCHAR(50) NOT NULL COMMENT '年级名称',
PRIMARY KEY(`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
CREATE TABLE IF NOT EXISTS `student`(
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(30) NOT NULL DEFAULT'匿名' COMMENT'姓名',
`paw` 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 '年级id',
`address` VARCHAR(100) DEFAULT NULL COMMENT'家庭住址',
`email` VARCHAR(50) DEFAULT NULL COMMENT'邮箱',
PRIMARY KEY (`id`),
KEY `FK_gradeid` (`gradeid`), -- FK_ 外键约束规定
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 哪个表(引用的列)
以上的操作都是物理外键,数据库级别的外键,不建议使用!(避免数据库过多困扰)
- 最佳实战
- 数据库就是单纯的表,只用来存储数据,只有行(数据)和列(字段)
- 我们想使用多张表的数据,想使用外键(程序去控制)
DML语言(全部记住)
数据库的意义:存储数据,数据管理
DML语言:数据操作语言
- insert 添加
- update 修改
- delete 删除
添加
-
insert
-
语法:
INSERT INTO 表名 ([列1],[列2],[列3]) VALUES ('字段1','字段2','字段3'),('字段1','字段2','字段3')
``` |
* 例如
```sql
-- 一般写插入语句,我们一定要数据和字段一一对应!
-- INSERT INTO 表名 ([列1],[列2],[列3]) VALUES ('字段1','字段2','字段3'),('字段1','字段2','字段3')
INSERT INTO `grade` (`gradename`) VALUES ('大二'),('大三')
修改
-
update
-
语法
update 表名 (条件) set 原来的值 = 新值 where 条件
- 例如
-- 修改学院名字,带了简介
UPDATE `student` SET `name`='狂神'WHERE id=1;
-- 不指定条件的情况下,会改动所有的值
UPDATE `student` SET `name`='长江7号'
-- 语法:
-- update 表名 set 列=值,[列=值],[列=值] where [条件]
| 操作符 | 含义 | 范围 | 结果 |
|---|---|---|---|
| = | 等于 | 5=6 | false |
| <>或!= | 不等于 | 5<>6 | true |
| between…and… | []闭合区间 | ||
| and | 相当于&& | 5>1 and 1>2 | false |
| or | 相当于|| | 5>1 or 1>2 | true |
删除
- delete
-- 删除数据(避免这样写,会全部删除)
delete from `student`
-- 删除指定数据
delete from `student` where id=1;
-
truncate
-
作用:完全清空数据库,表结构和索引约束不会变
-- 清空student表
TRUNCATE `student`
delete 和 truncate
-
不同
-
truncate重新设置了自增列 计数器会归0
-
truncate不会影响事务
DELETE FROM `test` -- 不会影响自增
TRUNCATE TABLE `table` -- 自增会归零
-
了解即可:delete,重启数据库,现象
-
innoDB自增列会从1开始(存在内存中的,断电即失)
-
MyISAM继续从上一个子增量开始。(存在文件中,不会丢失)

浙公网安备 33010602011771号