绍兴微网站建设,个人做门户网站需要注册,管理系统登录,杭州江干网站建设DML数据操纵语言#xff0c;处理对象是数据本身。 DDL数据定义语言#xff0c;处理对象是数据表的结构。
数据库中数据处理主要包括增删改查。查询属于重点部分。 假设数据库中有表#xff1a;
student(sno,sname,sex,class); #学生#xff08;学号#xff0c;姓名…DML数据操纵语言处理对象是数据本身。 DDL数据定义语言处理对象是数据表的结构。
数据库中数据处理主要包括增删改查。查询属于重点部分。 假设数据库中有表
student(sno,sname,sex,class); #学生学号姓名性别班级学号为主键
course(cno,cname,teacher); #课程课程号课程名教师课程号为主键
sc(sno,cno,score); #学习学号课程号分数学号和课程号为主键1. 增加INSERT 向一个表格中插入一条数据。注意非空且无默认值的属性必须插入数据。 语句格式 INSERT INTO 表名 [(列名)]VALUES (数据);(1) 插入单条数据
INSERT INTO student
VALUES (20240101,张三,男,2024级计算机科学与技术1班);(2)插入多条数据
INSERT INTO course
VALUES (C01,数据库管理,teacher1),(C02,数据结构,teacher2),(C03,C语言程序基础,teacher3);(3)插入子查询结果 把平均成绩大于80分的学生的学号和平均成绩存入另一个的基本表stud_good(sno,avg_score)中。
INSERT INTO stud_good(sno,avg_score)
SELECT sno,AVG(score)
FROM sc
GROUP BY sno
HAVING AVG(scors)80;2. 删除DELETE
删除现有表或视图中的一行或多行记录。 语句格式 DELTET FROM 表名 [WHERE 条件表达式];(1)删除单条数据
DELETE FROM student
WHERE sno20240101;(2)删除多条数据 删除计算机科学与技术1班所有学生的成绩
DELETE FROM sc
WHERE sno IN (SELECT snoFROM studentWHERE class计算机科学与技术1班)4. 修改UDPATE
修改数据表中的单个数据或多条数据。通过设置条件进行选定修改的数据。 语句格式
UPDATE 表名
SET 列名1表达式1 [,列名2表达式2]
[WHERE 条件表达式];举个栗子 将计算机科学与技术1班学生成绩全部置0。
UPDATE sc
SET score0
WHERE sno IN (SELECT snoFROM studentWHERE class计算机科学与技术1班)5. 查询SELECT
查询语句较多第一类是单表查询条件书写比较简单。第二类是多表查询需要进行连接操作。
1单表查询 语法格式
SELECT [ALL|DISTINCT] 列名1 [AS 显示列名]
FROM 表名|视图名 [LIMIT [M,] N]
[WHERE 条件表达式];ALL和DISTINCT设置显示全部信息或去重后的信息。 列名必须有AS后跟显示列名。比如sno表示学号使用AS后列名显示‘学号’但是内容是sno中的信息。*表示数据表的全部列。 LIMIT设置结果的前N行或从M行开始的前N行。 WHERE设置查询满足条件的记录。 注意数字类型数据可直接写除此之外的都需要用单引号‘’。
WHERE条件语句运算符
查询条件运算符含义比较运算符、、、、、!、!、!数据大小多少逻辑运算符AND、OR、NOT逻辑或、与、非范围运算符BETWEEN AND、NOT BETWEEN AND数据是否在某一范围内字符匹配符LIKE、NOT LIKE字符串是否满足某种格式通配符%匹配任意多个字符、_匹配单个字符列表运算符IN、NOT IN是否在某一查询结果的列表中空值IS NULL、 IS NOT NULL数据是否为空值
聚集函数----统计数据 COUNT、AVG、SUM、MAX、MIN
分组筛选----按照某一列进行分组
[GOURP BY 列名清单 [HAVING 条件表达式]]通常结合聚集函数进行使用比如统计个数统计平均数。举个栗子查询超过35人的班级的人数。
SELECT class,COUNT(*) AS 人数
FROM student
GROUP BY class
HAVING COUNT(*)35;注意WHERE条件查询和HAVING条件查询的区别。WHERE作用于被查询的表HAVING作用于结果组选择满足条件的组。
结果排序----按照某规则进行排序 对查询结果按照某一列进行排序ASC表示升序DESC表示降序。多列排序亦可。
ORDER BY 列名1 [ASC|DESC] [,列名2] [ASC|DESC]举个栗子查询全体学生的信息查询结构按班级进行升序排序同一个班级内按照学号进行降序排序。
SELECT *
FROM student
ORDER BY class ASC, sno DESC;2多表连接查询
多表连接查询在查询的时候涉及到两个或以上的表格。通常分为交叉连接、内连接、自连接和外连接。外连接分为左连接、右连接和全外连接。
交叉连接笛卡尔连接 两个表做笛卡尔积运算分别连接A表有M个数据B表有N个数据交叉连接后有MN条记录。
语法格式
SELECT [ALL|DISTINCT] [别名.]选项1 [AS 显示列名]
FROM 表名1 [别名1], 表名2 [别名2];内连接交叉连接中选取满足条件的记录
语法格式
SELECT [ALL|DISTINCT] [别名.]选项1 [AS 显示列名]
FROM 表名1 [别名1], 表名2 [别名2]
WHERE 连接条件表达式 [AND 条件表达式];SELECT [ALL|DISTINCT] [别名.]选项1 [AS 显示列名]
FROM 表名1 [别名1] INNER JOIN 表名2 [别名2] ON 连接条件表达式
WHERE 条件表达式;两种格式都是可以使用的连接条件表达式一般可以设置两个表中的某些数据必须相同比如学号相同。 条件表达式可以加以限制其他的比如成绩高于80分。
自连接
连接操作一般选用两个不同的表格对于一个表格可以和自身连接自连接在逻辑上看成两个表。注意必须设置别名。 语法格式
SELECT [ALL|DISTINCT] [别名.]选项1 [AS 显示列名]
FROM 表名1 [别名1], 表名1 [别名2]
WHERE 连接条件表达式 [AND 条件表达式];举个栗子查询同时选修了C01和C04课程学生的学号
SELECT A.sno
FROM sc A, sc B
WHERE A.snoB.sno
AND A.cnoC01
AND B.cnoC04;外连接
自然连接中只有在两个表中匹配的行才在结果中显示在外连接中可以置限制其中一个表格或者两个表格都不加限制。
语法格式
SELECT [ALL|DISTINCT] [别名.]选项1 [AS 显示列名]
FROM 表名1 [别名1] LEFT|RIGHT|FULL [OUTER] JOIN 表名1 [别名2]
ON 表名1.列1表名2.列2;3嵌套查询
一个SELECT FROM WHERE语句为一个查询块。将一个查询块嵌套在另一个查询WHERE子句中或HAVING子句中。
嵌套子查询嵌套子查询的执行不溢利阿语外部嵌套。首先执行子查询结果不显示出来作为外层查询的条件来使用。子查询只执行一次即可作为外层父查询的条件。
举个栗子查询没有选秀高等数学的学生学号和姓名
SELECT sno,sname
FROM student
WHERE sno NOT IN (SELECT snoFROM scWHERE cno IN (SELECT cnoFROM courseWHERE cname高等数学);相关子查询子查询的执行依赖于父查询。 执行过程 ①子查询为父查询的每一个元组行执行一次父查询将子查询引用列的值传递给子查询。 ②如果子查询的任何行与其匹配则父查询取该行存入结果中 ③回到①直到处理完外部表的每一行。
举个栗子查询所有选修了C01课程的学生姓名
SELECT sname
FROM student
WHERE EXISTS (SELECT *FROM scWHERE snostudent.snoAND cno01);