MySQL的数据管理

123 阅读3分钟

外键(了解即可)

方式一:在创建表的时候,增加约束(麻烦,比较复杂)

-- 外键约束
-- 建表classinfo
create table classinfo(
	class_id int primary key auto_increment,
	class_name varchar(10)
);
insert into classinfo(class_name) values ('火箭班'),('一班'),('三班'),('四班');

-- 建表
create table student_info(
	s_id int primary key auto_increment,
	s_name varchar(10),
	c_id int,
	-- 外键关联
	foreign key(c_id) references classinfo(class_id)
);
insert into student_info(s_name,c_id) values ('赵日天',1),('王诛魔',2),('刘斩仙',3),('Lily',1);

select * from student_info;
select * from classinfo;

-- 课程表
create table course(
	cou_id int primary key auto_increment,
	cou_name varchar(10)
);
insert into course(cou_name) values ('语文'),('英语'),('数学'),('物理'),('化学'),('生物'),('历史'),('地理'),('政治');

-- 学生,课程中间表
create table stu_course(
	stu_c_id int primary key auto_increment,
	c_id int,
	c_l_id int,
	-- 外键关联
	foreign key(c_id) references student_info(s_id),
	foreign key(c_l_id) references course(cou_id)
);
insert into stu_course(c_id,c_l_id) values(1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(2,1),(2,2),(2,3),(2,4),(2,5),(2,6);

删除有外键关系的表时,必须先删除引用引用别人的表(从表),再删除被引用的表(主表)

方式二:通过图形化页面添加外键,或者使用sql语句追加

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

以上操作都是物理外键,是数据库级别的,真实开发场景中很少使用! 也不推荐使用(避免表过多造成维护困扰)

  • 数据库就是单纯的表,只用来存数据,只有行(数据)和列(字段)
  • 如果想多张表关联使用,想使用外键(通过程序实现)

DML语言(重点)

数据库的意义: 数据存储 数据管理

DML语言:

  • insert
  • update
  • delete

添加

语法

insert into 表名([字段名1],[字段名2]....) values ('值1','值2',.....);

如果设置了主键自增可以省略手动插入操作(如果不写表的字段,系统会一一匹配)

一般写插入语句,一定要确保数据和字段一一对应

注意事项:

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

修改

语法

-- 指定条件修改
update 表名 set 字段1='新的值',字段2='新的值' ...... where [条件]
-- 如果不指定条件 会修改所有的表
操作符含义范围结果
=等于5=6false
<>或!=不等于5<>6true
>.大于2>1true
<小于2<1false
<=小于等于1<=1true
>=大于等于2>=1true
between..and..[]在某个范围内闭合区间
and&&5>1 and 1>2false
or或 管道符6>1 or 1>2true

注意事项:

  • 字段是数据表对应的列 尽量带上``
  • 条件,筛选的条件如果没有指定会修改所有的列
  • value,可以是一个变量,也可以是一个具体的值
  • 多个设置的属性之间,英文,隔开

删除

delete命令

delete语法

delete fromwhere 条件
  • 删除数据(避免写法) delete from 表名 (删库)
  • 删除指定的数据 delete from 表名 where 条件(必须写法)

truncate

作用: 清空表

truncate语法

truncate table 表名
  • 相同点: 都能删除数据,都不会删除表结构
  • 不同
    • truncate 重新设置自增列 计数器会归零
    • truncate 不会影响事务