SQL study

合集下载

第三章 关系数据库查询语言SQL

第三章 关系数据库查询语言SQL

20112011-2-25
主讲:王颂华
9
3.2 数据定义
3.2.3 索引的建立与删除
1.建立索引 1.建立索引 索引是数据库随机检索的常用手段,它实际上是记 录的关键字与其相应地址的对应表。借助于索引结构,可 以迅速查找到某个属性A 以迅速查找到某个属性A具有指定值的那些元组。对一个 基本表,可以按需要建立若干个索引,以便提供多种存取 路径。 建立索引的语句格式为: CREATE[UNIQUE][CLUSTER]INDEX<索引名 CREATE[UNIQUE][CLUSTER]INDEX<索引名 > ON<表名>(<列名1>[<次序>],[<列名2>[<次序 ON<表名>(<列名1>[<次序>],[<列名2>[<次序 >]]… >]]…);
3.2 数据定义
2)主关键字的定义 一个关系可能有多个候选关键字,但在定义基本表 时只能定义一个主关键字。一个关系的主关键字由一个或 几个属性构成,在CREATE TABLE中声明主关键字有两 几个属性构成,在CREATE TABLE中声明主关键字有两 种方法: (1)在列出关系模式的属性时,在属性及其类型后加 上保留字PRIMARY KEY,表示该属性是主关键字。 上保留字PRIMARY KEY,表示该属性是主关键字。 (2)在列出关系模式的所有属性后,再附加一个声明: PRIMARY KEY(<属性1>[,<属性2>,…]) KEY(<属性1 ,<属性2>,… 如果关键字由多个属性构成,则必须使用第二种方 法。
20112011-2-25 主讲:王颂华 12
3.3 数据查询
3.3.1 单表查询

sql学习心得5篇精选汇总

sql学习心得5篇精选汇总

sql学习心得5篇精选汇总结构化查询语言(SQL)是用于关系数据库管理和数据操作的标准计算机语言。

下面给大家带来一些关于sql实验心得,希望对大家有所帮助。

sql实验心得1sQL是structured Query Language(结构化查询语言)的缩写。

sQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。

在使用它时,只需要发出做什么的命令,怎么做是不用使用者考虑的。

sQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持sQL。

它的强大功能以前就听人说过,所以就选了这门课。

经过一个学期的数据库课程的学习,我们掌握了创建数据库以及对数据库的操作的基础知识。

幸老师的教学耐心细致,课堂上我们有不理解的地方老师都反复讲解,使我们的基础知识掌握的比较牢固。

数据库这门课涉及到以前的知识不多,是一门从头学起的课程,即使基础不是很好,只要认真听讲、复习功课,还是一门比较容易掌握的课。

通过学习,我对数据库没有了神秘感,简单的说下我对数据库的理解吧。

我觉得它就是创建一些表格,然后再用一些语句根据他们之间的关系,把它们组合在一起。

最基本的就是子查询了。

我的子查询经验就是先写出select _ 我们要找什么,然后写条件,我们要找的东西有什么条件,然后在写条件,我们的条件涉及那些表,那些字段,再在这些字段中通过我们学过的简单select语句选出来,有时候还要用到几层子查询,不过无所谓,只要思路是清晰的就没什么问题了。

接下来,关联查询之类的,学起来也是不难的,但有一点必须注意,那就是上课必须跟着老师的进度走,一定要注意听讲,勤做笔记.这样,你学起来就会得心应手,没什么困难。

总之,这是一门很值得学的课程,自己学过获益匪浅,就算自己将来不从事这个行业,但是至少对数据不再陌生,甚至还略知一二。

呵呵谢谢老师~!延伸阅读:数据库设计心得体会跟老板做了两个算是比较大的项目,数据库主体都是我设计的。

原创SQL数据库学生管理系统

原创SQL数据库学生管理系统

原创SQL数据库学生管理系统一、简介SQL数据库学生管理系统是一款用于管理学生信息的数据库系统。

该系统采用结构化查询语言(SQL)作为数据管理和查询的工具,通过对学生信息进行有效的组织和管理,实现了学生基本信息的录入、查询、修改和删除等功能。

本文将介绍该数据库系统的设计思路、功能模块和操作流程。

二、数据库设计1. 数据表设计数据库中包含以下几个数据表:•学生表(students):存储学生的基本信息,包括学生ID、姓名、性别、年龄等字段。

•课程表(courses):存储学生所选课程的信息,包括课程ID、课程名称、学分等字段。

•成绩表(scores):存储学生的成绩信息,包括学生ID、课程ID、成绩等字段。

2. 数据库关系设计学生表与课程表之间的关系是多对多关系,通过中间表(选课表)来建立关联关系。

选课表(selections)包含了学生ID和课程ID两个字段,用于记录学生所选课程的关系。

各个数据表之间的关系如下图所示:+------------+| students |+------------+|| 多对多关系|+------------+| courses |+------------+|| 一对多关系|+------------+| scores |+------------+三、功能模块SQL数据库学生管理系统包含以下几个功能模块:1. 学生信息管理模块该模块实现学生信息的录入、查询、修改和删除功能。

管理员可以通过该模块进行学生信息的管理,包括添加新的学生信息、查询学生信息、修改学生信息和删除学生信息等操作。

2. 课程信息管理模块该模块实现课程信息的录入、查询、修改和删除功能。

管理员可以通过该模块进行课程信息的管理,包括添加新的课程信息、查询课程信息、修改课程信息和删除课程信息等操作。

3. 成绩管理模块该模块实现学生成绩的录入、查询、修改和删除功能。

管理员可以通过该模块进行学生成绩的管理,包括添加学生成绩、查询学生成绩、修改学生成绩和删除学生成绩等操作。

ORACLE-SQL语句学习教程

ORACLE-SQL语句学习教程

目录概述 (2)第一章SQL*PLUS 工具软件的使用 (5)第二章基本查询 (9)第三章条件查询 (13)第四章单行函数 (16)第五章多表查询 (20)第六章组函数 (23)第七章子查询 (25)第八章运行期间指定变量 (29)第九章创建基表 (31)第十章ORACLE数据字典 (36)第十一章操纵数据 (38)第十二章修改基表及其约束 (42)第十三章创建序列 (45)第十四章创建视图 (47)第十五章创建索引 (50)概述20世纪70年代初,E.F。

Codd 在计算机学会(Association of Computer Machinery,简写为ACM)期刊Communications of the ACM(ACM 通讯)发表了题为”A Relational Model of Data for Large Shared Data Banks”(大型共享数据库的数据关系模型)的论文,该论文提出的关系数据库模型成为今天最为权威的关系型数据库管理模型.IBM公司首先使用该模型开发出了结构化英语查询语言SEQUEL(Structured English Query Language),作为其关系数据库原型System R的操作语言,实现对关系数据库的信息检索.SEQUEL后来简写为SQL,即Structured Query Language(结构化查询语言)的缩写.ORACLE公司于1997年推出了第一个商业应用的SQL软件.20世纪80年代初,美国国家标准化组织(ANSI)开始着手制订SQL标准,最早的ANSI 标准于1986年颁布,它也被称为SQL-86。

标准的出台使SQL作为标准的关系数据库语言的地位得到加强。

SQL标准几经修改和完善,目前SQL语言方面新的ANSI标准是1992年制定的ANSI X3.135—1992,“Database Language SQL”。

此标准也被国际电工委员会(International Electro technical Commission,即IEC)所属的国际标准化组织(International Standards Organization, 即ISO)所接受,并将它命名为ISO/IEC9075:1992, “Database Language SQL”。

数据库原理实验报告(3)实验三 数据表的创建与管理实验

数据库原理实验报告(3)实验三 数据表的创建与管理实验

数据库原理实验报告(3)实验三数据表的创建与管理实验南京晓庄学院《数据库原理与应用》课程实验报告实验三数据表的创建与管理实验所在院(系): 数学与信息技术学院班级:学号:姓名:1.实验目的(1) 理解SQL Server 20XX常用数据类型和表结构的设计方法。

理解主键、外键含义,掌握建立各表相关属性间参照关系的方法。

(2) 熟练掌握使用SQL Server Management Studio图形工具创建表,删除表,修改表结构。

插入及更新数据的方法。

(3) 熟练掌握使用Transact-SQL语句创建表,删除表,修改表结构,插入及更新数据的方法。

2.实验要求基本实验:(1) 在实验二所创建的“TM”数据库中合理设计以下各表逻辑结构:学生信息课程信息学习信息院系信息要求确定各个字段的名称、类型、是否有默认值,是否主键等信息。

(2) 依据你所设计的表结构,使用SQL Server Management Studio图形工具在“TM”数据库中创建学生信息表和课程信息表,并试验在图形界面中修改表结构,删除数据表,输入并更新数据的方法。

(3) 依据你所设计表结构,使用Transact-SQL语句创建学习信息表和院系信息表,并试验使用T-SQL语句修改表结构,删除数据表,插入和更新数据的方法。

(4) 找出已创建各表之间相关属性的参照关系,并在相关表中增加引用完整性约束。

(5) 按要求完成实验报告。

扩展实验:(1) 在“TM”数据库中补充设计以下各表结构:教师信息授课信息班级信息专业信息图书信息(图书号,书名,作者,出版社,出版日期,册数,价格,分类) 借书偏息奖励信息(2) 设计并实现各表之间相关属性的参照关系。

(3) 使用SQL Management Studio图形界面或Transact-SQL在“TM”数据库中创建前述各表。

并插入部分数据,要求所插入数据合理有效。

3.实验步骤、结果和总结实验步骤/结果(1)合理命名并设计学生信息、课程信息、学习信息和院系信息结构,以表格描述相关信息。

sqlserver2005 建库表sql语句

sqlserver2005 建库表sql语句

sqlserver2005 建库表sql语句--use mastergoIF EXISTS (SELECT * FROM sys.databases WHERE name = 'StudyDB') DROP DATABASE StudyDB --如果存在则删除GOEXEC xp_cmdshell 'mkdir D:\SQL' --调用DOS命令创建文件夹--建库CREATE DATABASE StudyDBON PRIMARY( --PRIMARY 可选指定主文件组中的文件NAME = 'StudyDB1_data', --主数据文件的逻辑名FILENAME = 'D:\SQL\StudyDB1_data.mdf' , --主数据文件的物理名SIZE = 3MB, --主数据文件初始大小MAXSIZE = 5MB, --主数据文件最大大小FILEGROWTH = 20% --主数据文件的增长率), --注意","号分隔(NAME = 'StudyDB2_data', --主数据文件的逻辑名FILENAME = 'D:\SQL\StudyDB2_data.ndf' , --主数据文件的物理名SIZE = 512 KB, --主数据文件初始大小MAXSIZE = 5MB, --主数据文件最大大小FILEGROWTH = 20%)LOG ON(NAME = 'StudyDB1_log',FILENAME = 'D:\SQL\StudyDB_log1.ldf' ,SIZE = 512KB,MAXSIZE = 3MB,FILEGROWTH = 20%), --注意","号分隔(NAME = 'StudyDB2_log',FILENAME = 'D:\SQL\StudyDB_log2.ldf' ,SIZE = 512KB,MAXSIZE = 3MB,FILEGROWTH = 20%)go--建表use StudyDB --必须使用StudyDB这个数据库,不然你建立的表在master数据库里面goIF EXISTS(SELECT * FROM sys.objects WHERE name='stuInfo')DROP TABLE stuInfo--创建主表stuInfo--CREATE TABLE stuInfo(stuName NVARCHAR(20) NOT NULL,stuNo NCHAR(6) NOT NULL,stuSex NCHAR(4) NOT NULL,stuAge SMALLINT NOT NULL,stuSeat SMALLINT IDENTITY(1,1),stuAddress NTEXT)GO--为主表stuInfo创建约束[在外添加约束]--ALTER TABLE stuInfoADD CONSTRAINT PK_stuNo PRIMARY KEY(stuNo),--主键约束CONSTRAINT UQ_stuNo UNIQUE (stuNo),--唯一约束CONSTRAINT CK_stuNo CHECK(stuNo LIKE 'S253[0-9][0-9]'),--检查约束 CONSTRAINT CK_stuSex CHECK(stuSex='男' OR stuSex='女'),CONSTRAINT CK_stuAge CHECK(stuAge BETWEEN 15 AND 40),CONSTRAINT CK_stuSeat CHECK(stuSeat<=30),CONSTRAINT DF_stuAddress DEFAULT ('地址不详') FOR stuAddress --默认值设置GO--创建从表stuMarks--CREATE TABLE stuMarks(ExamNo CHAR(7) NOT NULL,stuNo NCHAR(6) NOT NULL,writtenExam SMALLINT NOT NULL,LabExam SMALLINT NOT NULL)GO--为从表stuMarks创建约束--ALTER TABLE stuMarksADD CONSTRAINT PK_ExamNo PRIMARY KEY(ExamNo),CONSTRAINT CK_ExamNo CHECK(ExamNo LIKE 'S2718[0-9][0-9]'),CONSTRAINT FK_stuNo FOREIGN KEY(stuNo) REFERENCESstuInfo(stuNo),--外键约束CONSTRAINT CK_writtenExam CHECK(writtenExam BETWEEN 0 AND 100),CONSTRAINT DF_writtenExam DEFAULT 0 FOR writtenExam,CONSTRAINT CK_LabExam CHECK(LabExam BETWEEN 0 AND 100),CONSTRAINT DF_LabExam DEFAULT 0 FOR LabExamGOCREATE TABLE TBL_TEST1(TEST1_ID INT PRIMARY KEY IDENTITY(1,1) --主键,自增, TEST_NAME VARCHAR(20) NOT NULL)CREATE TABLE TBL_TEST2(TEST2_ID INT PRIMARY KEY IDENTITY(1,1), TEST1_ID INT REFERENCES TBL_TEST1(TEST1_ID)--外键约束, TEST2_NAME VARCHAR(20) UNIQUE, TEST2_SEX CHAR(2) CHECK(TEST2_SEX='男' OR TEST2_SEX='女') --或者:CHECK TEST2_SEX IN('男','女'), TEST2_ADDRESS TEXT DEFAULT('地址不详'))insert into TBL_TEST1 values('1')select * from TBL_TEST1delete TBL_TEST1insert TBL_TEST2 values(1,'1','男','')select * from TBL_TEST2delete TBL_TEST2。

SQL Developer数据移植实例

使用SQL Developer移植数据目录使用SQL Developer移植数据 (1)目录 (1)1.配置运行环境 (2)1.1.下载软件 (2)1.2.装配驱动程序 (2)1.3.创建数据库连接 (3)2.数据移植 (4)2.1.建立一个信息库 (4)2.2.关联移植库 (5)2.3.捕获源数据库 (6)2.4.转换成Orcale对象 (8)2.5.生成Oracle对象 (10)2.6.移植数据 (13)当一个企业内部使用的数据库种类繁杂时,往往需要有一个工具将第三方架构对象移植到Oracle数据库。

能够轻轻松松地把这些数据库中所有的数据重审一遍,然后通过把对象和数据移植到一个Oracle数据库的方法合并这些数据库。

本文将为大家介绍这样一个工具——Oracle SQL Developer的移植工具,功能强大,让你能够在Oracle和第三方数据库里存取数据,并把第三方数据库移植到同一个Oracle9i Database或Oracle Database10g,可移植的数据包括函数、架构对象、触发器和存储过程。

目前能够支持的第三方数据库包括Microsoft SQL Server、Microsoft Access和MySQL。

本文首先介绍怎样配置安装环境,接着以Microsoft SQL Server数据库为例,为大家演示怎样浏览SQL Server数据库对象和数据,并把它们移植到一个Oracle数据库。

1.配置运行环境1.1.下载软件在进行第三方数据库对象移植之前,必须先配置好Oracle SQL Developer和Oracle Migration Workbench的运行环境,以确保能够与第三方数据库正常连接。

在自1.2.0.29.98版本开始,Oracle SQL Developer中就附带有Oracle Migration Workbench。

而Oracle SQL Developer则可以在Oracle的官方网站上下载,链接地址为/technetwork/developer-tools/sql-developer/downloads/index.html。

实验三SQL(二)SQL语言进行简单查询实验报告范文

实验三SQL(二)SQL语言进行简单查询实验报告范文实验目的:1.掌握SQL查询语句的一般格式2.掌握简单数据查询操作。

3.熟练掌握各种查询条件的表示。

4.掌握排序和分组操作在SQL语句中的实现。

5.掌握集函数的使用。

实验内容;1.创建学生表tudent、课程表coure和选课表SC,并输入数据(注意数据的完整性。

);(可以使用实验一中已经建立的表和数据)2.对各表中的数据进行不同条件的查询;1)查询全体学生的学号和姓名2)3)4)5)6)7)8)9)查询全体学生的详细记录查询所有选修过课程的学生学号查询考试有不及格的学生学号查询不是信息系(IS)、计算机系(CS)的学生性别、年龄、系别查询选修了4号课的学生学号和成绩,结果按成绩降序排列查询每个课程号和相应的选课人数查询计算机系(CS)的学生姓名、年龄、系别查询年龄18-20岁的学生学号、姓名、系别、年龄;10)查询姓刘的学生情况11)查询既选修1号课程,又选修2号课程的学生学号12)查询学生的姓名和出生年份(今年2003年)13)查询没有成绩的学生学号和课程号14)查询总成绩大于200分的学生学号15)查询每门课程不及格学生人数16)查询不及格课程超过3门的学生学号17)查询年龄在10到19岁之间的学生信息18)查询全体学生情况,按所在系升序排列,同一个系的学生按年龄降序排列19)查询选了1号课程的学生平均成绩20)查询选了3号课程的学生的最高分21)查询每个同学的总成绩实验步骤与过程:1.创建学生表tudent、课程表coure和选课表SC,使用实验一中已经建立的表和数据。

2.并输入数据,设置主键。

3.建立索引及三表之间关系。

4.按照SQL语句格式及题目要求输入语句进行以下查询:1、查询全体学生的学号和姓名;2、查询全体学生的详细记录;3、查询所有选修过课程的学生学号;4、查询考试有不及格的学生学号;5、查询不是信息系(IS)、计算机系(CS)的学生性别、年龄、系别;6、查询选修了4号课的学生学号和成绩,结果按成绩降序排列;7、查询每个课程号和相应的选课人数;8、查询计算机系(CS)的学生姓名、年龄、系别;9、查询年龄18-20岁的学生学号、姓名、系别、年龄;10、查询姓刘的学生情况;11、查询既选修1号课程,又选修2号课程的学生学号;12、查询学生的姓名和出生年份(今年2003年);13、查询没有成绩的学生学号和课程号;14、查询总成绩大于200分的学生学号;15、查询每门课程不及格学生人数;16、查询不及格课程超过3门的学生学号;17、查询年龄在10到19岁之间的学生信息;18、查询全体学生情况,按所在系升序排列,同一个系的学生按年龄降序排列;19、查询选了1号课程的学生平均成绩;20、查询选了3号课程的学生的最高分;21、查询每个同学的总成绩实验结果:利用实验一中所建立的表设置主键,建立索引及三表之间关系。

sql常用需记忆

应用程序作用:响应操作并显示结果、向数据库请求数据要求:美观、操作简单方便数据库作用:存储数据、检索数据、生成新的数据要求:统一、安全、性能等数据库能够做什么存储大量数据,方便检索和访问保持数据信息的一致、完整共享和安全通过组合分析,产生新的有用信息关系数据库关系数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。

关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。

关系模块中常用的操作包括:数据查询,选择,投影,连接,并、交、差、除数据操作,增加,删除,修改,更新。

完整性约束包括:实体完整性,参照完整性,用户定义完整性。

创建数据库表—通过SQL创建基本语法:create table table_name(column_name1 data_type,column_name2 data_type,……)表命名规范:1.表名对大小写不敏感,为多个单词组合时每个单词间用’_’分割。

2.首字母必须是A~Z之一,其余的字符可以是字母、_、#、$和@等符号。

实例:创建一个student表,包括学号(sno)、姓名(sname)、性别(sex)、出生年月(birthday)、系号(dno)use studycreate table student(sno int ,sname varchar(50),sex tinyint,birthday datetime,dno int)表的删除语法格式:drop table table_name注意:这里表的删除不仅删除表内存储的数据,而是整个表结构都被删除了,即该表不存在了。

查看表中的数据use my_studygoselect * from student增加新列语法格式:alter table table_nameadd column_name data_type注意事项:也可以对列设置非空约束和缺省值。

SQL查询实验报告讲解

实验题目:sql查询——简单查询【实验目的与要求】一、实验目的1. 熟练掌握单表查询的select语法结构;2. 通过观察查询结果, 体会select语句的实际应用。

二、实验要求1.实验前做好上机实验的准备,针对实验内容,认真复习与本次实验有关的知识,完成实验内容的预习准备工作。

2.能认真独立完成实验内容。

3.实验后做好实验总结,根据实验情况完成实验报告。

【实验环境】pc机、windows xp系统+sql server 2005 【实验内容】基于实验一建立的educ 数据库,用transact-sql 语句实现如下查询:1.选修了课程的学生学号;2.计算机系的学生;3.计算机系学生的学号和姓名;4.计算机系和信息系的男生信息;(提示:逻辑运算符的优先级顺序)5.选修上课编号为1且成绩在80-90 之间的学生学号和成绩,并将成绩乘以系数0.75输出;(提示:新输出项要命名列标题)6.没有成绩的学生的学号和上课编号;7.选修上课编号为1或4的学生的学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列;(提示:查询输出哪几项)8.1995年1月1日(含)以后出生的学生信息,并按姓氏拼音字母顺序从前往后排列(注:默认排序规则通常是chinese_prc_ci_as,汉字按照汉语拼音的字典顺序来排序:首先按拼音,拼音相同按声调,声调相同按笔画数。

)9.姓李和刘的学生的信息;10.不姓张王李刘的学生的学号、姓名和性别;11.选修课程的学生人数;12.选修上课编号为1的学生的最高分;13.每位学生所修课程的平均分;14.选修两门以上课程的学生;15.总成绩大于200 分的学生的学号和总成绩。

(提示:group by分组统计)【实验方法和步骤】1.新建查询,在查询编辑器中依次按照如上实验内容编写select语句完成查询。

2.每执行一条查询语句,在查询结果网格中查看执行结果是否正确。

【实验结果】select distinct sno from student_course select * from student where dno = 计算机select sno,sname from student where dno = 计算机select * from studentwhere sex =男 and dno in(计算机,信息) select sno,0.75*score as 成绩from student_course where tcid =1 and score between80 and 90select sno,score from student where (tcid=1 or tcid=4) order by score desc,sno select *from student where birthday&gt;=1995-1-1order by sname asc select *from student where sname like[李刘]% select sno,sname,sex from student where sname like[^张王李刘]% select count(distinct sno)as 选课人数from student_course select max(score) as 最高分from student_course where tcid=1 select sno,avg(score)as 平均分from student_course group by sno select sno,count(distinct tcid)as 选课门数from student_course group by snohaving count(tcid)&gt;2 select sno,sum(score)as 总成绩from student_course group by sno havingsum(score)&gt;=200 order by 总成绩desc 【实验体会】利用select语句可以实现对已有表中数据的查询的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL必知必会select prod_name,prod_pricefrom productswhere prod_price between 5 and 10;select prod_namefrom productsorder by prod_name desc (其中order by 是按什么条件来查找,desc指定按降序排) select vend_id,prod_namefrom productswhere vend_id<>'dll01'; (找出不是由供应商dll01制造的所有产品,<>与!=是相同的意思。

) select prod_namefrom productswhere prod_price is null ; (返回的是没有价格的所有产品)使用AND给WHERE子句附加条件:Select prod_id,prod_price,prod_nameFrom productsWhere vend_id=’dll01’and prod_price <=4;OR操作符Select prod_name,prod_priceFrom productsWhere vend_id=’dll01’OR vend_id=’BRS01’计算次序Select prod_name,prod_priceFrom productsWhere (vend_id=’dll01’or vend_id=’brs01’)and prod_price>=10; 为什么要加括号呢?IN操作符用来指定范围Select prod_name,prod_priceFrom productsWhere vend_id in (‘dll01’,’brs01’)Order by prod_name;NOT操作符Select prod_nameFrom productsWhere NOT vend_id=’dll01’Order by prod_name;LIKE操作符%,_,[]通配符的使用Select prod_id,prod_nameFrom productsWhere prod_name like ‘fish%’; (access中的%是用*来代替的.)Select prod_id,prod_nameFrom productsWhere prod_name like ‘%bean bag%’;Select cust_contactFrom customersWhere cust_contact like ‘[JM]%’(匹配J或M中的一个)[^JM] Order by cust_contact;拼接字段+或||(DB2,Oracle,等用后面一种)Select vend_name + ‘(‘+vend_coutry+’)’From vendorsOrder by vend_name;输出:――――――――――――――――――――――――――bear emporium (USA)TRIM()函数用来去掉串左右两边的空格.Select rtrim(vend_name) + ‘(‘+rtrim(vend_coutry)+’)’From vendorsOrder by vend_name;输出:――――――――――――――――――――――――――――――bear emporium (USA) (这里是去掉了右边的空格)使用别名:SQL支持列别名.列别名(alias)是一个字段或值的替换名.别名用AS关键字赋予.Select rtrim(vend_name) + ‘(‘+rtrim(vend_coutry)+’)’ AS vend_titleFrom vendorsOrder by vend_name;输出:vend_title――――――――――――――――――――――――――――――――――――bear emporium (USA)执行算术计算Select prod_id,quantity,item_price,quantity*item_price as expanded_priceFrom orderitemsWhere order_num=20008;输出:prod_id quantity item_price expanded_price--------------------------------------------------------------------------------Rgan01 5 4.9900 24.9500Br03 10 3.4900 34.9000文本大写处理UPPER()函数Select vend_name,upper(vend_name) as vend_name_upcaseFrom vendorsOrder by vend_name;输出:vend_name vend_name_upcase-----------------------------------------------------------------Bear emporium BEAR EMPORIUMBears r us BEARS R US日期和时间处理函数datepart()Select order_numFrom ordersWhere datepart(yy,order_date)=2004; (datepart()只从order_date列中返回年份)输出:order_num-------------------200052000820006在主要的DBMS的函数中,数值函数是最一致最统一的函数.如下:ABS( ) 返回一个数的绝对值COS( ) 返回一个角度的余弦EXP( ) 返回一个数的指数值PI( ) 返回圆周率SQRT( ) 返回一个数的平方根SQL聚集函数A VG( ) 返回某列的平均值COUNT( ) 返回某列的行数MAX( )返回某列的最大值MIN( )返回某列的最小值SUM( )返回某列值之和对所有的执行计算,指定ALL参数或不给参数,因为ALL是默认的只包含不同的值,指定DISTINCT参数.如avg(distinct prod_price) 具有相同的值只算一个Select avg(prod_price) as avg_priceFrom products输出:avg_price--------------------6.265412创建分组:group bySelect vend_id,count(*) as num_prodsFrom productsGroup by vend_id;输出:vend_id num_prods-------------------------------------------------Brs01 3Dll01 4Fng01 2注:group by 子句必须出现在where子句之后,order by子句之前.Having 支持所有的where 操作符,它们的句法是相同的,只是关键字有差别.Having 是基于分组的.Where是基于列的.Select cust_id,count(*) as ordersFrom ordersGroup by cust_idHaving count(*) >=2;输出: cust_id orders---------------------------------------100000001 3Select vend_id,count(*) as num_prodsFrom productsWhere prod_price>=4Group by vend_idHaving count(*)>=2;输出: vend_id num_prods-----------------------------------------------------------Brs01 3Fng01 2以下是SELECT 子句顺序子句说明是否必须使用Select 要返回的列或表达式是From 从中检索数据的表仅在从表选择数据时使用Where 行级过滤否Group by 分组说明仅在按组计算聚集时使用Having 组级过滤否Order by 输出排序顺序否使用子查询:在select 语句中,子查询总是从内向外处理.如下面这个查询语句:Select cust_idFrom ordersWhere order_num in (select order_numFrom orderitemsWhere prod_id=’rgan01’);联结表:SQL最强大的功能之一就是能在数据查询的执行中联结(join)表.Select vend_name,prod_name,prod_priceFrom vendors,productsWhere vendors.vend_id=products.vend_id;使用UNION如下:Select cust_name,cust_contact,cust_emailFrom customersWhere cust_state in (‘jiangxi’,’anhui’,’taiwan’)UnionSelect cust_name,cust_contact,cust_emailFrom customersWhere cust_name=’fun4all’;输出:cust_name cust_contact cust_email ------------------------------------------------------------------------------------------------------------- Fun4all denise L.stephens detephens@ Fun4all jim jones jjones@ Village toys john smith sales@ The toy store kim howard null使用UNION必须由两条或两条以上的SELECT语句组成,语句之间用关键字union分隔Union中的每个查询必须包含相同的列,表达式或聚集函数列数据类型必须兼容插入语句:INSERT更安全的方法:Insert into customers(cust_id,Cust_name, (蓝色的部分可以不用)Cust_address,Cust_city,Cust_state,Cust_zip,Cust_country,Cust_contact,Cust_email)Values(‘100000000’,‘toy land’,‘123 any street’,‘new york’,‘NY’,‘1111’,‘usa’,Null,null);省略列如果表的定义允许,必须满足以下某个条件:一,该列定义为允许NULL值二,在表定义中给出默认值复制表到另一个表(以下是整个复制)Select *Into custcopyFrom customers;My SQL和Oracle使用的语法稍有不同:Create table custcopy asSelect *From customers;更新和删除数据:Update语句由3部分组成,1,要更新的表:2,列名和它们的新值:3,确定要更新哪些行的过滤条件.如:Update customersSet cust_contact=’sam roberts’,Cust_email=’sam@’Where cust_id=’1000000006’Update customersSet cust_email=nullWhere cust_id=’111100003’; (除去cust_email列中的值)删除数据:从表中删除特定的行:从表中删除所有的行.如:Delete from customersWhere cust_id=’100000005’(where子句过滤要删除的行) Delete 删除表中的行,但不删除表本身.创建和操纵表:Create table 创建表,必须给出下列信息:新表的名字,在关键字create table之后给出:表列的名字和定义,用逗号分隔;有的DBMS还要求指定表的位置.如下,创建一个products表:Create table products( Prod_id char(10) not nullVend_id char(10) not nullProd_name char(254) not null…………..);SQL允许指定默认值,默认值在CREATE TABLE语句的列定义中用关键字default指定: Create table orderitems(Order_num integer not null,Order_item integer not null,Prod_id char(10) not null,Quantity integer not null default 1,Item_price decimal(8,2) not null);在上面的例子中,如果数量不指定,则使用数量1.在各个数据库中获得系统日期------------------------------------------------------------------------------------------------------- DBMS 函数/变量Access now()DB2 current_dateMysql current_date()Oracle sysdatepostgreSQL current_dateSQLserver getdate()Sybase getdate()更新表,为更新表定义,可使用ALTER TABLE语句.必须给出下面的信息:1在ALTER TABLE之后给出要更改的表名(该表必须存在,否则将出错)2所做更改的列表.如:Alter table vendorsAdd vend_phone char(20);这条语句给Vendors表增加一个名为vend_phone的列,其数据类型为char.删除表删除表非常简单,使用drop table语句即可:Drop table custcopy;这条语句删除custcopy表,删除表没有确认,也不能撤销,执行这条语句将永久删除该表.创建视图create view如:Create view productcustomers asSelect cust_name,cust_contact,prod_idFrom customer,orders.orderitemsWhere customer.cust_id=orders.cust_idAnd orderitems.order_num=orders.order_num;Select * from productcustomers,将列出订购了任意产品的客户.Select cust_name,cust_contactFrom productcustomersWhere prod_id=’rgan01’; ( 这条select语句是什么意思)用drop删除视图其语法为drop view viewname;覆盖或更新视图必须先drop它,然后再重新创建它.视图为虚拟的表,它们包含的不是数据而是根据需要检索数据的查询.视图提供了一种封装select语句的层次.构成数据冗余的三个特点:范畴,内涵,特征。

相关文档
最新文档