【狂神】SQL笔记3

本文介绍了MySQL中数据管理的关键概念,包括外键的两种创建方式及其在数据库设计中的作用,建议将外键约束处理放在应用程序层面。此外,详细阐述了DML语言的插入(insert)、更新(update)和删除(delete)操作,提供了具体的SQL语句示例,强调了操作中的注意事项和技巧。
摘要由CSDN通过智能技术生成

MySQL数据管理

1 外键(了解即可)

方式一: 在创建表的时候增加约束(麻烦)

CREATE TABLE `grade`(
`gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT 'gradeid',
`gradename` VARCHAR(50) NOT NULL COMMENT 'grade name',
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 '姓名',
  `pwd` 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 '学生年级',
  `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
在student表中引用grade表中的gradeid

在这里插入图片描述
方式二:如果创建表的时候没有外键关系,可以手动添加约束:

alter table `student`
add constraint `FK_gradeid` foreign key(`gradeid`) references `grade`(`gradeid`)

以上操作都是物理外键,数据库级别的外键,不建议使用(避免数据库过多造成困扰)
外键问题建议应用层解决

====

2 DML语言

数据存储,数据管理
DML语言: 数据操作语言

  • insert:
  • update:
  • delete:

3 添加

插入语句:
insert into 表名([字段名1,字段2,字段3]) values(`值1`),(`值2`),(`值3`),...
insert into `grade`(`gradename`) values(`大一`)
insert into `grade`(`gradename`) values(`大二`),(大三)
insert into `student`(`name`,`pwd`,`sex`) values('zhangsan','111111','male')

insert into `student`(`name`,`pwd`,`sex`) 
values('lili','111111','female'),
('xiaoming','111111','male'),
('john','213414','male')

注意:

  1. 字段和字段之间使用英文逗号隔开
  2. 字段是可以省略的,但是后面的值必须要一一对应,不能省略,如:
insert into `student` values(11,'lisi','aaaaaa','male','1900-01-01',1,'Harbin','email')
  1. 可以同时插入多条数据,values后面的值需要使用逗号隔开即可

4 修改

--修改学生名字
/*语法:
update 表名 set colnum_name=value,[colnum_name=value,...] where [条件]
*/
update `student` set `name`='halo' where id = 1
--修改多个属性,用逗号隔开:
update `student` set `name`='halo',`email`='1234555@163.com' where id = 1

条件:where子句,运算符id等于某个值,或大于某个值,或在某个区间内修改

操作符含义范围结果
=等于5=6false
<>或!=不等于5<>6true
>
<
>=
<=
between…and…在某个范围内[2,5]
and与,&&5>1 and 1>2false
or或,||5>1 or 1>2true

注意:

  • colnum_name 是数据库的列,尽量带上``
  • 如果没有指定筛选的条件,则回修改所有的列
  • value 是一个具体的值,也可以是一个变量,如:
update `student` set `birthday`=current_time where `id`=1 and sex='male'

5 删除

  • delete命令:
    语法:
delete from 表明 [where] 条件

如果没有条件回删除表内的所有数据

  • truncate 命令: 完全清空一个数据表,表的结构和索引约束不会变
    语法: truncate 表名
truncate `student`
  • deletetruncate 的区别
    相同点:都能删除数据,都不会删除表的结构
    不同点:
  1. truncate重新设置 自增列 计数器会归零,如果用delete删除,则自增不会变,重新插入数据时自增会从原来的地方开始
  2. truncate 不会影响事务

delete删除的问题
delete删除之后,如果数据库engine是innoDB,那么重启数据库后,自增列会重1开始(存在内存中,断点消失);
如果数据库engine是MyISAM,重启数据库后,自增列会继续从上一个子增量开始(存在文件中,不会丢失)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值