栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

MySQL数据库学习资料(十)

MySQL数据库学习资料(十)

对之前所学的SQL语句进行总结,下面是一些实例操作:

查询student表中所有学生的全部的信息

SELECt * FROM my_db.student;

查询student表中所有同学的姓名,性别,所在系

USE my_db;

SELECt sname, ssex, sdept FROM student;

查询student表中所有同学的姓名,并在sname前面都加上‘姓名’

SELECt '姓名', sname FROM student;

查询student表中所有同学的姓名和年龄

SELECt '姓名', sname,'年龄',TIMESTAMPDIFF(DAY,sbirthday, CURDATE()) AS AGE

FROM student;

查询student表中是计算机系的同学的姓名和所在系

SELECt sname, sdept FROM student WHERe sdept = '计算机系';

查询student表中所有性别为女的同学的所有信息

SELECt * FROM student WHERe ssex = '女';

查询student表中生日在'1997-01-01' 到 '1997-12-31'的同学的全部信息

SELECt * FROM student WHERe sbirthday BETWEEN '1997-01-01' AND '1997-12-31';

查询student表中生日不在'1997-01-01' 到 '1997-12-31'的同学的全部信息

SELECt * FROM student

WHERe sbirthday NOT BETWEEN '1997-01-01' AND '1997-12-31';

查询course表中学分小于2或者大于3的课名,学分,学期

SELECt cname, credit, semester FROM course

WHERe credit < 2 OR credit >3;

查询course表中学分小于2或者大于3的课名,学分,学期

SELECt cname, credit, semester FROM course

WHERe credit NOT BETWEEN 2 AND 3;

查询计算机系或机电系的同学的学号,姓名,所在系

SELECt sno, sname, sdept

FROM student

WHERe sdept IN ('计算机系', '机电系');

查询不是计算机系和机电系的同学的学号,姓名,所在系

SELECt sno, sname, sdept

FROM student

WHERe sdept NOT IN ('计算机系', '机电系');

查询姓李的同学的学号,姓名,所在系

SELECt sno, sname, sdept

FROM student

WHERe sname LIKE '李%';

查询名字第二字是‘冲’的同学的学号,姓名,所在系

SELECt sno, sname, sdept

FROM student

WHERe sname LIKE '_冲%';

查询学号不以3结尾也不以2结尾的同学的学号,姓名,所在系

SELECt sno, sname, sdept

FROM student

WHERe sno NOT LIKE '%3' and sno NOT LIKE '%2';

查询成绩还没有出来(成绩为空)的同学的学号,课程号

SELECt sno, cno

FROM sc

WHERe grade IS NULL;

查询备注不为空的同学的学号,姓名,备注

SELECt sno, sname, memo

FROM student

WHERe memo IS NOT NULL;

查询备注不为空并且是机电系的同学的学号,姓名,所在系,备注

SELECt sno, sname, sdept, memo

FROM student

WHERe memo IS NOT NULL AND sdept ='机电系';

查询成绩小于60的同学的学号

SELECt sno

FROM  sc

WHERe Grade < 60;

查询成绩小于60的同学的学号,并且去掉重复的学号

SELECt DISTINCT sno

FROM  sc

WHERe Grade < 60;

查询课程号为‘C01’的课程号和成绩,并且按成绩从高到低(降序)排,默认为降序DESC

SELECt cno, grade

FROM sc

WHERe cno='C01'

ORDER BY grade;

查询学号为‘060101’的同学的课程号和成绩,并按成绩降序排列,空值放最后

SELECt cno, grade

FROM sc

WHERe sno = '060101'

ORDER BY grade DESC;

查询学生总人数,数总记录数

SELECt COUNT(*) as '学生总人数'

FROM student;

查询本列的属性值数,按sno数记录数,并去掉重复的sno

SELECt COUNT(distinct sno) as '本列属性值数'

FROM sc;

查询学号为‘060101’的同学的总成绩,sum(grade)把grade的值加起来

SELECt  sum(grade)  as 总成绩

FROM sc

WHERe sno='060101';

查询学号为‘060101’的同学的平均分,AVG(grade)求grade的平均分

SELECt  AVG(grade)  as 平均分

FROM sc

WHERe sno='060101';

查询所有课目中单科成绩最高分

SELECt  MAX(grade)  as 最高分

FROM sc;

查询所有课目中单科成绩最低分

SELECt  MIN(grade)  as 最低分

FROM sc;

查询课程号为‘C01’的课程的最高分和最低分

SELECt MAX(grade) as 最高分, MIN(grade) as 最低分

FROM sc

WHERe cno = 'C01';

以课程号分组,统计每一组的选课人数

SELECt cno AS 课程号, COUNT(sno) AS 选课人数

FROM sc

GROUP BY cno;

以学号分组,查询每一个同学的学号,选课门数,平均成绩

SELECt sno 学号,count(cno) 选课门数,avg(grade) 平均成绩

from sc

group by sno;

查询性别为‘男’的同学,以sdept分组,统计每一个sdept的男生人数

SELECt sdept, COUNT(*) AS 男生人数

FROM student

WHERe ssex='男'

GROUP BY sdept;

查询选课门数大于3的同学按学号分组,统计学号和选课门数

SELECt sno 学号, COUNT(*)  AS 选课门数

FROM sc

GROUP BY sno

HAVINg COUNT(*) >3;

以sdept分组,查询在计算机系或者机电系中系的总人数

SELECt sdept, COUNT(*)

FROM student

GROUP BY sdept

HAVINg sdept IN ('计算机系','机电系');

以sdept分组,查询在计算机系或者机电系中系的总人数

SELECt sdept, COUNT(*)

FROM student

WHERe sdept IN('计算机系','机电系')

GROUP BY sdept;

查询mysql当前版本和当前时间

SELECt VERSION(), CURRENT_DATE;

查询当前数据库名

SELECT DATAbase();

查询当前数据库下有哪些表

SHOW TABLES;

查看sc这个表的构成,字段,数据类型,空值,主键,默认值等

DESCRIBE sc;

查看可以导入本地数据开关是否打开

SHOW GLOBAL VARIABLES LIKE 'local_infile';

把student表和sc表根据sno合成一个大表,查询全部信息(会重复两次sno字段)

SELECT *

FROM student

INNER JOIN sc

ON student.sno=sc.sno;

把student表和sc表根据sno合成一个大表,查询部分信息(只出现一次sno字段)

SELECt student.sno,sname,ssex,sbirthday,sdept,memo,cno,grade

FROM student INNER JOIN sc

ON student.sno = sc.sno;

将student,sc和course三个表连起来,查询计算机系且选了数据库原理的同学

SELECt sname, cname, grade

FROM student S

INNER JOIN sc ON S.sno=sc.sno

INNER JOIN course C ON sc.cno=c.cno

WHERe sdept='计算机系' AND cname='数据库原理';

将student,sc和course三个表连起来,查询选了数据库原理的同学的姓名和所在系

SELECt sname,sdept

FROM student AS s INNER JOIN sc ON s.sno = sc.sno

INNER JOIN course AS c ON sc.cno = c.cno

WHERe cname = '数据库原理';

将student和sc连接起来,查询每个系的平均分

SELECt sdept, AVG(grade)

FROM student  s INNER JOIN sc

ON s.sno=sc.sno

GROUP BY sdept;

三表连接,查询课程名,选课人数,平均分,最高分,最低分

SELECt c.cname,COUNT(sc.cno) 选课人数,AVG(grade),MIN(grade),MAX(grade)

FROM student AS s INNER JOIN sc ON s.sno=sc.sno

INNER JOIN course AS c ON c.cno = sc.cno

WHERe sdept = '计算机系'

GROUP BY sc.cno;

查询数据库原理的先修课

SELECt c1.cname 课程名, c2.cname 先修课程名

FROM course c1 INNER JOIN course c2

ON c1.precno = c2.cno

WHERe c1.cname="数据库原理";

查询所有课程的先修课

SELECt c1.cname 课程名, c2.cname 先修课程名

FROM course c1 INNER JOIN course c2

ON c1.precno = c2.cno;

左连接

SELECt s.sno, sname, sdept, sc.cno

FROM student S LEFT JOIN sc

ON s.sno=sc.sno

WHERe sdept='计算机系';

右连接

SELECt s.sno, sname, sdept, sc.cno

FROM student S RIGHT JOIN sc

ON s.sno=sc.sno

WHERe sdept='计算机系';

左连接查询sc表中的cno为空的同学的课程名和学号

SELECt cname, sc.sno

FROM course  c LEFT JOIN sc

ON c.cno=sc.cno

WHERe sc.cno IS NULL;

左连接查询同学的课程名和学号

SELECt cname, sc.sno

FROM course  c LEFT JOIN sc

ON c.cno=sc.cno;

-- 在MySQL,两个-加上一个空格可以注释

查询和钟文辉同学在同一个系的同学的信息

SELECt sno, sname, ssex, sdept

FROM student

WHERe sdept IN

       (SELECt sdept

       FROM student

       WHERe sname="钟文辉");

查询c04课程得分大于平均分的同学的信息

SELECt sno, cname, grade

FROM sc INNER JOIN course c ON sc.cno=c.cno

WHERe sc.cno='c04' and grade>

(SELECt AVG(grade)

FROM sc

WHERe cno='C04');

查询高等数学最高分同学的学号

SELECt sno

FROM sc

WHERe grade =

(SELECt MAX(grade)

FROM course INNER JOIN sc

ON course.cno=sc.cno

WHERe cname='高等数学');

查询c04课程中分数大于所有c03的同学的学号

SELECt sno, grade

FROM sc

WHERe cno='C04' AND grade > ALL

(SELECt grade

FROM sc

WHERe cno='C03');

查询分数大于C03最高分q且选了C04课程的同学的学号和成绩

SELECt sno, grade

FROM sc

WHERe cno='C04' AND grade >

(SELECt MAX(grade)

FROM sc

WHERe cno='C03');

查询选了C04课程且有比任意一位C03同学的分数高的同学的学号和成绩

SELECt sno, grade

FROM sc

WHERe cno='C04' AND grade > ANY

(SELECt grade

FROM sc

WHERe cno='C03');

查询两个表(计算机系的同学和机电系的同学)上下连接起来

(SELECt sno, sname, ssex, sdept

FROM student

WHERe sdept='计算机系')

UNIOn

(SELECt sno, sname, ssex,sdept

FROM student

WHERe sdept='机电系');

查询计算机系的同学或者机电系的同学

SELECt sno, sname, ssex, sdept

FROM student

WHERe sdept IN ('计算机系' ,'机电系');

查询两个表(选了C03课程的前三名和选了C04课程的前三名)上下连接起来

(SELECt sno, cno, grade

FROM sc

WHERe cno='c03'

ORDER BY grade DESC

LIMIT 3)

UNIOn

(SELECt sno, cno, grade

FROM sc

WHERe cno='c04'

ORDER BY grade DESC

LIMIT 3);

插入李明这个信息,没添加字段,所以按顺序插入

INSERT INTO student

VALUES

('070308','李明','男','1998-07-02','信息管理系',null);

插入李明这个信息,添加字段,所以可以按字段顺序插入

INSERT INTO student

    (sno, sname, ssex, sdept, sbirthday, memo)

    VALUES

('070308','李明','男','信息管理系','1998-07-02',null);

更新表,把机电系的所有学生的性别改成女的

UPDATe student SET ssex='女' WHERe sdept='机电系';

修改表,给student这个表添加一个字段sroom数据类型为INT

ALTER TABLE student ADD sroom INT;

修改表,把student这个表中sroom字段的数据类型改为CHAR(3)

ALTER TABLE student MODIFY sroom CHAr(3);

修改表,把student这个表中sroom字段删掉

ALTER TABLE student DROP sroom;

创建或者替换视图,查询相应的内容

CREATE OR REPLACE VIEW dingming

AS (SELECT sname,sno FROM student)

WITH CHECK OPTION;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/335023.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号