热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据库数据操作3

唯一约束(unique)特点:值唯一可以为空createtablestu5(sidintprimarykey,snamevarchar(20)unique);
  1. 唯一约束(unique)
    特点: 值唯一 可以为空
    create table stu5(sid int primary key,sname varchar(20) unique);
    自动增长列
    自动加1 并且出现过的 就不会在出现了
    create table stu6(sid int primary key auto_increment,sname varchar(20) unique);
    insert into stu6 (sname) values (‘haha’);
    insert into stu6 (sname,sid) values (‘ha’,null);
    域完整性
    作用:限制单元格内的数据的完整性
    create table stu7(sid int primary key auto_increment,saname varchar(20) not null);
  2. 引用完整性(参照物约束)
    外键约束:FOREIGN KEY
    主表和从表有依赖关系 从表依赖主表 这时可以给从表添加一个约束 外键约束
    create table student1 (sid int primary key,sname varchar(20));
    create table score1 (
    sid int,
    score int,
    constraint fk_stu_score_sid FOREIGN KEY (sid) REFERENCES student1(sid)
    );
  3. 给score表添加外键
    alter table score1 add constraint fk_student_score_sid1 foreign key (sid)
    references student1 (sid);
    删除时要使用约束的别名来删除
    一个表可以有多个外键 需要使用约束的名字
    注意:约束的名字不能重复
    alter table score drop foreign key fk_student_score_sid;
    表和表之间的关系
    多对多 利用第三章表来表示关系的
    并且第三张表作为从表 作为其他两个主表的外键
    创建学生表 老师表 中间表 并建立关系
    create table student(
    sid int primary key,
    sname varchar(20)
    );
    create table teacher(
    tid int primary key,
    sname varchar(20)
    );
    create table teacher_student (
    sid int,
    tid int
    );
    constraint 约束
    references参考
    alter table teacher_student add constraint fk_teacher_tid foreign key (tid) references teacher (tid);
    alter table teacher_student add constraint fk_student_sid foreign key (sid) references student (sid);
  4. 插入数据
    create table A(
    name varchar(10),
    score int
    );
    create table B(
    name varchar(10),
    score int
    );
    insert 插入
    insert into A values(‘a’,10),(‘b’,20),(‘c’,30);
    insert into B values(‘a’,10),(‘b’,20),(‘d’,40);
  5. 合并查询
    关键词union可以取两个表的并集 (字段名 类型相同)
    union all可以把两个表的数据合并一起
    连接两个表的查询结果集,重复的不显示
    select * from a union select * from b;
    select * from a union all select * from b;
  6. – 3个表查询
    select s.stuname,c.score,u.cname from student s,score c,course u where s.stuid=c.stuid and c.courseid=u.courseid;
    连接查询(多表查询)
    内连接(inner)可以省略
    on后面是去除重复的条件
    select * from student s join score c on s.stuid=c.stuid;
    3个表一起内连接查询
    select * from student s join score c on s.stuid=c.stuid join course o on c.courseid=o.courseid;
    查询表中80分以上的学生姓名 分数 科目信息
    select s.stuname,c.score,o.cname from student s join score c on s.stuid=c.stuid join course o on c.courseid=o.courseid where c.score>80;
    外连接 左外连接 右外链接
    左外连接就是以左边的表为主 会查询出左边的所有数据
    关键词outer可以省略
    学生和分数表
    select * from student left join score on student.stuid=score.stuid;
    select * from score left join student on student.stuid=score.stuid;
    自然连接 关键词natural
    可以自动匹配两个表中相同的字段的值
    要求字段名和类型相同
    select * from student natural join score;
    子查询(嵌套查询)
    员工表和部门表查询
    查询工资高于Jones的员工信息
    select * from emp where sal>(select sal from emp where ename=’jones’);
    select * from emp where ename=’jones’;
    查询与SCOTT同一个部门的员工
    select * from emp where deptno=(select deptno from emp where ename=’scott’);
    工资高于30号部门所有人的员工信息
    select * from emp where sal>(select max(sal) from emp where deptno=30);
    查询工作和工资与MARTIN(马丁)完全相同的员工信息
    select * from emp where (job,sal) in(select job,sal from emp where ename=’martin’);
    有2个以上直接下属的员工信息
    看mgr 出现几次 出现一次就一个下属
    select * from emp where empno in (select mgr from emp group by mgr having count(mgr)>=2);
    查询员工编号为7788的员工名称、员工工资、部门名称、部门地址
    select e.ename,e.sal,d.dname,d.loc from emp e,dept d where e.deptno=d.deptno and e.empno=7788;
    求各个部门薪水最高的员工所有信息
    把查询出来结果当做一张表
    select * from emp e1,(select deptno, max(sal) msal from emp group by deptno) e2 where e1.sal=e2.msal and e1.deptno=e2.deptno;
    select * from emp e1,(select deptno, max(sal) msal from emp group by deptno) e2 where e1.sal=e2.msal and e1.deptno=e2.septno;

推荐阅读
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 电话号码的字母组合解题思路和代码示例
    本文介绍了力扣题目《电话号码的字母组合》的解题思路和代码示例。通过使用哈希表和递归求解的方法,可以将给定的电话号码转换为对应的字母组合。详细的解题思路和代码示例可以帮助读者更好地理解和实现该题目。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • MySQL外键1对多问题的解决方法及实例
    本文介绍了解决MySQL外键1对多问题的方法,通过准备数据、创建表和设置外键关联等步骤,实现了用户分组和插入数据的功能。详细介绍了数据准备的过程和外键关联的设置,以及插入数据的示例。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
author-avatar
zhibiao
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有