mysql 的数据管理
外键
CREATE TABLE IF NOT EXISTS `student2`(
`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(20)NOT NULL DEFAULT '女' COMMENT'性别',
`birthday` DATETIME DEFAULT NULL COMMENT'出生日期',
`gradeid` INT(4) NOT NULL COMMENT '年级id',
`address` VARCHAR(100) 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=utf8CREATE TABLE `grade`(
`gradeid` INT(4) NOT NULL AUTO_INCREMENT COMMENT '年级id',
`gradename` VARCHAR(10) NOT NULL COMMENT'年级名称',
PRIMARY KEY(`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
格式:
创建表时没有外键,通过修改表添加外键
ALTER TABLE 表名
ADD CONSTRAINT 约束名 FOREIGN KEY(作为外键的列)REFERENCES 被引用的表名(字段名);
备注:被引用的表不能直接删除,要先删除引用它的表才能正确删除
======================================================================
DML 语言数据操作语言
- insert
- update
- delete
======================================================================
添加insert
INSERT INTO 表名(字段1,字段2,'''')values('值1'),('值2')
INSERT INTO `grade`(`gradename`) VALUES('大四')
插入多个字段
INSERT INTO `grade`(`gradename`) VALUES('大三'),('大二')
INSERT INTO `student`(`name`,`pwd`,`sex`) VALUES('','',''),('','','')
注意事项:
1.字段和字段之间使用英文逗号隔开
2.字段是可以省略的,但后面的值必须要一一对应
3.可以同时插入多条数据,values后面的值,需要使用,隔开
=======================================================================
修改update
UPDATE `student` SET `name`='chris' WHERE id=1 #修改id为1的人的名字
不指定条件的情况下,会改动所有的表
修改多个属性,用逗号隔开
UPDATE `student` SET `name`='chris',`email`='223673773@qq.com' WHERE id=1
where子句运算符 id等于某个值,大于某个值,在某个区间进行修改
操作符 | 含义 | 范围 | 结果 |
= | 等于 | 5=6 | false |
<>或!= | 不等于 | 5<6 | true |
> | | | |
< | | | |
<= | | | |
>= | | | |
BETWEEN...and... | 在某个范围内 | | 【2,5】 |
AND | && 并 | 5>1 and 1>2 | false |
OR | 或 | 5>1 or 1>2 | true |
注意点:
- colum_name 是数据库的列,尽量带上``
- 筛选的条件,如果没有指定,会修改所有的列
- value是一个具体的值也可以是一个变量
- 多个设置的属性之间,使用逗号隔开
- UPDATE `student` SET `birthday`='CURRNT_TIME' WHERE `name`='长江7号' AND sex='女'
========================================================================
删除delete
DELETE FROM `student
delete from 表名 where 条件
DELETE FROM `student` WHERE id=1;
TRUNCATE命令 完全清空一个数据库表,表的结构和索引约束不会变
TRUNCATE `student`
区别:
- 相同点:都能删除数据,都不会删除表结构
- 不同:重新设置 自增列计数器会归零
- TRUNCATE 不会影响事务
=================================================
CREATE TABLE `test`(
`id` INT(4) NOT NULL AUTO_INCREMENT,
`coll` VARCHAR(20) NOT NULL,
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8INSERT INTO `test` (`coll`) VALUES('1'),('2'),('3')
DELETE FROM `test` --不会影响自增
TRUNCATE TABLE `test` --自增会归零
=======================================
查询 select
指定查询字段 SELECT 字段 FROM 表名
SELECT * FROM student2
SELECT * FROM student2
SELECT `name`,`pwd` FROM student2
别名,给结果起一个名字
SELECT `name` AS `名字`,`pwd` AS `密码` FROM student2
函数
SELECT CONCAT('名字:',`name`) AS 新名字 FROM student2