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

mysql根据xs表的学号列_MySQL基础1

以下为在初次学习数据库有关知识时学习到的一些基本操作(部分)创建表createtabletb_name;查看存储引擎showengines;创建数据库createdatabased

以下为在初次学习数据库有关知识时学习到的一些基本操作(部分)

创建表     create table tb_name;

查看存储引擎      show engines;

创建数据库     create database db_name;

可以查看choose数据库的相关信息     show create database choose;

删除数据库stu drop database stu;

显示表结构 desc tb_name;

创建部门信息表tb_dept

create table tb_dept(

id          int(11) primary key,

name       varchar(22) not null,

location  varchar(50)

);

创建一个员工信息表tb_emp,设置其字段depId为外键,引用的是tb_dept表的主键id:

非空约束   NOT NULL

创建部门信息表tb_dept,要求部门的名称不能重复

create table tb_dept(

id               int(11) primary key,

name       varchar(22),

location  varchar(50),

constraint sth UNIQUE(name)

);

或者create table tb_dept(

id               int(11) primary key,

name       varchar(22) UNIQUE,

location  varchar(50)

);

定义员工信息表tb_emp,指定员工的id为自动增长列

create table tb_emp(

id                              int(11) primary key AUTO_INCREMENT,

name                      varchar(25) NOT NULL,

deptId                     int(11)  DEFAULT  1111,

salary                      float,

constraint fk_emp_dept foreign key(deptId) references tb_dept (id)

);

创建部门信息表tb_dept,要求部门的名称不能重复

create table tb_dept(

id               int(11) primary key,

name       varchar(22),

location  varchar(50),

constraint sth UNIQUE(name)

);

默认约束定义员工信息表tb_emp,指定员工的部门编号默认为1111

create table tb_emp

id                              int(11) primary key,

name                      varchar(25) NOT NULL,

deptId                     int(11)  DEFAULT  1111,

salary                      float,

constraint fk_emp_dept foreign key(deptId) references tb_dept(id)

);

修改数据表

将数据表tb_dept改名为tb_deptment

alter table tb_dept RENAME tb_deptment;

show tables;

将数据表tb_deptment中name字段的数据类型由varchar(22)改为varchar(30)

alter table tb_deptment MODIFY name VARCHAR(30);

desc tb_department;

将数据表tb_department中的location字段名改为loc,数据类型保持不变

alter table tb_deptment CHANGE location loc varchar(50);

将数据表tb_department中的loc字段名改为location,数据类型变varchar(60)

alter table tb_deptment CHANGE loc location varchar(60);

在数据表tb_department中添加一个int类型的字段managerId(部门经理编号)

alter table tb_deptment ADD managerId int(10);

在数据表tb_department中第一列添加一个int类型的字段column2

alter table tb_deptment ADD column2 int(11) FIRST;

在数据表tb_department中name列后添加一个int类型的字段column3

alter table tb_deptment ADD column3 int(11) AFTER name;

删除数据表tb_department中的column2字段

alter table tb_deptment DROP column2;

修改数据表tb_department中的column1字段为表的第1个字段

alter table tb_deptment MODIFY column1 varchar(12) first;

修改数据表tb_department中的column1字段插入到location字段后面

alter table tb_deptment MODIFY column1 varchar(12) AFTER location;

更改表的存储引擎。将数据表tb_deptment的存储引擎改为MyISAM

alter table tb_deptment ENGINE=MyISAM;

删除没有被关联的表。删除数据表tb_dept2

drop table if exists tb_dept2;

删除被其他表关联的主表。分几种情况:

先删除与它关联的子表,再删除父表

如果要保留子表,则只需将关联的表的外键约束条件取消,然后就可删除父表

删除被数据表tb_emp(子表)关联的数据表tb_dept2(父表)

alter table tb_emp DROP FOREIGN KEY fk_emp_dept;

drop table tb_dept2;

操作表数据

1插入记录

向XSCJ数据库的表XSB中插入如下的一行:

101101王林  计算机  男  19900210  50

INSERT INTO XSB(XH, XM, XB, CSSJ, ZY, ZXF)

VALUES(‘101101’, ‘王林’, ‘男’,TO_DATE(‘19900210’,’YYYYMMDD’), ‘计算机’, 50);

使用SELECT语句查询是否添加了该行数据:

SELECT XH, XM, XB, CSSJ, ZY, ZXF

把一个表中的部分数据插入到另一个表中,但结果集中的每行数据的字段数、字段的数据类型要与被操作表完全一致

INSERT INTO table_name

derived_table

2修改记录

将XSCJ数据库的XSB表中学号为“101110”的学生备注列值改为“三好学生”,

UPDATE XSB

SET BZ=’三好学生’

WHERE XH=’101110’;

将XSB表中的所有学生的总学分都增加10。

UPDATE XSB

SET ZXF=ZXF+10;

将姓名为“罗林琳”的同学的专业改为“通信工程”,备注改为“转专业学习”,学号改为“101241”。

UPDATE XS

SET ZY='通信工程',

BZ='转专业学习',

XH='101241'

WHERE XM= '罗林琳';

查询XSB表中ZXF大于50同学的XH、XM和ZXF

SELECT XH, XM, ZXF

FROM XSB

WHERE ZXF>50;

查询XSB表中的所有列       SELECT * FROM XSB;

修改XSB表中计算机系同学的XH、XM和ZXF分别为学号、姓名和总学分

SELECT XH AS 学号,XM AS 姓名,ZXF AS 总学分

FROM XSB

WHERE ZY= '计算机';

As可以省略

对XSCJ数据库的XSB表只选择ZY和ZXF,消除结果集中的重复行。

SELECT DISTINCT ZY AS 专业,ZXF AS 总学分

FROM XSB;

对XSCJ数据库的XSB表选择ZY和ZXF,不消除结果集中的重复行。

SELECT ALL ZY AS 专业名,ZXF AS 总学分

FROM XSB;

查询XSB表中通信工程专业总学分大于等于42的同学的情况。

SELECT *

FROM XSB

WHERE ZY= '通信工程' AND ZXF>=42;

查询成绩表中期末成绩<60,总评成绩>&#61;60分的同学

select * from xscj where zpcj>&#61;60 and qmcj<60;

查询XSB表中姓“王”且单名的学生情况

SELECT * FROM XSB

WHERE XM LIKE &#39;王_&#39;;

(插入出生年月类型yyyymmdd )

查询XSB表中不在1989年出生的学生情况

SELECT * FROM XSB

WHERE  CSSJ  NOT  BETWEEN  TO_DATE(&#39;19890101&#39;, &#39;YYYYMMDD&#39;)

AND    TO_DATE(&#39;19891231&#39;, &#39;YYYYMMDD&#39;);

查询CP表中库存量为“200”“300”和“500”的情况。

SELECT *

FROM CP

WHERE KCL IN (200,300,500);

或者SELECT *

FROM CP

WHERE KCL&#61;200 OR KCL&#61;300 OR KCL&#61;500;

查询XSCJ数据库中总学分尚不定的学生情况(即为空值的)

SELECT *  FROM XSB

WHERE ZXF IS NULL;

子查询

在XSB表中查找1990年1月1日以前出生的学生的姓名和专业。

SELECT XM, ZY

FROM  (SELECT * FROM XSB

WHERE CSSJ

查找比所有计算机系学生年龄都大的学生。

SELECT * FROM XSB

WHERE  CSSJ

( SELECT CSSJ

FROM XSB

WHERE ZY&#61; &#39;计算机&#39;

);

查找课程号206的成绩不低于课程号101的最低成绩的学生的学号。

SELECT XH FROM CJB

WHERE KCH &#61; &#39;206&#39; AND CJ>&#61; ANY

( SELECT CJ FROM CJB

WHERE KCH &#61; &#39;101&#39;

);

查找选修了全部课程的同学姓名。

SELECT XM FROM XSB

WHERE NOT EXISTS

( SELECT *FROM KCB

WHERE NOT EXISTS

( SELECT *

FROM CJB

WHERE XH&#61;XSB.XH AND KCH&#61;KCB.KCH )

);

查找与101102号同学所选修课程一致的同学的学号。

SELECT DISTINCT XH FROM CJB CJ1

WHERE NOT EXISTS

( SELECT *FROM CJB CJ2

WHERE CJ2.XH &#61;&#39;101102&#39; AND NOT EXISTS

( SELECT *FROM CJB CJ3

WHERE CJ3.XH&#61; CJ1.XH

AND CJ3.KCH &#61; CJ2. KCH)

);

在XSB表中查找1990年1月1日以前出生的学生的姓名和专业。

SELECT XM, ZY

FROM  (SELECT * FROM XSB

WHERE CSSJ

查找XSCJ数据库每个学生的情况以及选修的课程情况

SELECT XSB.* ,CJB.*

FROM XSB , CJB

WHERE XSB.XH&#61;CJB.XH;

查找选修了“计算机基础”课程且成绩在80分以上的学生学号、姓名、课程名及成绩。

SELECT XSB.XH, XM, KCM, CJ

FROM XSB, KCB, CJB

WHERE XSB.XH &#61; CJB.XH AND KCB.CH &#61; CJB. KCH

AND KCM &#61; &#39;计算机基础&#39;  AND CJ >&#61; 80;

用FROM的JOIN关键字表达下列查询&#xff1a;查找选修了206课程且成绩在80分以上的学生姓名及成绩。

SELECT XM , CJ

FROM XSB JOIN CJB ON XSB.XH &#61; CJB.XH

WHERE KCH &#61; &#39;206&#39; AND CJ>&#61;80;

用FROM的JOIN关键字表达下列查询&#xff1a;查找选修了“计算机基础”课程且成绩在80分以上的学生学号、姓名、课程名及成绩。(三表连接)

SELECT XSB.XH , XM , KCM , CJ

FROM XSB

JOIN CJB JOIN KCB ON CJB.KCH &#61; KCB.KCH

ON XSB.XH &#61; CJB.XH

WHERE KCM &#61; &#39;计算机基础&#39;  AND CJ>&#61;80;

查找不同课程成绩相同的学生的学号、课程号和成绩。

SELECT a.XH,a.KCH,b.KCH,a.CJ

FROM CJB a JOIN CJB b

ON a.CJ&#61;b.CJ AND a.XH&#61;b.XH AND a.KCH!&#61;b.KCH;

A表                B表

a1       a2       b1      b2

------------    ------------

1          4       2

3

2          5       4

5

6          7       6

7

3          4       8

9

7          8

左连接

select a.a1,a.a2,b.b2

from a left outer join b

on a.a2&#61;b.b1

执行结果为:            a1

a2    b2

----------------

1      4

5

3      4

5

7      8

9

2      5

6      7

右连接

select a.a1,a.a2,b.b2

from a right outer join b

on a.a2&#61;b.a1

执行结果为:            a1

a2    b2

----------------

1      4

5

3      4

5

7      8

9

7

3

交叉连接

select a.a1,a.a2,b.b2

from a cross join b

执行结果为:           a1

a2    b2

----------------

1      4

3

2      5

3

6      7

3

3      4

3

7      8

3

1      4

5…………..

左连接右连接交叉连接具体问题

查找所有学生情况及他们选修的课程号&#xff0c;若学生未选修任何课&#xff0c;也要包括其情况。

SELECT XSB.* , KCH

FROM XSB LEFT OUTER JOIN CJB ON XSB.XH &#61;

CJB.XH;

查找被选修了的课程的选修情况和所有开设的课程名。

SELECT CJB.* , KCM

FROM CJB RIGHT JOIN KCB ON CJB.KCH&#61; KCB.KCH;

列出学生所有可能的选课情况。

SELECT XH, XM, KCH, KCM

FROM XSB CROSS JOIN KCB;

求选修101课程的学生的平均成绩。

SELECT AVG(CJ) AS 课程101平均成绩

FROM CJB

WHERE KCH&#61;&#39;101&#39;;

求选修101课程的学生的最高分和最低分。

SELECT MAX(CJ) AS 课程101的最高分, MIN(CJ) AS 课程101的最低分

FROM CJB

WHERE KCH&#61;&#39;101&#39;;

求学生的总人数。

SELECT COUNT(*) AS 学生总数

FROM XSB;

求选修了课程的学生总人数。

SELECT COUNT(DISTINCT XH) AS 选修了课程的总人数

FROM CJB;

统计离散数学课程成绩在85分以上的人数。

SELECT COUNT(CJ) AS 离散数学85分以上的人数

FROM CJB

WHERE CJ>&#61;85 AND KCH&#61;

( SELECT KCH

FROM KCB

WHERE

KCM&#61; &#39;离散数学&#39;

);

将XSCJ数据库中各专业输出。

SELECT ZY AS 专业

FROM XSB

GROUP BY ZY;

求XSCJ数据库中各专业的学生数。

SELECT ZY AS 专业,COUNT(*) AS 学生数

FROM XSB

GROUP BY ZY;

求被选修的各门课程的平均成绩和选修该课程的人数。

SELECT KCH AS 课程号, AVG(CJ) AS 平均成绩,COUNT(XH) AS 选修人数

FROM CJB

GROUP BY KCH;

HAVING子句

查找XSCJ数据库中平均成绩在85分以上的学生的学号和平均成绩。

SELECT XH AS 学号, AVG(CJ) AS 平均成绩

FROM CJB

GROUP BY XH

HAVING AVG(CJ)>&#61;85;

查找选修课程超过两门且成绩都在80分以上的学生的学号

SELECT XH AS 学号

FROM CJB

WHERE CJ>&#61;80

GROUP BY XH

HAVING COUNT(*) > 2;

查找通信工程专业平均成绩在85分以上的学生的学号和平均成绩

SELECT XH AS 学号,AVG(CJ) AS 平均成绩

FROM CJB

WHERE XH IN

( SELECT XH

FROM XSB

WHERE ZY&#61; &#39;通信工程&#39;

)

GROUP BY XH

HAVING AVG(CJ) > &#61;85;

将通信工程专业的学生按出生时间先后排序。

SELECT *

FROM XSB

WHERE ZY&#61; &#39;通信工程&#39;

ORDER BY CSSJ;

将计算机专业学生的“计算机基础”课程成绩按降序排列。

SELECT XM AS 姓名, KCM AS 课程名, CJ AS 成绩

FROM XSB, KCB, CJB

WHERE XSB.XH&#61;CJB.XH AND CJB.KCH&#61; KCB.KCH

AND KCM&#61; &#39;计算机基础&#39; AND ZY&#61; &#39;计算机&#39;

ORDER BY CJ DESC;

查找xs表中学号最靠前的5位学生的信息。

select 学号, 姓名, 专业名, 性别, 出生日期, 总学分

from xs

order by 学号

limit 5;

--11.统计每个学生的选课门数,并按选课门数的递增顺序显示结果。 SELECT student.Sname 学生姓名,student.Sno 学生学号,COUNT(SC.Sno) 选课门数 FROM student inner join SC ON SC.Sno&#61;student.Sno GROUP BY

student.Sname,student.Sno ORDER BY COUNT(SC.Sno) ASC

select student.sname,sc.sno,count(cno) cc

from sc inner join student

on sc.sno&#61;student.sno

group by sno

order by cc asc;



推荐阅读
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • 电话号码的字母组合解题思路和代码示例
    本文介绍了力扣题目《电话号码的字母组合》的解题思路和代码示例。通过使用哈希表和递归求解的方法,可以将给定的电话号码转换为对应的字母组合。详细的解题思路和代码示例可以帮助读者更好地理解和实现该题目。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 本文介绍了一种解析GRE报文长度的方法,通过分析GRE报文头中的标志位来计算报文长度。具体实现步骤包括获取GRE报文头指针、提取标志位、计算报文长度等。该方法可以帮助用户准确地获取GRE报文的长度信息。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
author-avatar
henrysong
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有