MySQL数据管理

1.外键(了解)

  • 方式一:创建表时添加约束
create table if not exists `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
-- 定义一个外键的key
--给这个外键添加约束,执行引用
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(3) not null default '女' comment '性别',
    `birthday` datetime default null comment '出生日期',
    `gradeid` int(10) not null comment '学生年级',
    `address` varchar(100) default null comment '家庭住址',
    `email` varchar(50) default null comment '邮箱',
    primary key(`id`),
    key `FK_gradeid` (`gradeid`),
    constraint `FK_gradeid` foregin key (`gradeid`) references `grade`(`gradeid`)
)engine=innodb default charset=utf8
  • 方式二:建完之后添加约束
alter table `student` add constraint `FK_gradeid` foregin key (`gradeid`) references `grade`(`gradeid`);

-- alter table 表 add constraint 约束名 foreign key(作为外键的列) references 哪个表(哪个字段);
  • 以上的操作都是物理外键,数据库级别的外键,不建议使用
  • 删除有外键关系的表的时候,要先删除引用的表,再删除被引用的表

最佳实践

  • 数据库就是单纯的表,只是用来存数据,只有行(数据)和列(字段)
  • 想要使用多张表或者外键时,使用程序去实现

2.insert添加语句

  • 语法:insert into 表名 ([字段名1,字段名2,字段名3]) values(‘值1’),(‘值2’),(‘值3’)

    insert into `grade`(`gradename`) values('大四') -- 主键自增可省略
    
    insert into `student`(`name`,`pwd`,`sex`) values('张三','123123','男')
    
  • 如果不写表的字段会一一匹配

    insert into `grade` values('大三') --报错error
    
    insert into `grade` values(2,'大三') --正确
    
  • 插入多个字段

    insert into `grade`(`gradename`) values('大一'),('大二')
    
  • 注意事项:

    • 字段和字段之间使用英文逗号隔开
    • 字段是可以省略的,但是后面的值必须一一对应
    • 可以同时插入多条数据,values后面的值必须使用逗号隔开

3.update修改语句

  • 语法:update 表名 set 字段名1=value,字段名2=value,字段名3=value where 条件

    update `student` set `name`='小红' where `id`=1
    update `student` set `name`='小红',`email`='123123@qq.com' where `id`=1
    update `student` set `name`='小红',`email`='123123@qq.com' where `gradeid`=1 and `sex`='女'
    
    -- 不指定条件默认修改所有的表
    update `student` set `name`='小红' -- 将所有的name改为小红
    
  • where条件中常见操作符

    操作符含义
    =等于
    <>或!=不等于
    >大于
    <小于
    >=大于等于
    <=小于等于
    between…and…在某个闭合区间
    and
    or
  • 注意事项:

    • 字段名尽量带上``
    • 筛选的条件如果不指定,则会修改所有的列
    • value是一个具体的值,也可以是一个变量
    update `student` set `birthday`=current_time where `id`=1
    
    • 多个设置的属性之间使用英文逗号隔开

3.delete删除语句

  • 语法:delete from 表名 where 条件

    -- 删除指定数据
    delete from `student` where `id` = 1
    
    --删除全部数据
    delete from `student`
    
  • 完全清空一个数据库表,表结构和索引约束不变

    truncate `student`
    
  • delete和truncate比较

    • 相同点:都能删除数据,都不会删除表结构
    • 不同点:
      • truncate重新设置自增列,计数器会归零
      • truncate不会影响事务
      • delete删除后,重启数据库服务,INNODB自增列会从1开始(存在内存当中的,断电即失);MYISAM继续从上一个自增量开始(存在文件当中的,不会丢失)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Remote_Li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值