数据操纵语言
mysql数据库常用语句大全

mysql数据库常用语句SQL分类:DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)首先,简要介绍基础语句:1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建备份数据的deviceUSE masterEXEC sp_addumpdevice ’disk’, ’testBack’, ’c:mssql7backupMyNwind_1.dat’--- 开始备份BACKUP DATABASE pubs TO testBack4、说明:创建新表create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)根据已有的表创建新表:A:create table tab_new like tab_old (使用旧表创建新表)B:create table tab_new as select col1,col2… from tab_old definition only5、说明:删除新表:drop table tabname6、说明:增加一个列:Alter table tabname add column col type注:列增加后将不能删除。
DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar 类型的长度。
7、说明:添加主键:Alter table tabname add primary key(col)说明:删除主键:Alter table tabname drop primary key(col)8、说明:创建索引:create [unique] index idxname on tabname(col….)删除索引:drop index idxname注:索引是不可更改的,想更改必须删除重新建。
数据操纵语言

SQL的数据修改功能:删除操作
命令
delete from 表名 [where 条件表达式] where 从表中删除符合条件的元组,如果没有 where语句,则删除所有元组
示例
清除所有选课记录 delete from SC
删除操作
删除王明老师所有的任课记录
delete from PC where PNO in (select PNO from PROF where PNAME = “王明”)
SQL的数据修改功能:插入操作
命令 insert into 表名 [(列名[,列名]…] values (值 [,值]…) 插入一条指定好值的元组 insert into 表名 [(列名[,列名]…] (子查询) 插入子查询结果中的若干条元组 示例
Insert into A (select * from A) 如果表A中包含一行数据,则每次执行数据增加 一倍
4.2.3 UPDATE语句 UPDATE 语 句 用 来 修 改 表 中 的 数 据 。 每 个 UPDATE语句可以修改一行或多行数据,但每 次仅能对一个表进行操作。 1. UPDATE语句的格式 UPDATE table_name SET column_name=expression [FROM table_source] [WHERE search_conditions]
update PROF set case When SAL > 2000 then SAL * 0.9 when SAL <= 2000 then SAL * 0.95 end Where ….. SAL =
基本表的定义
基本表的定义(CREATE)
格式
create table 表名( 列名 数据类型 [default 缺省值] [not null default not null] [,列名 数据类型 [default 缺省值] [not default not null]] null …… [,primary key primary key(列名 [,列名] …)] [,foreign key (列名 [,列名] …) foreign references 表名 (列名 [,列 名] …)]
计算机答辩面试题及答案

计算机答辩面试题及答案一、简述计算机操作系统的主要功能。
答:计算机操作系统的主要功能包括:1. 进程管理:负责创建、调度、同步和终止进程。
2. 内存管理:负责分配、回收和管理内存资源。
3. 文件系统管理:负责文件的创建、删除、读写和目录管理。
4. 设备管理:负责分配和控制硬件设备。
5. 用户接口:提供用户与操作系统交互的界面,如命令行和图形用户界面。
6. 安全管理:负责系统的安全性,包括用户认证、授权和数据保护。
二、解释计算机网络中的TCP/IP协议。
答:TCP/IP协议是一组用于互联网通信的协议集合,它定义了电子设备如何在网络上进行数据交换。
TCP/IP协议包括:1. 网络接口层:负责将IP数据包封装成帧,通过物理网络发送。
2. 互联网层:主要协议是IP协议,负责数据包的寻址和路由。
3. 传输层:主要协议是TCP和UDP,负责提供端到端的数据传输服务。
4. 应用层:包括各种网络应用程序使用的协议,如HTTP、FTP、SMTP 等。
三、描述数据库管理系统(DBMS)的基本组成。
答:数据库管理系统(DBMS)的基本组成包括:1. 数据定义语言(DDL):用于定义数据库结构,如表、视图和索引。
2. 数据操纵语言(DML):用于访问和修改数据库中的数据。
3. 数据控制语言(DCL):用于定义数据的安全性和完整性。
4. 数据查询语言(DQL):如SQL,用于查询和检索数据库中的数据。
5. 数据库引擎:负责数据的存储、检索和维护。
6. 事务管理:确保数据库操作的原子性、一致性、隔离性和持久性。
四、阐述云计算服务的三种主要类型。
答:云计算服务的三种主要类型包括:1. 基础设施即服务(IaaS):提供虚拟化的计算资源,如服务器、存储和网络。
2. 平台即服务(PaaS):提供应用程序开发和部署的平台,包括操作系统、数据库和开发工具。
3. 软件即服务(SaaS):通过互联网提供应用程序,用户可以直接使用而无需安装和维护。
DML(Data Manipulation Language)数据操纵语言

DML(Data Manipulation Language)数据操纵语言命令使用户能够查询数据库以及操作已有数据库中的数据。
如insert,delete,update,select(插入、删除、修改、检索)等都是DML.
INSERT 陈述式
用来在资料表或检视表中插入一列资料。例如,如果要在Customer_Data 资料表中新增一个客户,可使用类似以下的 INSERT 陈述式:
INSERT INTO Customer_Data
VALUES (777, "Frankie", "Stein", "4895873900")
注意:如果使用这种形式的 INSERT 陈述式,但被插入的数值次序上与建立资料表时不同,数值将被放入错误的资料行。如果资料的型别与定义不符,则会收到一个错误讯息。
E 陈述式
DELETE 陈述式用来删除资料表中一列或多列的资料,您也可以删除资料表中的所有资料列。要从 Customer_Data 资料表中删除所有的列,您可以利用下列陈述式:
DELETE FROM Customer_Data
或
DELETE Customer_Data
UPDATE Customer_Data
SET phone= 02145896352
WHERE customer_id = 100;
与之相关的概念:DDL
DDL(Data Definition Language)语句用语定义和管理数据库中的对象,如Create,Alter和Drop.
UPDATE陈述式
用来对资料表中的一行或多行进行数据的修改,您也可以修改资料表中的所有资料行。要从Customer_Data资料表中更改所有行,您可以利用下列陈述式:
《数据库原理及应用》第五章SQL查询

SQL语言
SQL功能 命令动词
数据查询
数据定义 数据操纵
SELECT
CREATE、DROP、ALTER INSERT、UPDATE、DELETE
数据控制
GRANT、REVOKE
SQL语言
SQL语言的优点在于SQL不是面向过程的 语言,使用SQL语言只需描述做什么,而 不需要描述如何做,为使用者带来极大的 方便。本章将以讨论SQL的数据查询语言 为主,同时介绍数据定义语言和数据操纵 语言。本章中大部分例题使用“学生管理” 数据库,并假定数据库在Access的当前目录 下。
简单查询----选择记录
WHERE子句通过指定查询条件,可以在表中找出满足条件 的记录。查询条件可以是任意复杂的逻辑表达式。 当WHERE子句需要指定一个以上的查询条件时,要使用逻 辑运算符AND、OR和NOT将其连接成复合的逻辑表达式。 其优先级由高到低为:NOT、AND、OR,可以使用括号改 变优先级。 条件查询还可以使用LIKE或NOT LIKE进行部分匹配查询。* 表示任意长度的字符串;?表示任意单个字符。 在查询中还可以使用查询谓词,查询谓词IN 和NOT IN用于 检索属于(IN)或不属于(NOT IN)指定集合的记录。 例10 查询成绩在60分以下(不包括60分)、90分以上(含 90分)学生的学号。
连接查询(多表查询)
例13 查询会计系学生选修课程及成绩,要求查询结果中含 属性学号、姓名、课程名称和成绩。 SELECT student.学号,姓名,课程名称,成绩 FROM student,course,grade WHERE 所属院系='会计学院' and student.学号=grade. 学号 and grade.课程编号=course.课程编号 这个查询涉及到两个表,查询所要求的结果来自两个表,查 询的条件也涉及到两个表,所以有“FROM student,grade”; 这两个表之间是有联系的,这种联系是通过父表的主关键字 (student中的学号)和子表的外部关键字(grade表的学号) 建立的,所以有命令子句WHERE中的筛选条件“student. 学号=grade.学号”。 由于student表和grade表都有学号属性,因此在SELECT子 句中要用前缀的形式“student.学号”指明取自哪个表中的 学号;此例中用“grade.学号”的形式,查询结果是一样的。
SQL教程

SQL语句结构1.结构化查询语言包含6个部分:一:数据查询语言(DQL:Data Query Language):其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。
保留字SELECT 是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。
这些DQL保留字常与其他类型的SQL语句一起使用。
二:数据操作语言(DML:Data Manipulation Language):其语句包括动词INSERT,UPDATE和DELETE。
它们分别用于添加,修改和删除表中的行。
也称为动作查询语言。
三:事务处理语言(TPL):它的语句能确保被DML语句影响的表的所有行及时得以更新。
TPL语句包括BEGIN TRANSACTION,COMMIT 和ROLLBACK。
四:数据控制语言(DCL):它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。
某些RDBMS 可用GRANT或REVOKE控制对表单个列的访问。
五:数据定义语言(DDL):其语句包括动词CREATE和DROP。
在数据库中创建新表或删除表(CREAT TABLE或DROP TABLE);为表加入索引等。
DDL包括许多与人数据库目录中获得数据有关的保留字。
它也是动作查询的一部分。
六:指针控制语言(CCL):它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。
SQL简介SQL是关系数据库系统的标准语言。
所有关系数据库管理系统(RDMS),如MySQL、MS Access、Oracle、Sybase、Informix、Postgres和SQL Server都使用SQL作为它们的标准数据库语言。
2.SQL标准命令与关系数据库交互的标准SQL命令是CREATE,SELECT,INSERT,UPDATE,DELETE 和DROP,简单分为以下几组:DDL(数据定义语言)数据定义语言用于改变数据库结构,包括创建、更改和删除数据库对象。
常用经典SQL语句大全完整版-权威人士总结出的-详解+实例

下列语句部分是Mssql语句,不可以在access中使用。
SQL分类:DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)首先,简要介绍基础语句:1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建备份数据的deviceUSE masterEXEC sp_addumpdevice ‟disk‟, ‟testBack‟, ‟c:\mssql7backup\MyNwind_1.dat‟--- 开始备份BACKUP DATABASE pubs TO testBack4、说明:创建新表create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)根据已有的表创建新表:A:create table tab_new like tab_old (使用旧表创建新表)B:create table tab_new as select col1,col2… from tab_old definition only5、说明:删除新表:drop table tabname6、说明:增加一个列:Alter table tabname add column col type注:列增加后将不能删除。
DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:添加主键:Alter table tabname add primary key(col)说明:删除主键:Alter table tabname drop primary key(col)8、说明:创建索引:create [unique] index idxname on tabname(col….)删除索引:drop index idxname注:索引是不可更改的,想更改必须删除重新建。
数据库—SQL语言

数据库—SQL语⾔1 SQL 基本概念1.1 SQL 概念及分类定义:SQL是Structured Query Language的缩写,意思是结构化查询语⾔,是⼀种在数据库管理系统中查询或对数据库⾥⾯的数据进⾏更改的语⾔主流数据库管理系统关系型数据库MySQLOraclePostgre SQLSQL Server⾮关系型数据库redismongo DB数据定义语⾔DDL(Data Ddefinition Language)SQL 数据定义语⾔主要⽤来定义逻辑结构,包括定义基表,视图和索引删除表定义表修改表数据查询语⾔DQL(Data Query Language)SQL 的数据查询语⾔主要⽤来对数据库中的各种数据对象进⾏查询数据操纵语⾔DML(Data Manipulation Language)SQL 的数据操纵语⾔,⽤于改变数据库中的数据,包括插⼊,删除,修改数据控制功能DCL(Data Control Language)SQL 的数据控制语⾔,对表和视图的授权,完整性规则的描述以及事务开始和结束等控制语句1.2 SQL 语⾔的特点综合统⼀:独⽴完成数据库⽣命周期中的全部活动,包括定义关系模式、录⼊数据、建⽴数据库、査询、更新、维护、数据库重构、数据库安全⾼度⾮过程化:⽤户只需提出“做什么”,⽽不必指明“怎么做⾯向集合的操作⽅式:SQL 采⽤集合操作⽅式以同⼀种语法结构提供两种使⽤⽅式:SQL既是⾃含式语⾔,⼜是嵌⼊式语⾔,SQL语句能够嵌⼊到⾼级语⾔程序中语⾔简洁,易学易⽤:SQL 语⾔语法简单,接近英语⼝语1.3 SQL 基本语法1 SQL 数据类型数据类型含义CHAR(n)CHARACTER(n)长度为 n 的定长字符串VARCHAR(n)CHARACTERVARYING(n)最⼤长度为 n 的变长字符串CLOB字符串⼤对象BLOB⼆进制⼤对象INTINTEGER长整数(4 字节)SMALLINT短整数(2 字节)BIGINT⼤整数(8 字节)数据类型含义NUMERIC(p, d)定点数,由 p 位数字(不包括符号、⼩数点)组成,⼩数点后边有 d 位数字DECIMAL(p, d)DEC(p, d)同 NUMERIC REAL取决于机器精度的单精度浮点数DOUBLE PRECISION取决于机器精度的双精度浮点数FLOAT(n)可选精度的浮点数,精度⾄少为 n 位数字FLOAT(n)可选精度的浮点数,精度⾄少为 n 位数字数据类型含义BOOLEAN逻辑布尔值DATE⽇期,包含年、⽉、⽇,格式为 YYYY-MM-DDTIME时间,包含⼀⽇的时、分、秒,格式为 HH:MM:SS TIMESTAMP时间戳类型TIMERVAL时间间隔类型2 模式的定义及删除模式定义语法:CREATE SCHEMA <模式名> AUTHORIZATION <⽤户名>例⼦:CREATE SCHEMA "S-T" AUTHORIZATION WANG;模式定义 + 视图语法:CREATE SCHEMA <模式名> AUTHORZATION <⽤户名> [<表定义⼦句>|<视图定义⼦句>|<授权定义⼦句>];模式删除语法:DROP SCHEMA <模式名><CASCADE|RESTRICT>;CASCADE、RESTRICT两者必须⼆选⼀VASCADE(级联):删除模式的同时也把给模式的所有数据库对象删除RESTRICT(限制):如果该模式下有下属对象(⽐如表视图),则拒绝该删除语句的执⾏3 表的增删改查创建表CREATE TABLE 表名 (字段名类型字段约束, 字段名类型字段约束, 字段名类型字段约束);CREATE TABLE Student (name VARCHAR(20),age INT,sex CHAR(1),);删除表DROP TABLE <表名> [RESTRICT|CASCADE];DROP TABLE Student RESTRICT;修改ALTER TABLE <表名>[ADD [COLUMN] <新列名><数据类型> [完整性约束]][ADD <表级完整性约束>]ALTER TABLE Student ADD S_entrance DATE;ALTER TABLE Student ALTER COLUMN S_age INT;4 索引的增删改查当数据库中数据量巨⼤时,建⽴索引可以减少查询时间,索引可以建⽴在⼀列或多列上建⽴索引CLUSTER:聚簇索引,物理顺序与索引的逻辑顺序相同UNIQUE:唯⼀索引CREATE [UNIQUE] [CLUSTER] INDEX <索引名>ON <表名>(<列名>[<次序>][,<列名> [<次序>]] ...);CREATE UNIQUE INDEX Stusno ON Student(Sno);修改索引ALTER INDEX <旧索引名> RENAME TO <新索引名>;ALTER INDEX SCno RENAME TO SCSno;删除索引DROP INDEX <索引名>DROP INDEX Stusno;2 SQL 的查询假设关系表Student、Course、SC如下:Student学号(Sno)姓名(Sname)性别(Ssex)年龄(Sage)院系(Sdept) 201215121李勇男20CS 201215122刘晨⼥19CS 201215123王敏⼥18MA 201215125张⼒男19ESCourse课程号(Cno)课程名(Cname)先⾏课(Cpno)学分(Ccredit) 1数据库542数学/23信息系统144操作系统635数据结构746数据处理/27Java语⾔64SC学号(Sno)课程号(Cno)成绩(Grade)2012151211922012151212852012151213882012151222902015151223802.1 查询所有列查询Student表中所有列SELECT * FROM Student;2.2 查询部分列查询Student表中的Sno、Ssex列SELECT Sno, Ssex FROM Student;2.3 列取别名查询Student表中的Sno、Ssex列,并将Sno命名为 “学号”,Ssex命名为 “性别”SELECT Sno 学号, Ssex 性别 FREOM Student;SELECT Sno AS 学号, Ssex AS 性别 FROM Student;2.4 表取别名查询Course表中的Cno列,并将查询结果命名为CCSELECT Cno FROM Course AS CC;2.5 查询结果去重查询SC中的Sno列,并将结果去重SELECT DISTINCT Sno AS 课程名 FROM SC;2.6 查询结果加条件查询条件如下:查询条件谓词⽐较=、>、<、<=、>=!=、<>、!>、!<、NOT确定范围BETWEEN ANDNOT BETWEEN AND确定集合IN、NOT IN字符匹配LIKE、NOT LIKE空值IS NULL、IS NOT NULL逻辑运算AND、OR、NOT 查询 SC 表中 Grade ⼤于 88 的信息SELECT * FROM SC WHERE Grade >= 88;查询 SC 表中 Grade 在 85 ~ 95 之间的信息SELECT * FROM SC WHERE Geade BETWEEN 85 AND 95;查询 1 是否包含在 (1,2) 之间SELECT 1 FROM (1, 2);查询 Course 表中包含 “系统” 的课程的课程号,课程名"%" 可以近似多个字符,"_" 只能近似⼀个字符SELECT Cno, Cname FROM Course WHERE Cname LIKE '%系统';查询 Course 中先⾏课为空的信息SELECT * FROM Course WHERE Cpno IS NULL;查询 Course 中学分为 4 分并且先⾏课为 1 的课程的课程名SELECT Cname FROM Course WHERE Ccredit = 3 AND Cpno = 1;查询 Course 中学分为 4 分或 3 分的课程的课程名SELECT Cname FROM Course WHERE Ccredit = 3 OR Ccredit = 4;2.7 聚集函数函数含义COUNT(*)统计元组个数COUNT([DISTINCT|ALL]<列名>)统计⼀列中值的个数SUM([DISTINCT|ALL]<列名>)计算⼀列值的总和AVG([DISTINCT|ALL]<列名>)计算⼀列值的平均值MAX([DISTINCT|ALL]<列名>)计算⼀列值中的最⼤值MIN([DISTINCT|ALL]<列名>)计算⼀列值中的最⼩值注:DISTINCT是去除重复的值查询 CS 表中 Grade 的个数(去重)、总和、平均值、最值SELECT COUNT(*) FROM SC;SELECT COUNT(DISTINCT Grade) FROM SC;SELECT SUM(Grade) FROM SC;SELECT AVG(Grade) FROM SC;SELECT MAX(Grade) FROM SC;SELECT MIN(Grade) FROM SC;2.8 分组查询将表 SC 按照 Sno 进⾏分组,然后筛选出分组中 Sno 为 "201215121" 的⼀组SELECT Sno FROM SC GROUP BY Sno HAVING Sno = '201215121';将 Student 与 SC 以 Sno 进⾏等值连接SELECT Student AS S, SC WHERE S.Sno = SC.Sno;2.10 ⾃⾝连接将 Student 表与⾃⽣进⾏连接SELECT Student AD S1, Student AS S2 WHERE S1.Sno = S2.Sno;2.11 外连接将 Course 与 SC 以 Cno 分别进⾏外连接、左外连接、右外连接SELECT * FROM Course OUTER JOIN SC ON o = o;SELECT * FROM Course LEFT OUTER JOIN SC ON o = o;SELECT * FROM Course RIGHT OUTER JOIN SC ON o = o;2.12 多表查询将 Student 与 SC 以 Sno 进⾏连接,并且将 Course 与 SC 以 Cno 进⾏等值连接SELECT *FROM Student JOIN SC ON Student.Sno = SC.SnoJOIN Course ON o = o;SELECT *FROM Student, Course, SCWHERE Student.Sno = SC.Sno AND o = o;2.13 嵌套查询查询 Grade > 90 的学⽣的学号(Sno)、姓名(Sname)、所在院系(Sdept)SELECT Sno, Sname, SdeptFROM StudentWHERE Sno IN (SELECT SnoFROM SCWHERE Grade > 90;);2.14 带有 ANY 的查询查询 Sage > 19 的所有学⽣的姓名(Sname)(结果满⾜⼦集中的任⼀值即可)SELECT SnameFROM StudentWHERE Sage > ANY (SELECT SageFROM StudentWHERE Sage > 19;);2.15 带有 ALL 的查询查询 Sage > 19 的所有学⽣的学号(Sno)(结果要满⾜⼦集中的所有值)SELECT SnoFROM StudentWHERE Sage > ALL (SELECT SageFROM StudentWHERE Sage > 19;);2.16 带 EXISTS 的查询查询没有⼀门课不选修的学⽣的姓名(Sname)SELECT SnameFROM StudentWHERE NOT EXISTS(SELECT *WHERE NOT EXISTS (SELECT *FROM SCWHERE Sno = Student.Sno AND Cno = o););)2.17 集合查询1 并集查询所在系(Sdept)为 "CS" 的学⽣与年龄(Sage)⼤于 19 的学⽣的并集SELECT * FROM Student WHERE Sdept = "CS"UNIONSELECT * FROM Student WHERE Sage > 19;2 交集查询所在系(Sdept)为 "CS" 的学⽣与年龄(Sage)⼤于 19 的学⽣的交集SELECT * FROM Student WHERE Sdept = "CS"INTERSECTSELECT * FROM Student WHERE Sage > 19;3 差集查询所在系(Sdept)为 "CS" 的学⽣与年龄(Sage)⼤于 19 的学⽣的差集SELECT * FROM Student WHERE Sdept = "CS"EXCEPTSELECT * FROM Student WHERE Sage > 19;3 SQL 的增删改3.1 数据的插⼊1 标准添加INSERT INTO Student(Sno, Sname, Ssex, Sage, Sdept)VALUES ('201215128', '⽯昊', '男', 25, 'IS');2 指定部分字段INSERT INTO Student (Sname, Sage, Sdept) VALUE ('叶凡', 22, 'CS');3 不指定字段-- 不指定字段时,需要⼀⼀对应添加且不能缺少项⽬INSERT INTO VALUE Student ('201215128', '⽯昊', '男', 25, 'IS');4 批量添加INSERT INTO Student VALUES('201215128', '⽯昊', '男', 25, 'IS'),('201215129', '叶凡', '男', 22, 'CS'),('201215130', '狠⼈', '⼥', 20, 'MX');3.2 修改将 Student 表中学号(Sno)为 "201215122" 的学⽣姓名(Sname)改为 “⽯昊”,年龄(Sage)改为 25 UPDATE Student SET Sname = "⽯昊", Sage = 25 WHERE Sno = "201215122";3.3 删除删除 Student 表中年龄(Sage)⼤于 18 的数据DELETE FROM Student WHERE Sage > 18;4 视图4.1 视图定义视图(VIEW)也被称作虚表,即虚拟的表,是⼀组数据的逻辑表⽰,其本质是对应于⼀条 SQL 语句,结果集被赋予⼀个名字视图本⾝并不包含任何数据,它只包含映射到基表的⼀个查询语句,当基表数据发⽣变化,视图数据也随之变化⽬的:⽅便,简化数据操作当我们业务需求要查出多张表的数据,这时我们可能会关联多张表查询处理,如果这个查询 SQL 复杂的话也影响了查询效率,这个时候就可以创建视图,查询时候只需要select * from view就可以4.2 创建视图-- 末尾的 WITH CHECK OPTION 作⽤如下:-- 当后续操作对视图进⾏增删改操作时,可能视图已经不满⾜⼦条件 S 的约束-- 加上该语句之后,后续对视图进⾏增删改的时,系统会⾃动在该⼦条件 S 下进⾏操作CREATE VIEW S_STUAS <⼦查询>[WITH CHECK OPTION];将 Student 表中学⽣年龄(Sage)> 18 的学⽣创建⼀个名为 S_NEW 的视图,该视图包含学⽣的学号(Sno)、姓名(Sname)、性别(Ssex)、所在院系(Sdept)CREATE VIEW S_NEWASSELECT Sno, Sname, Ssex, SdeptFROM StudentWHERE Sage > 18WITH CHECK OPTION;4.3 删除视图-- CASCADE 的作⽤如下:-- 当加上该语句时,会删除该视图以及其下的所有视图-- 当不加该语句时,若该视图下该有其他视图,会删除失败DROP VIEW <视图名> [CASCADE];删除 4.2 创建的视图 S_NEWDROP VIEW S_NEW CASCADE;4.4 查询视图查询 4.2 视图 S_NEW 中性别(Ssex)为 “⼥” 的学⽣的学号(Sno)SELECT SnoFROM S_NEWWHERE Ssex = "⼥";4.5 视图更新视图是虚拟的,不存在的,所以对于视图的操作,最终会反映到基本表上将 4.2 的视图 S_NEW 中所在系(Sdept)为 “CS” 学⽣的性别(Ssex)全改为 “男”-- 更新视图UPDATE S_NEWSET Ssex = "男"WHERE Sdept = "CS";-- 更新基本表-- 因为 4.2 的视图创建条件是 Sage > 18,因此更新基本表时要加上该条件UPDATE StudentSET Ssex = "男"WHERE Sdept = "CS" AND Sage > 18;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
你需要将理科教师的工资上浮8%,理科教师的 SUBJECT_ID是011,你需用哪一句实现( )。
A、UPDATE teacher SET salary = salary * 1.08 WHERE subject_description LIKE SCIENCE'
B、UPDATE teacher SET salary = salary * .08 WHERE subject_description LIKE 'SCIENCE' AND subject_id = 011
FROM tb_bookshort JOIN tb_bookinfo ON
tb_bookshort.bookID=tb_bookinfo.bookID
4.2.4 DELETE语句 DELETE语句用来删除表中的数据,一次可以 删除一行或多行。 1. DELETE语句的格式 DELETE [FROM] table_name
如何防止插入带有空值的元组?
插入操作
将平均成绩大于90的学生加入到 EXCELLENT中
insert into EXCELLENT ( SNO, GRADE) select SNO , avg(SCORE) from SC group by (SNO) having avg(SCORE) > 90
WHERE authorID='A02 '
②由SELECT语句的INTO选项来创建新表并添 加数据。例如,如下语句将形成一个新表 tb_book3,其内容与表tb_book2完全相同:
SELECT bookID,bookname,price INTO tb_book3
from tb_book2 WHERE authorID='A002'
例:向图书信息表中添加一行数据:
INSERT INTO tb_bookinfo (bookID,bookname, price) VALUES(‘000010’,‘ 计 算 机 辅 助 设 计’,23)
如果在VALUES选项中给出了所有列的值,则 可以省略column_list部分,例如:
INSERT INTO tb_bookinfo VALUES('000010',' 计算机辅助设计',23,'A001','P101')
TRUNCATE TABLE table_name 例如,如下语句将删除表tb_booktemp中的所 有行:
TRUNCATE TABLE tb_booktemp 在执行结果上等价于如下语句:
DELETE FROM tb_booktemp 但在运行速度上,使用TRUNCATE TABLE语
句要快一些,因为该语句一次删除所有行, 而DELETE语句是每次删除一行。
数据操纵语言
数据操纵语言(Data Manipulation Language, 简写DML)是指用来查询、添加、修改和删除 数据库中数据的语句,这些语句包括SELECT、 INSERT、UPDATE、DELETE等。
4.2.1 SELECT语句
SELECT语句用来从数据库中检索满足特定条 件的记录。一个SELECT语句主要包含如下 几部分:
从哪个或哪些表或视图中提取数据 选取表中的哪些列 选择满足什么条件的数据 查询结果以什么顺序显示
4.2.2 INSERT语句 INSERT语句用来向表中添加数据,基本格式 如下:
INSERT [INTO] table_name [colunm_list]
VALUES(data_values)
如果某个系里面有多个系主任,则采用集合操作In的判断操 作符号。
更新操作
当C1课程的成绩小于该课程的平均成绩时, 将该成绩提高5%
update SC set GRADE = GRADE * 1.05 where C# = C1 and GRADE < (select avg(GRADE)
from SC where C# = C1)
更新操作
工资超过200①0的缴纳10%所得税,其余②的缴纳5%所得税
update PROF
update PROF
set SAL = SAL * 0.9
set SAL = SAL * 0.95
where SAL > 2000
where SAL <= 2000
执行顺序是①,②,还是②,①?
如果一个教师的工资是2001,则会出现什么情况
4.2.3 UPDATE语句
UPDATE 语 句 用 来 修 改 表 中 的 数 据 。 每 个 UPDATE语句可以修改一行或多行数据,但每 次仅能对一个表进行操作。
1. UPDATE语句的格式
UPDATE
table_name
SET
column_name=expression
[FROM
table_source] [WHERE search_conditions]
一倍
插入操作
示例
insert into PROF
values ( P123, “王明”, 35, D08, 498 ) 必须是按照表定义的顺序查询全部的列数;
insert into PROF (PNO, PNAME, DNO)
values ( P123, “王明”, D08 )
思考:SAL取何值?
null]] ……
[,primary key(列名 [,列名] …)] [,foreign key (列名 [,列名] …)
references 表名 (列名 [,列
表TEACHER包含如下字段: 列名可为空否? 数据类型 TEACHER_ID NOT NULL NUMBER(9) NAME VARCHAR2(25) SALARY NUMBER(7,2) SUBJECT_ID NOT NULL NUMBER(3) SUBJECT_DESCRIPTION
将D01系系主任的工资改为该系的平均工资
update PROF set SAL = (select avg(SAL)
from PROF where DNO = D01) where PNO = (select DEAN
from DEPT where DNO = D01)
PNO=(select …)编译成功,但是运行可能会出错,如果 select运行过程中返回的值不只一个。
(select PNO from PROF
where PNAME = “王明”)
如果我们知道只有一个老师是王明,则in可 以被=所替代;
删除操作
删除低于平均工资的老师记录
delete from PROF where SAL <
(select avg(SAL) from PROF)
思考:是先找到所有符合条件的元组,一并 删除,还是找到一个删除一个?
SQL的数据修改功能:删除操作
命令
delete from 表名 [where 条件表达式]
从表中删除符合条件的元组,如果没有 where语句,则删除所有元组
示例
清除所有选课记录 delete from SC
删除操作
删除王明老师所有的任课记录
delete from PC where PNO in
SQL的数据修改功能:插入操作
命令 insert into 表名 [(列名[,列名]…] values (值 [,值]…) 插入一条指定好值的元组 insert into 表名 [(列名[,列名]…] (子查询) 插入子查询结果中的若干条元组
示例
Insert into A (select * from A) 如果表A中包含一行数据,则每次执行数据增加
DELETE [FROM] table_name
[WHERE search_conditions]
2. 格式说明 ①[FROM]是任选项,用来增加可读性。 ②table_name指出将要从哪个表中删除数据。 例如,如下语句将删除表tb_bookshort中的所
有行:
DELETE FROM tb_bookshort
C、UPDATE teacher SET salary = salary * 1.08 WHERE subject_id = 011
Price(Decimal,18,2) 假 定 该 表 中 bookID 列 和 bookname 列 的 数 据 与 表
tb_bookinfo中的相应列数据相同,而price列的值 需按tb_bookinfo中的price列修改,则可以使用如 下语句:
UPDATE tb_bookshort SET price=tb_bookinfo.price
UPDATE tb_bookinfo SET price=price*0.8 WHERE AuthorID='A002'
④FROM选项用来从其他表中取数据来修改某 表中的数据。
假定有一个表tb_bookshort,其中包含三个字段,定 义如下:
BookID(Char,6), Bookname(Char,30),
[WHERE search_conditions]
2. DELETE语句使用举例 例1:如下语句将删除表tb_bookshort中的所 有行:
DELETE FROM tb_bookshort
4.2.4 DELETE语句 DELETE语句用来删除表中的数据,一次可以 删除一行或多行。 1. DELETE语句的格式
DELETE tb_bookinfo FROM tb_pubinfo JOIN tb_bookinfo ON tb_bookinfo.publishID= tb_pubinfo.publishID WHERE tb_pubinfo.pubaddress='沈阳'