数据库--MySQL数据管理

数据库--MySQL数据管理

文章目录

1.外键管理

  • 外键概念
    • 如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之 间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。
  • 外键作用
    • 保持数据一致性,完整性,主要目的是控制存储在外键表中的数据,约束。使两张表形成关联,外键只能引用外表中的列的值或使 用空值。
  • 创建外键
    • 建表时指定外键约束
    • 建表后修改
  • 删除外键
  • 删除外键、删除表

2.数据库数据管理

  • 数据库意义
    • 数据存储
    • 数据管理
  • 管理数据库数据方法
    • 通过SQLyog等管理工具管理数据库数据
    • 通过DML语句管理数据库数据

3.DML语言

  • DML(Data Manipulation Language,数据操作语言)
    • 用于操作数据库对象中所包含的数据
  • 包括
    • INSERT ( 添加数据语句 )
    • UPDATE ( 更新数据语句 )
    • DELETE ( 删除数据语句 )

3.1添加数据

  • INSERT命令

    mysql 复制代码
    #新增数据 (插入一条数据)  字段一定要写
    INSERT INTO 表名 [( 字段1, 字段2, 字段3,...)] VALUES('值1', '值2', '值3',...)
    
    INSERT INTO `subject`(SubjectNO,SubjectName,ClassHour,GradeID) VALUES(01,'数据库',22,3);
    
    INSERT INTO student (StudentNO,StudentName,Sex,GradeID,Phone,Address,BornDate,Email,IdentityCard) VALUES(1011,'郭靖',1,1,'13500000001','北京海定区中关村大街1号','1986-12-11','guojing @bdqn.cn','450323198612111000');
    
    #新增数据 (插入多条数据)
    insert into 表名(字段名1,字段名2,...,字段名N)
    values
    (值1,值2,...,值N),
    (值1,值2,...,值N),
    ... ...
    (值1,值2,...,值N);
    
    #新增数据 (插入多条数据)
    #INSERT语句向数据表student添加数据
    INSERT INTO student (StudentNO,StudentName,Sex,GradeID,Phone,Address,BornDate,Email,IdentityCard)
    VALUES(1011,'郭靖',1,1,'13500000001','北京海定区中关村大街1号','1986-12-11','guojing @bdqn.cn','450323198612111000'),
    (1013,'李梅',0,3,'13500000015','上海','1986-12-31','limei@bdqn.cn','450323198612311000'),
    (1012,'李文才',1,2,'13500000002','河南洛阳','1981-12-31','liwencai@bdqn.cn','450323198112311000');
    
    #INSERT语句为课程表subject添加数据
    INSERT INTO `subject` (SubjectNO,SubjectName,ClassHour,GradeID) 
    VALUES(1,'高等数学-1',120,1),(2,'高等数学-2',110,2),
    (3,'高等数学-3',100,3),(4,'高等数学-4',130,4);
    
    
    INSERT INTO result (StudentNO,SubjectNO,StudentResult) VALUES('1011','1','99'),('1012','1','79'),('1013','1','89'),('1012','2','69'),('1011','3','88'),('1012','3','79'),('1013','3','66');
    • 字段或值之间用英文逗号隔开

    • "字段1, 字段2..."该部分可省略,但添加的值务必与表结构数据列顺序相对应,且数量一致(字段尽量不要省略)

    • 可同时插入多条数据,values 后用英文逗号隔开

3.2修改数据

  • UPDATE命令

    mysql 复制代码
    UPDATE 表名 SET column_name = value  [,column_name2 = value2,...] [WHERE条件];
    
    #UPDATE语句修改student表数据
    UPDATE student SET Email='student1013@bdqn.cn',LoginPwd='000000' WHERE StudentNO=1013;
    #将数据表subject中ClassHour大于110且GradeID为1的课时都减少10
    UPDATE `subject` SET ClassHour=ClassHour-10 WHERE ClassHour>110 AND GradeID=1;
    • column_name 为要更改的数据列
    • value 为修改后的数据,可以为变量、具体值、表达式或者嵌套的SELECT结果
    • condition为筛选条件,如不指定则修改该表的所有列数据
  • WHERE条件子句

    • 简单理解为有条件地从表中筛选数据
    • WHERE中的运算符
    运算符 含义 范例 结果
    = 等于 5=6 false
    <> 或 != 不等于 5!=6 true
    > 大于 5>6 false
    < 小于 5<6 true
    >= 大于等于 5>=6 false
    <= 小于等于 5<=6 true
    BETWEEN 在某个范围之间 BETWEEN 5 AND 10 -
    AND 并且 5>1 AND 1>2 false
    OR 5>1 OR 1>2 true

3.3删除数据

  • DELETE命令
mysql 复制代码
DELETE FROM 表名 [WHERE条件]; 

DELETE FROM student WHERE StudentNo=1000;
  • condition为筛选条件,如不指定则删除该表的所有列数据

  • TRUNCATE命令

    • 用于完全清空表数据,但表结构、索引、约束等不变
mysql 复制代码
TRUNCATE [TABLE] table_name;
  • 区别于DELETE命令
  • 相同
    • 都能删除数据、不删除表结构,但TRUNCATE 速度更快
  • 不同
    • 使用TRUNCATE TABLE重新设置AUTO_INCREMENT计数器
    • 使用TRUNCATE TABLE不会对事务有影响

4.练习

mysql 复制代码
#学生表插入数据
INSERT INTO student VALUES('108','曾华','男','1977-09-01','95033'),
('105','匡明','男','1975-10-02','95031'),
('107','王丽','女','1976-01-23','95033'),
('101','李军','男','1976-02-20','95033'),
('109','王芳','女','1975-02-10','95031'),
('103','陆君','男','1974-06-03','95031');
#课程表插入数据
INSERT INTO course VALUES('3-105','计算机导论','825'),
('3-245','操作系统','804'),
('6-166','数字电路','856'),
('9-888','高等数学','831');
#成绩表插入数据
INSERT INTO score VALUES('103','3-245','86'),
('105','3-245','75'),
('109','3-245','68'),
('103','3-105','92'),
('105','3-105','88'),
('109','3-105','76'),
('101','3-105','64'),
('107','3-105','91'),
('108','3-105','78'),
('101','6-166','85'),
('107','6-166','79'),
('108','6-166','81');
#教师表插入数据
INSERT INTO teacher VALUES('804','李诚','男','1958-12-02','副教授','计算机系'),
('856','张旭','男','1969-03-12','讲师','电子工程系'),
('825','王萍','女','1972-05-05','助教','计算机系'),
('831','刘冰','女','1977-08-14','助教','电子工程系');
mysql 复制代码
#将course表中高等数学修改为JAVA高级编程
UPDATE course SET  Cname='JAVA高级编程' WHERE Cname='高等数学';
#删除学生陆君的信息 (学生信息及学生考试成绩)
DELETE FROM score WHERE score.Sno IN(SELECT Sno FROM student WHERE Sname ='陆君');
DELETE FROM student WHERE Sname ='陆君';
#查询95031班级所有男生信息,返回学号,姓名,性别,出生日期,班级编号
SELECT Sno '学号',Sname '姓名',Ssex '性别',Sbirthday '出生日期',Class '班级编号'
FROM student WHERE Class='95031' AND Ssex='男';
#查询Score表中成绩为85,86或88的记录
SELECT Sno,Cno,Degree FROM score WHERE Degree IN(85,86,88);
#查询Score表中成绩为85,86或88的记录,返回学号,课程名称(注意不是课程编号)
SELECT Sno '学号',Cname '课程名称',Degree '成绩' FROM score,course 
WHERE Degree IN(85,86,88) AND score.Cno=course.Cno;
相关推荐
foolishlee3 分钟前
Neon wal日志处理流程
数据库
星马梦缘11 分钟前
数据库 事务管理 专项作战记录
数据库
名字还没想好☜26 分钟前
Python concurrent.futures 实战:用 ThreadPoolExecutor 并发处理 + as_completed 收结果
数据库·python·php·并发
空杆推不起38 分钟前
穿透数据库 JOIN 核心:语法分类、底层算法、生产优化与高频坑点全解析
数据库·oracle
xxwl5851 小时前
数据库后端接口测试报告
spring boot·mysql·tomcat
xqqxqxxq1 小时前
MySQL 数据类型笔记
数据库·笔记·mysql
Logintern092 小时前
理解MySQL数据库的“事务与锁”
数据库·mysql
朱容zr3331332 小时前
为什么推荐使用自增主键?使用UUID作为主键的优缺点是什么?
java·运维·数据库·后端·mysql·面试·性能优化
麻瓜code2 小时前
【Redis 】数据类型、持久化与过期删除
数据库·redis·缓存
空杆推不起2 小时前
穿透 Flink CDC 表层用法:数据库日志捕获机制、Flink Source 运行时、端到端一致性底层原理详解
大数据·数据库·flink