第一篇:SQL语言简介
SQL—结构化查询语言
数据定义语言
CREATE
DROP
ALTER
数据操纵语言
SELECT
INSERT
UPDATE
DELETE
数据控制语言
GRANT
REVOKE
数据定义语言
CREATE TABLE 学生
(学生ID SMALLINT NOT NULL UNIQUE,姓名 CHAR(10)NOT NULL UNIQUE,性别 CHAR(20)CHECK(VALUE IN(男,女)),生日 DATE,婚否 LOGIC,地址 CHAR(20),城市 CHAR(10),邮编 CHAR(6),电话 CHAR(20),PRMARY KEY(学生ID));
ALERT TABLE 学生
ADD 班级CHAR(10),DROP城市;
DROP TABLE 学生
数据操纵语言
INSERT INTO 学生
(101,张三,男,#1968-1-25#,FALSE,海淀太平路23号,北京,100858,90909090)
UPDATE 学生
SET 电话 = ‘888888888’
WHERE 学生ID = 10
1DELETEFROM成绩WHERE成绩 < 60
一般格式:
SELECT[DESTINCT] <字段列表>
FROM <表名列表>
[WHERE条件表达式]
[GROUP BY <字段列表> [HAVING <条件>]]
[ORDER BY <字段列表 ASC/DESC>]
投影、筛选、排序:
SELECTDESTINCT学生ID,姓名,性别,生日FROM 学生
WHERE 性别 = ‘男’
ORDER BY 生日
WHERE 工资 BETWEEN 1000 AND 2999
WHERE 城市 IN(‘北京’,’上海’,’广州’)
WHERE 姓名 LIKE‘王*’
连接
SELECT学生ID,姓名,课程,成绩
FROM 学生 JOIN 学生.学生ID = 成绩.学生ID
分组
SELECT学生ID,姓名,课程,成绩
FROM 学生 JOIN 学生.学生ID = 成绩.学生ID GROUP BY 课程
授权语句
GRANT <权力> ON <表名> TO <用户名>
收回授权
REVOKE <权力> ON <表名> FROM <用户名>
SELECT READ WRITE UPDATE ……
第二篇:SQL语言简介
SQL语言简介
㈠、什么是SQL语言
SQL(Structure Query Languge,结构化查询语言)是一种数据库专用的计算机语言,不管是Oracle、MS SQL、Access、MySQL或其他公司的数据库,也不管数据库建立在大型主机或个人计算机上,都可以使用SQL语言来访问和修改数据库的内容。虽然不同公司的数据库软件多多少少会增加一些专属的SQL语法,但大体上,它们还是遵循ASNI(美国国家标准协会)制定的SQL标准。因为SQL语言具有易学习及阅读等特性,所以SQL逐渐被各种数据库厂商采用,而成为一种共通的标准查询语言。只要你学会SQL,即可操作各种数据库如Visual Foxpro、Access、dBase等等。总之,SQL语言是各种数据库都可以使用的数据库查询语言。
SQL语言不仅仅具有查询数据库的功能,而且可以对数据库完成选取、增删、更新与跳转等各种操作。㈡、SQL语言的组成SQL语言是由命令(函数)、子句、运算符、加总函数及通配符等组成,分述如下:
1、命令
SQL的命令可分成数据定义语言与数据操作语言,数据定义语言可用来建立新的数据库、数据表、字段及索引等,本教程不予介绍;另一为数据操作语言,可用来建立查询表、排序、筛选数据、修改、增删等动作。数据定义语言命令常用的有选择、添加、删除和修改这四种:
⑴、命令:SELECT
中文意思:选择
说明:用于找出合乎条件的记录
⑵、命令:INSERT
中文意思:插入
说明:用于增加一笔记录或合并两个数据表
⑶、命令:UPDATE
中文意思:更新
说明:用于更正合乎条件的记录
⑷、命令:DELETE
中文意思:删除
说明:用于删除合乎条件的记录
2、子句
子句是用于设定命令要操作的对象(即参数),SQL所用的子句如下:
⑴、子句:FROM
中文意思:数据表
说明:用于指定数据表
⑵、子句:WHERE
中文意思:条件
说明:用于设定条件
⑶、GROUP BY
中文意思:分组(合并)
说明:用于设定分组
⑷、ORDER BY
中文意思:排序
说明:用于设定输出的顺序及字段
3、运算符
子句参数中的运算符使子句构成不同的语法格式,如“字段1='100'”、“字段1>'100'”等。运算符又分逻辑运算符与比较运算符。
◇逻辑运算符如下:
⑴、运算符:AND
中文意思:并且
说明:逻辑且
⑵、运算符:OR
中文意思:或者
说明:逻辑非
⑶、运算符:NOT
中文意思:取反
说明:逻辑非或逻辑反
◇比较运算符如下:
⑴、运算符:<说明:小于
⑵、运算符:≤说明:小于等于
⑶、运算符:≥说明:大于等于
⑷、运算符:>说明:大于
⑸、运算符:=说明:等于
⑹、运算符:<>说明:不等于
⑺、运算符:BETWEEN说明:用于设定范围中文意思:在...之间
⑻、运算符:LIKE说明:用于通配设定中文意思:如同
⑼、运算符:IN说明:用于集合设定中文意思:在...之内
4、加总函数
加总函数常常运用在命令的参数中,如:“SELECT SUM(数学),AVG(数学)FROM 成绩单”。⑴、加总函数:AVG
中文意思:平均
说明:用于求指定条件的平均
⑵、加总函数:COUNT
中文意思:数量
说明:用于求指定的数量
⑶、加总函数:SUM
中文意思:和
说明:用于求指定条件的和
⑷、加总函数:MAX
中文意思:最大值
说明:用于求指定条件的最大值
⑸、加总函数:MIN
中文意思:最小值
说明:用于求指定条件的最小值
5、通配符
⑴、通配符:%意义:任何长度的字符串(包括0)
⑵、通配符:_意义:下划线表示任何一个字符
⑶、通配符:[ ]意义:中括号表示某个范围内的一个字符
在下一讲将说明SQL语言是怎样把命令(函数)、子句、运算符、及加总函数等组合在一起的。
第三篇: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.输出任意两个字符串变量的值(参考代码)
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语言
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.学号
查看所有学生的平均成绩