结构化查询语言SQL(上)

一、介绍

SQL(structured query language),作为非过程性语言,支持数据操作、用于描述数据的动态特性。

主要功能(4个):

数据定义语言Data Definition Language(DDL)

数据查询语言Data Query Language(DQL)

数据操纵语言Data Manipulation language(DML)

数据控制语言Data Control Language(DCL)

SQL核心: 从一个或多个表中返回指定记录的SELECT语句

二、数据查询语言

SQL子句执行操作是否必需
SELECT列出查询的字段
FROM列出包含查询字段或查询条件字段的表
WHERE指出查询条件
ORDER BY对结果排序,指出排序的依据
GROUP BY在包含聚合函数的SQL语句中,列出未在SELECT子句中汇总的字段仅在存在这类字段时才是必须的
HAVING在包含聚合函数的SQL语句中,指定应用于在SELECT语句中汇总的字段的条件

eg.

查询学生的姓名和年龄

SELECT 姓名,year(now())-year(出生日期) AS 年龄 FROM student;

查询student中所有的字段和记录

SELECT * FROM student;

*  代表全部

查询已经选课的学生的学号

SELECT DISTINCT 学号 FROM grade;

DISTINCT 去重

所有课程的学分增加50%,重新计算各门课程的新学分并列出清单

SELECT 课程姓名,INT(学分*(1+0.5))AS 新学分 FROM course;

查询会计学院学生的学号、姓名和所属院系属性

SELECT 学号,姓名,所属院系 FROM student WHERE 所属院系="会计学院";

查询会计学院的非党员学生

SELECT 学号,姓名,所属院系,政治面貌 FROM student

        WHERE 所属院系="会计学院" and 政治面貌<>"党员";

<>表示非

查询成绩在60分以下(不包括60分)、90分以上(含90分)学生的学号和成绩

SELECT 学号,成绩 FROM grade WHERE 成绩<60 or 成绩>=90;

查询教师中所有党员记录

SELECT * FROM student WHERE 是否党员=true;

字段类型为是/否型时,用true

查询所有信息学院和会计学院的学生信息

SELECT * FROM student WHERE 所属院系 IN('信息学院','会计学院');

查询所有选修了课程,但没有参加考试(成绩为“空”)的学生学号

SELECT 学号 FROM grade WHERE 成绩 IS NULL;

查询课程名中最后两个字是“管理”的课程信息

SELECT * FROM course WHERE 课程名称 LINK '*管理’;

LINK 包含

意义样例
字符范围LINK [a-z]
范围之外LINK [! a-z]
非数字LINK [!0-9]
组合字LINK a[!b-m]#

多表查询

查询所有选修了的课程,但没有参加考试的学生的所属院系、姓名、课程名称和成绩

SELECT  所属院系,姓名,课程名称,成绩

 FROM student,course,grade,schedule

                WHERE student.学号 = grade.学号

                        AND grade.课程ID = schedule.课程ID

                        AND schedule.课程编号 = course.课程编号

                        AND 成绩 IS NULL;

       

查询经济学院开设的学分为2~4(含2和4)的所有课程的课程名称、学分和所属院系

SELECT DISTINCT 课程名称,学分,所属院系

        FROM teacher,course,schedule

                WHERE teacher.教师编号 = schedule.教师编号

                        AND schedule.课程编号 = course.课程编号

                        AND 所属院系="经济学院"

                        AND 学分 BETWEEN 2 AND 4;

  • 18
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值