MySQL数据管理
2024-08-25 07:49:05
3.MySQL数据管理
3.1外键
方式一:
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
/*
学生表的gradeid要去引用年级表的gradeid
定义外键foreign key
给这个外键添加约束(执行引用) references
*/
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` TIMESTAMP 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`),
CONSTRAINT `FK_gradeid` FOREIGN key (`gradeid`) REFERENCES `grade`(`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
删除有外键关系的表的时候,必须先删除从表,后删除主表
方式二
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
/*
学生表的gradeid要去引用年级表的gradeid
定义外键foreign key
给这个外键添加约束(执行引用) references
*/
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` TIMESTAMP 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`)
)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 那个表(哪个字段)
*/
3.2DML语言(数据库操作语言)
*Insert
*update
*delete
3.2.1添加(insert)
--插入语句
--insert into 表名([字段1][字段1][字段1]...[字段n])values(`值1`),(`值2`),(`值3`)...(`值n`)
insert into `grade`(`gradename`)VALUES('大三') --数据和字段一一对应
注意事项:
1、所有的符号为英文符号
2、字段可以省略,但是后面插入的值要一一对应
3、可以同时插入多条数据
3.2.2修改(update)
/*
update 修改条件 set原来的值 = 新值
修改多个属性,逗号隔开
*/
--修改语句
--update 表名 set 属性=替换属性值 where (条件)主键 = 主键值;
update `student` set `name`='Rose' where id = 1;
条件:
where 子句 运算符 id = 某个值,大于某个值,或者在某个区间范围
操作符 | 含义 | 范围 | 结果 |
---|---|---|---|
= | 等于 | 5=6 | false |
!= | 不等于 | 5!=6 | true |
> | 大于 | 5>6 | false |
< | 小于 | 5<6 | true |
>= | 大于等于 | 5>=5 | true |
<= | 小于等于 | 6<=5 | false |
between...and... | 在什么什么之间 | between 2 and 5 | 在2-5之间查询值 |
AND | && | 5>1 and 1>2 | false |
OR | || | 5>1 or 1>2 | true |
注意点:
-条件,如果没有指定则会修改所有的列
-value,是一个具体的值,也可以是一个变量
-英文符号注意
3.2.3删除(delete)
/*
删除数据
delete from 表名 where 主键 = 主键值;
*/
delete from `student` where id = 1;
TRUNCATE命令:
作用:完全清空一个数据库表,表结构和索引约束不变
--清空student表
truncate `student`;
相同点:都能删除数据,都不会删除表结构
不同点:
-TRUNCATE 重新设置 自增列 计数器回归零
-TRUNCATE 不会影响事务
--TRUNCATE he delete 的区别
create table `test`(
`id` int(4) not null auto_increment,
`coll` varchar(10) not null,
primary key(`id`)
)ENGINE = INNODB DEFAULT CHARSET = utf8
insert into `test`(`coll`)values('1'),('2'),('3')
delete from `test`
truncate table `test`
最新文章
- [deviceone开发]-小草用户分享的Listview停靠的示例
- Tips12: 私人定制 专属的Unity3D 脚本模板
- CodeForces Round #250 Div2
- jboss部署出现MarshalOutputStream找不到错误
- 结构体buf_block_t
- 哥德巴赫猜想证明(C语言实现50以内的正偶数证明)
- systemd.service 中文手册
- DEDE里有个编码问题,不支持PHP5.4及以上版本!
- NX-bridge,可以实现无线XBee控制的Arduino板
- JDBC编程学习笔记之数据库连接池的实现
- php+redis实现消息队列
- 创建ssh 服务的镜像
- 了解AutoCAD对象层次结构 —— 3 ——数据库
- sql常用问题(一)
- CSS规范 - 分类方法
- awk 同时指定多个分隔符
- 一种使用emwin库函数导致hardfault的情况
- ds18b20采集温度并上报服务器
- Android -- isInEditMode
- 例说hg(五)————创建repository