外键管理
表已经存在的情况下加外键:
alter table 表1名 add constraint 外键名
foreign key (表1的字段)references 表2(表2的字段)
解除外键:
ALTER TABLE `subject`
DROP FOREIGN KEY grade_sub_id ;
建表时加外键:
CREATE TABLE `subject`(
SubjectNo INT(11) PRIMARY KEY,
SubjectName VARCHAR(10),
ClassHour INT(4),
GradeID INT(4),
CONSTRAINT grade_sub_id FOREIGN KEY(GradeID)
REFERENCES grade(GradeID)
);
查询表格的所有外键:
SELECT
TABLE_SCHEMA,
`TABLE_NAME`,
`REFERENCED_TABLE_SCHEMA`,
`REFERENCED_TABLE_NAME` ,
`CONSTRAINT_NAME`
FROM
KEY_COLUMN_USAGE
WHERE `REFERENCED_TABLE_NAME` = 'grade' ;
DML语言
INSERT命令–添加数据
INSERT INTO 表名 [ ( 字段1, 字段2, 字段3, … ) ] VALUES ( '值1', '值2', '值3', …)
-
字段或值之间用英文逗号隔开
-
“字段1, 字段2…”该部分可省略,但添加的值务必与表结构数据列顺序相对应,且数量一致
-
可同时插入多条数据,values 后用英文逗号隔开
UPDATE命令—修改数据
UPDATE 表名
SET column_name = value [ , column_name2 = value2, …. ] [ WHERE condition ];
- column_name 为要更改的数据列
- value 为修改后的数据,可以为变量、具体值、表达式或者嵌套的SELECT结果
- condition为筛选条件,如不指定则修改该表的所有列数据
WHERE条件子句
删除数据
DELETE命令
DELETE FROM 表名 [ WHERE condition ];
condition为筛选条件,如不指定则删除该表的所有列数据
TRUNCATE命令
TRUNCATE [TABLE] table_name
用于完全清空表数据,但表结构、索引、约束等不变
区别于DELETE命令:
相同
- 都能删除数据、不删除表结构,但TRUNCATE 速度更快
不同
- 使用TRUNCATE TABLE重新设置AUTO_INCREMENT计数器
- 使用TRUNCATE TABLE不会对事务有影响