第一篇:sql语言
11.2.2 数据定义命令
1.CreateTable命令
Create Table <表名>(<列名1><数据类型1>[<列级完整性约束1>][,<列名2>] <数据类型2>[<列级完整性约束2>][,……][,<列名n>] <数据类型n>[<列级完整性约束n>][<表级完整性约束n>]); 语句功能:创建一个以<表名>为名的、以指定的列属性定义的表结构。
2.Alter Table命令
Alter Table<表名>
[ ADD <新列名> <数据类型> [ 完整性约束 ] ]
[ DROP <完整性约束名> ]
[ MODIFY <列名> <数据类型> ];
语句功能:修改以<表名>为名的表结构。
3.Drop命令
Drop Table <表名>
语句功能:删除以<表名>为名的表。
11.2.3 数据查询命令 SELECT
语法形式为:
SELECT [ALL|DISTINCT] 目标列FROM 表(或查询)
[WHERE 条件表达式]
[GROUP BY 列名1 HAVING 过滤表达式]
[ORDER BY 列名2[ASC|DESC]]
功能
根据WHERE子句中的表达式,从指定的表或视图中找出满足条件的记录,按目标列显示数据GROUP BY子句按列名1的值进行分组,每一组产生一条记录,HAVING短语对组进行输出过滤
ORDER BY子句按列名2 对查询结果的值进行排序
1.SELECT语句示例
例11.1查询所有学生的基本情况
SELECT学号,姓名,性别,出生日期,专业
FROM Student;
例11.2查询所有男生的信息记录。
SELECT *
FROM student
WHERE 性别=“男”;
例11.1查询所有的专业,查询结果中不出现重复的记录。
SELECT DISTINCT 专业 FROM Student ;
例11.4 查询学生的人数和平均年龄
SELECT Count(*)AS 人数,Avg(Year(Date())-Year(出生年月))AS平均年龄 FROM Student ; 例85 查询计算机专业学生的学号、姓名和专业
SELECT 学号,姓名,专业 FROM Student WHERE 专业=“计算机” ;
例11.6显示所有非计算机专业学生的学号、姓名和年龄
SELECT 学号, 姓名, Year(Date())-Year(出生年月)AS 年龄
FROM StudentWHERE 专业<>“计算机” ;
例11.7 查询1981年(包括1981年)以前出生的女生姓名和出生年月。
SELECT 姓名,出生年月 FROM Student
WHERE 出生年月 < #1/1/1982# AND 性别=“女” ;
例11.8 查询选修了1号课程的学生的学号及其成绩,查询结果按分数降序排列。
Select 学号,成绩Fromsc
Where课程号= “1”
Order By 成绩 DESC;
例11.9查询选修了2门(包括2门)以上课程的学生的学号和课程数
SELECT 学号, Count(*)AS 课程数 FROM Sc
GROUP BY 学号HAVING Count(*)>=2 ;
例11.10查询所有课程的成绩在70分以上的学生的学号
SELECT 学号 FROM ScGROUP BY 学号
HAVING Min(成绩)>=70 ;
例11.11 查询所有学生的学号、姓名、课程和成绩
SELECT Student.学号,Student.姓名,Sc.课程, Sc.成绩
使用内连接格式
SELECT Student.学号,Student.姓名,Sc.课程,Sc.成绩
2.ORDER BY、GROUP BY、HAVING子句示例
例11.12 对学生成绩表,统计每人的平均分和课程数,按学号递减排序
SELECT学号, COUNT(课程号)AS 课程数, AVG(成绩)AS平均成绩
FROM sc
学号
ORDER BY学号DESC;
例11.13查询选修了2门(包括2门)以上课程、最低成绩在60分以上的学生的学号、课程数和最低分 SELECT 学号, Min(成绩)AS 成绩之Min, Count(课程)AS 课程之Count FROM ScGROUP BY Sc.学号
HAVING(((Min(成绩))>=60)AND((Count(课程))>2));
3、多表连接查询SELECT语句
WHERE 条件,在两表中有相同的属性值
例11.14 查询所有学生的学号、姓名、课程和成绩
SELECT Student.学号,Student.姓名,Sc.课程, Sc.成绩
FROM Student,Sc WHERE Student.学号 = Sc.学号;
4.嵌套查询
在SQL中,将一个SELECT语句查询块嵌套在另一个SELECT语句的WHERE子句或HAVING子句中称为嵌套查询
例11.15 查询没有学过大学计算机基础的学生的学号、姓名和专业
SELECT Student.学号, Student.姓名, Student.专业
FROM Student
(SELECT Sc.学号
FROM Sc
WHERE Sc.课程=“大学计算机基础”);
嵌套查询示例
例11.16 查询与“邓倩梅”在同一个专业的学生的学号和姓名
SELECT Student.学号, Student.姓名
FROM Student
WHERE
FROM Student
11.2.4SQL中的数据更新命令
结构化查询语言SQL是操作关系数据库的工业标准语言
在SQL中,常用的语句有两类:
数据查询语句 SELECT
数据更新命令 INSERT、UPDATE、DELETE
INSERT语句用于数据插入 其语法格式为:
插入一条记录
INSERT INTO 表名 [(字段1,…,字段n)] VALUES(值1,…,值n)
插入查询的结果
INSERT INTO 表名(字段1,…,字段n)VALUES 子查询
数据更新-INSERT语句实例
例11.17向表Students中插入一条记录
Insert Into student(学号, 姓名, 出生日期,性别, 专业)VALUES(“20031011”, “陈伟”,男“, ”化学“)
注意:
字符型常量用 单引号 或 双引号 括起来
逻辑型字段的值是 True/False、Yes/No 或 On/Off
日期的表示形式为 MM/DD/YY 或 MM/DD/YYYY
数据更新-DELETE语句
DELETE语句用于数据删除其语法格式为:
DELETE FROM 表 [WHERE 条件]
注意: WHERE子句缺省,则删除表中所有的记录(表还在)
例11.18 删除表Students中所有学号为990301的记录
DELETE FROM Students WHERE 学号=“990301”
例11.19 删除表Sc中成绩低于70分的记录
DELETE FROM Sc WHERE 成绩<70
数据更新-UPDATE语句
UPDATE语句用于数据修改其语法格式为:
UPDATE 表 SET 字段1=表达式1, …,字段n=表达式n [WHERE 条件]
注意: WHERE子句缺省,则修改表中所有的记录
例11.20 将表Student中学生王涛的姓名改为王宝 #12/28/80#,”
UPDATE Students SET 姓名=“王宝” WHERE 姓名=“王涛”
UPDATE语句一次只能对一个表进行修改
SQL是英文Structured Query Language的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多数流行的关系型数据库管理系统,如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL语言标准。包括数据定义、数据操纵、数据查询和数据控制四个方面,共9个命令。
SQL语言使用使用数据定义语言(Data Definition Language,简称DDL)实现数据定义功能。1、创建数据表
【命令格式】
CREATETABLE<表名> [free]
(<字段名1><数据类型>[(<宽度>[,<小数位数>]),<字段名2>…])
【功能】定义(也称创建)一个表结构。
【命令格式】
CREATETABLE<表名> [free]
(<字段名1><数据类型>[(<宽度>[,<小数位数>]),[NULL|NOTNULL]<字段名2>…])
【功能】定义(也称创建)一个表结构。
【命令格式】
CREATETABLE<表名> [free]
(<字段名1><数据类型>[(<宽度>[,<小数位数>]),[NULL|NOTNULL]
[CHECK<表达式>[error<提示信息]
<字段名2>…])
【功能】定义(也称创建)一个表结构。
【命令格式】
CREATETABLE<表名> [free]
(<字段名1><数据类型>[(<宽度>[,<小数位数>]),[NULL|NOTNULL]
[CHECK<表达式>[error<提示信息]
[DEFAULT<表达式>]
<字段名2>…])
【功能】定义(也称创建)一个表结构。
【命令格式】
CREATETABLE<表名> [free]
(<字段名1><数据类型>[(<宽度>[,<小数位数>]),[NULL|NOTNULL]
[CHECK<表达式>[error<提示信息]
[DEFAULT<表达式>]
[PRIMARY KEY/UNIQUE]
<字段名2>…])
【功能】定义(也称创建)一个表结构。
【例11-1】创建一个表STUD(学生信息表),它由以下字段组成:学号(C,8);姓名(C,8);性别(C,2);出生年月(D);入校总分(N,3);三好生(L);特长(M);照片(G)。
CREATE TABLESTUD
(学号C(8),姓名C(8),性别 C(2),出生年月 D, 入校总分 N(3),;三好生 L,特长 M,照片 G)
【例11-2】创建一个表STUD(学生信息表),它由以下字段组成:学号(C,8);姓名(C,8);性别(C,2);出生年月(D);入校总分(N,3)。
并要求:学号为主键并不能为空值;姓名也不允许为空值,性别字段必须是“男”或者“女”;出生年月取值范围在1970到1990年之间。
CREATE TABLESTUD
(学号C(8)PRIMARY KEYNOT NULL,;
姓名C(8),;性别C(2),;出生年月 D,;入校总分 N(3))
【例11-2】创建一个表STUD(学生信息表),它由以下字段组成:学号(C,8);姓名(C,8);性别(C,2);出生年月(D);入校总分(N,3)。
并要求:学号为主键并不能为空值;姓名也不允许为空值,性别字段必须是“男”或者“女”;出生年月取值范围在1970到1990年之间。
CREATE TABLESTUD
(学号C(8)PRIMARY KEYNOT NULL,;
姓名C(8), NOT NULL;性别C(2),;出生年月 D,;入校总分 N(3))
【例11-2】创建一个表STUD(学生信息表),它由以下字段组成:学号(C,8);姓名(C,8);性别(C,2);出生年月(D);入校总分(N,3)。
并要求:学号为主键并不能为空值;姓名也不允许为空值,性别字段必须是“男”或者“女”;出生年月取值范围在1970到1990年之间。
CREATE TABLESTUD
(学号C(8)PRIMARY KEYNOT NULL,;
姓名C(8), NOT NULL;
性别C(2), DEFAULT=“男”CHECK 性别=“男”OR 性别 =“女” ERROR“性别必须是男或女”;出生年月 D,;入校总分 N(3))
【例11-2】创建一个表STUD(学生信息表),它由以下字段组成:学号(C,8);姓名(C,8);性别(C,2);出生年月(D);入校总分(N,3)。
并要求:学号为主键并不能为空值;姓名也不允许为空值,性别字段必须是“男”或者“女”;出生年月取值范围在1970到1990年之间。
CREATE TABLESTUD
(学号C(8)PRIMARY KEYNOT NULL,;
姓名C(8), NOT NULL;
性别C(2), DEFAULT=“男”CHECK 性别=“男”OR 性别;
=“女” ERROR“性别必须是男或女”;
出生年月 D, CHECK(出生年月)<={^1990-01-01} and 出生;
年月>={^1970-01-01},;
入校总分 N(3))
2、修改数据表
【命令格式1】
ALTER TABLE <表名>[ADD/ ALTER
[COLUMN] <新字段名><数据类型>[<宽度>[,<小数位数>]]
[NULL |NOTNULL]]
[CHECK<表达式>[error<提示信息>]]
[DEFAULT <表达式>]
[PRIMARY KEY/UNIQUE]]
【功能】修改表结构。、插入记录
【格式1】INSERTINTO<表名>[<字段名表>]VALUES(<表达式表>)
【格式2】INSERTINTO<表名>FROMARRAY<数组名>|FROMMEMVAR
【功能】在指定的表文件末尾追加一条记录。格式1用表达式表中的各表达式值赋值给<字段名表>中的相应的各字段。格式2用数组或内存变量的值赋值给表文件中各字段。
【说明】如果某些字段名在INTO子句中没有出现,则新记录在这些字段名上将取空值(或默认值)。但必须注意的是,在表定义说明了NOTNULL的字段名不能取空值。
<字段名表>:指定表文件中的字段,缺省时,按表文件字段的顺序依次赋值。
<表达式表>:指定要追加的记录各个字段的值。
【例11-6】在表文件STUD的末尾追加三条记录。
***用表达式方式追加第一条记录***
INSERTINTOSTUD
(学号,姓名,性别,班级名,系别代号);
VALUES
(“011110”,“李建国”,“男”,“计0121”,“01”)
DIMENSIONDATA[5]
DATA(1)=“011103”
DATA(2)=“李宁”
DATA(3)=“女”
DATA(4)=“电0134”
DATA(5)=“02”
INSERTINTOSTUDFROMARRAYDATA
第二篇:SQL语言汇总
1.UPDATE MARK
SET 总分=语文+数学+英语
SELECT 准考证号,姓名,总分
FROM MARK
WHERE 语文>=75 AND数学>=75 AND 英语>=75 AND 语文+数学+英语>=240
ORDER BY 总分 DESC
UPDATE MARK
SET 修正分数=高考分数*1.3
WHERE 籍贯='云南' OR 籍贯='福建'
SELECT AVG(高考分数)as平均分
FROM MARK
GROUP BY 性别
SELECT *
FROM cj
WHERE 期中成绩>=80 OR 期末成绩>=80 ORDER BY 课程号 ASC
UPDATE cj
SET平均成绩=期中成绩*0.2+期末成绩*0.8
SELECT 书号,书名,作者
FROM gm
WHERE 书号 LIKE '理*' AND 单价>20 ORDER BY 单价 ASC
UPDATE gm
SET 金额=单价*数量
UPDATE Sale
SET 销售金额=销售数量*单价
UPDATE Wage
SET 实发工资=工资+奖金
SELECT 姓名,实发工资
FROM Wage
WHERE 姓名 LIKE '*辉'OR 姓名 LIKE ' *辉*' ORDER BY 年龄 DESC
SELECT 部门号, COUNT(*)as人数
FROM zhigong
GROUP BY 部门号
UPDATE kaoshi
SET平均成绩=笔试成绩*0.6+上机成绩*0.4
SELECT 考号,姓名,平均成绩
FROM kaoshi
WHERE 姓名 LIKE '黄*'
DELETE *
FROM mark
WHERE 学号='1003'
SELECT 学号,课程号,期末成绩
FROM mark
WHERE 学号 LIKE '*1'
ORDER BY 期末成绩 DESC
UPDATE fk
SET 超期罚款=单价*超期天数*0.005
SELECT *
FROM fk
WHERE 单价>=50 OR 超期天数>30 ORDER BY 超期罚款 DESC
UPDATE gp
SET 浮动盈亏=(市场现价-买入加个)*买入数量
SELECT 股票代码,买入时间,浮动盈亏 FROM gp
WHERE 股票代码 LIKE '6*' AND 浮动盈亏>0 ORDER BY 买入时间 ASC
UPDATE ah
SET 年龄=年龄+1
SELECT 寝室,COUNT(*)as 爱好球类人数 FROM ah
WHERE 爱好 LIKE '*球'
GROUP BY 寝室
UPDATE JHKC
SET 总价=单价*库存量
SELECT 设备编号,设备名称,单价
FROM JHKC
WHERE 库存量<300 AND 单价<500 ORDER BY 单价 DESC
UPDATE HCSK
SET 票价=600
WHERE 航班号=F807
SELECT 航班号,起飞日期,票价
FROM HCSK
WHERE 出发地='福州' AND 目的地='巴黎' ORDER BY 票价 ASC
第三篇:SQL语言
1.输出任意两个字符串变量的值(参考代码)
declare @v1 varchar(12),@V2 varchar(12)
set @v1='中国'
set @v2='你好!'
select @v1+@v2
2.为以下程序纠错
declare @v1 varchar(12),@V2 varchar(10)
set @v1='中国'
set @v2='你好!'
set @s='吗!'
select @v1+@v2+@s
3.运行以下代码,观察以下全局变量的功能
select 34@@connections 返回当前服务器的连接数目
select 1@@rowcount 返回上一条T-SQL语句影响的数据行数 select @@error返回上一条T-SQL语句执行后的错误号 select @@procid返回当前存储过程的ID号
select @@remserver 返回登录记录中远程服务器的名字 select @@spid返回当前服务器进程的ID标识
select @@version 返回当前SQL Server服务器的版本和处理器类型 select @@language 返回当前SQL Server服务器的语言
select @@connections
4.输入以下代码并理解其含意
bggin
if 3>5
select 'true'
else print 'false'
end
go
begin
if 'a'<'A'
select 'true'
else print 'false'
end
go
begin
if '张'>'李'
select 'true'
else print 'false'
end
go
begin
if getdate()>2008-10-10
print'true'
else print'false'
end
5.附加数据库student,并进行以下操作
use student
select * from xsda
以XSDa表为例,如果平均成绩高于75分,则显示“不错!”,否则,显示“加油呀!”。
declare @av1 char(12), @av2 char(12)
set @av1='不错!'
set @av2='加油!'
if(select avg(总学分)from xsda)>75
begin
select @av1
end
else
select @av2
编写一个程序,显示每一同学的成绩等级
select xh,zf,dj=
case
when zf>70 then '优秀'
when zf>65 then '良好'
when zf>=60 then '合格'
else '不合格'
end
from xsdn
6.求1-100偶数和(参考代码)
declare @i int,@s int/*定义变量*/
set @i=0/*变量赋初值*/
set @s=0
while @i<=100/*条件*/
begin
set @s=@s+@i/*累加求和*/
set @i=@i+2/*偶数*/
end
print @s
7.求10!
8.为以下程序纠错(求1-100的积)
declare @i int,@s int
set @i=0
set @s=0
while @i<=100 begin
set @s=@s*@iset @i=@i+2 end
print @s
第四篇:SQL语言以及SQL
SQL语言以及SQL*PLUS工具
1.SQL语言组成:
数据查询语言(DQL):SELECT;
数据操纵语言(DML):INSERT、UPDATE、DELETE; 事务控制语言(TCS):COMMIT、ROLLBACK;
数据定义语言(DDL):CREATE、DROP、ALTER;
数据控制语言(DCL):GRANT、REVOKE;
2.数据查询语言(DQL):
一般格式:
1.SELECT [ALL|DISTINCT] <目标列表达式> [, <目标列表达式>]…
2.FROM <表名或者视图名> [, <表名或者视图名>]…
3.[WHERE <条件表达式>]
4.[GROUP BY <列名1> [HAVING <条件表达式>]]
5.[ORDER BY <列名2> [ASC|DESC];
实例:
6.SELECT empno,ename FROM emp WHERE ename<>'a' order by empno;
3.数据操纵语言(DML):
INSERT:
一般格式:
7.INSERT
8.INTO <表名> [(<属性列1>[, <属性列2>]…)]
9.VALUES(<常量1>[, <常量2>]…);
实例:
INSERT INTO emp(empno,ename)VALUES(1,’test1’);
UPDATE:
一般格式:
10.UPDATE<表名>
11.SET <列名>=<表达式> [,<列名>=<表达式>]…
12.[WHERE <条件>];
实例:
13.UPDATE emp SET ename=’test2’ WHERE empno=1;
DELETE:
一般格式:
14.DELETE
15.FROM <表名>
16.[WHERE <条件>];
实例:
DELETE FROM emp WHERE empno=1;
4.事务控制语言(TCS):
COMMIT:
说明:
5.6.7.8.17.放在DML之后,提交事务。 一般格式: 18.COMMIT; 实例: INSERT INTO emp(empno,ename)VALUES(1,’test1’);COMMIT; ROLLBACK: 说明: 19.放在DML之后,回滚事务。 一般格式: 20.ROLLBACK; 实例: INSERT INTO emp(empno,ename)VALUES(1,’test1’); ROLLBACK;课后练习(2小时): 用各种组合反复练习数据查询语言DQL; 用各种组合反复练习数据操纵语言DML; 和DML结合反复练习事务控制语言TCS。SQL*PLUS简介: 是Oracle数据库提供的用于和数据库交互的工具; 数据库管理员管理数据库的主要工具; 支持SQL-2和SQL-3标准; 支持Oracle PL/SQL语言; 支持一套Oracle公司定义的SQL*PLUS操纵语言。SQL*PLUS语言介绍: 不是标准语言; 可以缩写(一般取英文单词的前4位); 不用加分号; 分成数据库访问、输出格式设置、文本编辑、执行程序、环境设置、其他等几类。常用的SQL*PLUS命令:
CONNECT(CONN):连接数据库:
21.CONN SCOTT/TIGER@FIS
EXIT:退出SQL*PLUS;
DESCRIBE(DESC):显示数据库对象的结构:
22.DESC emp
SHOW:显示系统信息:
23.SHOW user
EDIT:文本编辑;
RUN(/):运行前一命令;
SAVE:保存前一命令:
24.SAVE c:temptest.txt
PASSWORD(PASSW):修改当前用户的口令; SPOOL:将输出结果保存到本地硬盘上
SPOOL c:temptest.txt SELECT * FORM emp;SPOOL OFF
START(@):路径*.sql执行脚本 column 字段名 format a35set line 100
第五篇:SQL 语言
SQL语言
create database student
on primary
(name=student_data1,filename='c:student_data1.mdf',size=10M,maxsize=100M,filegrowth=10%)
filegroupstudent_group分组
(name=student_data2,filename='c:student_data2.ndf',size=10M,maxsize=100M,filegrowth=10%)
log on
(name=student_log1,filename='c:student_data1.ldf',size=10M,maxsize=100M,filegrowth=10%)
create table xi
(系编号 char(2)primary key,系名varchar(20))主码
insert into xi values('01','物理系')
insert into xi values('02','化学系')
select *from xi查询
create table student
(学号 char(11)primary key,姓名varchar(10),民族 char(2)default'汉',出生日期datetime ,奖学金 money check(奖学金<=8000), 系编号 char(2)foreign key references xi(系编号))
默认值,约束,外码
insert into student values('20090214201','马帅', '汉','1990-1-8',1500, '01')
insert into student values('20100214202','周伊','回' ,'1989-2-4',500,'02')
update student set 出生日期='1911-3-1'where 学号 ='20100214201'
更新数据
select* from student/ 3
alter table student add 性别 char(2)check(性别='男'or 性别='女')
增加列
update student set 性别 ='男' where 学号 ='20090214201' update student set 性别 ='女' where 学号 ='20100214202' select student* from student where left(学号,4)=’2009’ 查询大三学生的详细信息
create table kc
(课程编号 char(2),课程名varchar(20))
alter table kc alter column 课程编号 char(2)not null 修改字段
alter table kc addconstraint pk_kcprimary key(课程编号)加主码(加主码的字段不能为空)
insert into kc values('01','语文')
insert into kc values('02','数学')
insert into kc values('03','英语')
update kc set课程名 ='历史学' where 课程编号= '05' execute sp_rename '课程编号','课程名','column'
改名
create table cj
(学号 char(11)foreign key references student(学号))alter table cj add 课程编号 char(2)
增加列
alter table cj add foreign key(课程编号)references kc(课程编号)
增加外码
alter table cj add 成绩varchar(3)
insert into cj values('20100214201','01','69')
insert into cj values('20100214201','02','90')
insert into cj values('20100214201','03','56')
insert into cj values('20100214202','01','26')
insert into cj values('20100214202','02','54')
insert into cj values('20100214202','03','89')
1.select student.*,课程名,成绩 ,系名 from student ,kc,cj ,xi where student.系编号 = xi.系编号and cj.学号=student.学号 and kc.课程编号=cj.课程编号 and student.学号='20100214202'
查询学号为20100214202的学生student表的全部内容和每门课的成绩及所在系
2.select 姓名,课程名,成绩,系名 from student,kc,cj,xi where student.学号 = cj.学号 and student.系编号=xi.系编号 and cj.课程编号= kc.课程编号 and month(getdate())=month(student.出生日期)and day(getdate())= day(student.出生日期)
查询今天过生日的学生的姓名每门课的成绩及系名
3.select student.学号,课程名,成绩,系名 from student,kc,cj,xi where student.学号=cj.学号 and kc.课程编号=cj.课程编号 and student.系编号=xi.系编号 and cj.学号 =student.学号 查看所有学生的学号的每门课的成绩及系名
4.Select count()as 学生数 from student ,xi where student.系编号=xi.系编号and xi.系名=’物理系’
查看物理系的学生数
5.Select student.姓名,avg(cj.成绩)as平均成绩 from student, cj where student.学号=cj.学号
查看所有学生的平均成绩