当前位置:首页 » 编程语言 » sql命令叙述正确的是什么
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql命令叙述正确的是什么

发布时间: 2023-05-18 08:16:34

❶ 在“学生表”中,查询男生的学号、姓名、出生日期,描述正确的sql语句是( )

在“学生表”中,查询男生的学号、姓名、出生日期,描述正确的SQL语句是:
C
SELECT 学号,姓名,出生日期 FROM 学生表 WHERE 性别="男"

❷ 下列关于sql语言的特点的叙述中,哪些是正确

答案应该是b
sql是面向集合的
但是严格来说的话sql现在也有了面向对象的扩展了
所以这个题目有点不严谨
答案d呢sql语言应该是结构化语言
答案a、c是没有问题的

❸ 下列关于SQL命令的叙述中,正确的是______。 A.DELETE命令不能与GROUP BY关键

你好!
答案选择A
SQL查询中使用Group
by子句用来进行分组统计,可以和SELECT、INSERT、UPDATE搭配使用,不能与DELETE搭配使用,所以选项A正确。
如有疑问,请追问。

❹ sql数据库 建立三个表 student(学号 姓名 性别) sc(学号 课程号 成绩)course(课程号 课程名 分数 )

select 姓名,savg from (select 学号,avg(成绩)as savg from sc where 成绩<60 group by 学号 having count(学号)>=2) t1,student where t1.学号=student.学号

1. Group By 语句简介:
Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。 2. Group By 的使用: 上面已经给出了对Group By语句的理解。基于这个理解和SQL Server 2000的联机帮助,下面对Group By语句的各种典型使用进行依次列举说明。 2.1 Group By [Expressions]: 这个恐怕是Group By语句最常见的用法了,Group By + [分组字段](可以有多个)。在执行了这个操作以后,数据集将根据分组字段的值将一个数据集划分成各个不同的小组。比如有如下数据集,其中水果名称(FruitName)和出产国家(ProctPlace)为联合主键: FruitName ProctPlace Price
Apple China $1.1
Apple Japan $2.1
Apple USA $2.5
Orange China $0.8
Banana China $3.1
Peach USA $3.0
如果我们想知道每个国家有多少种水果,那么我们可以通过如下SQL语句来完成: SELECT COUNT(*) AS 水果种类, ProctPlace AS 出产国 FROM T_TEST_FRUITINFO GROUP BY ProctPlace 这个SQL语句就是使用了Group By + 分组字段的方式,那么这句SQL语句就可以解释成“我按照出产国家(ProctPlace)将数据集进行分组,然后分别按照各个组来统计各自的记录数量。”很好理解对吧。这里值得注意的是结果集中有两个返回字段,一个是ProctPlace(出产国), 一个是水果种类。如果我们这里水果种类不是用Count(*),而是类似如下写法的话: SELECT FruitName, ProctPlace FROM T_TEST_FRUITINFO GROUP BY ProctPlace 那么SQL在执行此语句的时候会报如下的类似错误: 选择列表中的列 'T_TEST_FRUITINFO.FruitName' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。 这就是我们需要注意的一点,如果在返回集字段中,这些字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。我们可以将Group By操作想象成如下的一个过程,首先系统根据SELECT 语句得到一个结果集,如最开始的那个水果、出产国家、单价的一个详细表。然后根据分组字段,将具有相同分组字段的记录归并成了一条记录。这个时候剩下的那些不存在于Group By语句后面作为分组依据的字段就有可能出现多个值,但是目前一种分组情况只有一条记录,一个数据格是无法放入多个数值的,所以这里就需要通过一定的处理将这些多值的列转化成单值,然后将其放在对应的数据格中,那么完成这个步骤的就是聚合函数。这就是为什么这些函数叫聚合函数(aggregate functions)了。 2.2 Group By All [expressions] : Group By All + 分组字段, 这个和前面提到的Group By [Expressions]的形式多了一个关键字ALL。这个关键字只有在使用了where语句的,且where条件筛选掉了一些组的情况才可以看出效果。在SQL Server 2000的联机帮助中,对于Group By All是这样进行描述的: 如果使用 ALL 关键字,那么查询结果将包括由 GROUP BY 子句产生的所有组,即使某些组没有符合搜索条件的行。没有 ALL 关键字,包含 GROUP BY 子句的 SELECT 语句将不显示没有符合条件的行的组。 其中有这么一句话“如果使用ALL关键字,那么查询结果将包含由Group By子句产生的所有组...没有ALL关键字,那么不显示不符合条件的行组。”这句话听起来好像挺耳熟的,对了,好像和LEFT JOIN 和 RIGHT JOIN 有点像。其实这里是类比LEFT JOIN来进行理解的。还是基于如下这样一个数据集: FruitName ProctPlace Price
Apple China $1.1
Apple Japan $2.1
Apple USA $2.5
Orange China $0.8
Banana China $3.1
Peach USA $3.0
首先我们不使用带ALL关键字的Group By语句: SELECT COUNT(*) AS 水果种类, ProctPlace AS 出产国 FROM T_TEST_FRUITINFO WHERE (ProctPlace <> 'Japan') GROUP BY ProctPlace 那么在最后结果中由于Japan不符合where语句,所以分组结果中将不会出现Japan。 现在我们加入ALL关键字: SELECT COUNT(*) AS 水果种类, ProctPlace AS 出产国 FROM T_TEST_FRUITINFO WHERE (ProctPlace <> 'Japan') GROUP BY ALL ProctPlace 重新运行后,我们可以看到Japan的分组,但是对应的“水果种类”不会进行真正的统计,聚合函数会根据返回值的类型用默认值0或者NULL来代替聚合函数的返回值。 2.3 GROUP BY [Expressions] WITH CUBE | ROLLUP: 首先需要说明的是Group By All 语句是不能和CUBE 和 ROLLUP 关键字一起使用的。 首先先说说CUBE关键字,以下是SQL Server 2000联机帮助中的说明: 指定在结果集内不仅包含由 GROUP BY 提供的正常行,还包含汇总行。在结果集内返回每个可能的组和子组组合的 GROUP BY 汇总行。GROUP BY 汇总行在结果中显示为 NULL,但可用来表示所有值。使用 GROUPING 函数确定结果集内的空值是否是 GROUP BY 汇总值。 结果集内的汇总行数取决于 GROUP BY 子句内包含的列数。GROUP BY 子句中的每个操作数(列)绑定在分组 NULL 下,并且分组适用于所有其它操作数(列)。由于 CUBE 返回每个可能的组和子组组合,因此不论指定分组列时所使用的是什么顺序,行数都相同。 我们通常的Group By语句是按照其后所跟的所有字段进行分组,而如果加入了CUBE关键字以后,那么系统将根据所有字段进行分组的基础上,还会通过对所有这些分组字段所有可能存在的组合形成的分组条件进行分组计算。由于上面举的例子过于简单,这里就再适合了,现在我们的数据集将换一个场景,一个表中包含人员的基本信息:员工所在的部门编号(C_EMPLINFO_DEPTID)、员工性别(C_EMPLINFO_SEX)、员工姓名(C_EMPLINFO_NAME)等。那么我现在想知道每个部门各个性别的人数,那么我们可以通过如下语句得到: SELECT C_EMPLINFO_DEPTID, C_EMPLINFO_SEX, COUNT(*) AS C_EMPLINFO_TOTALSTAFFNUM FROM T_PERSONNEL_EMPLINFO GROUP BY C_EMPLINFO_DEPTID, C_EMPLINFO_SEX 但是如果我现在希望知道: 1. 所有部门有多少人(这里相当于就不进行分组了,因为这里已经对员工的部门和性别没有做任何限制了,但是这的确也是一种分组条件的组合方式); 2. 每种性别有多人(这里实际上是仅仅根据性别(C_EMPLINFO_SEX)进行分组); 3. 每个部门有多少人(这里仅仅是根据部门(C_EMPLINFO_DEPTID)进行分组);那么我们就可以使用ROLLUP语句了。 SELECT C_EMPLINFO_DEPTID, C_EMPLINFO_SEX, COUNT(*) AS C_EMPLINFO_TOTALSTAFFNUM FROM T_PERSONNEL_EMPLINFO GROUP BY C_EMPLINFO_DEPTID, C_EMPLINFO_SEX WITH CUBE 那么这里你可以看到结果集中多出了很多行,而且结果集中的某一个字段或者多个字段、甚至全部的字段都为NULL,请仔细看一下你就会发现实际上这些记录就是完成了上面我所列举的所有统计数据的展现。使用过SQL Server 2005或者RDLC的朋友们一定对于矩阵的小计和分组功能有印象吧,是不是都可以通过这个得到答案。我想RDLC中对于分组和小计的计算就是通过Group By的CUBE和ROLLUP关键字来实现的。(个人意见,未证实) CUBE关键字还有一个极为相似的兄弟ROLLUP, 同样我们先从这英文入手,ROLL UP是“向上卷”的意思,如果说CUBE的组合是绝对自由的,那么ROLLUP的组合就需要有点约束了。我们先来看看SQL Server 2000的联机中对ROLLUP关键字的定义: 指定在结果集内不仅包含由 GROUP BY 提供的正常行,还包含汇总行。按层次结构顺序,从组内的最低级别到最高级别汇总组。组的层次结构取决于指定分组列时所使用的顺序。更改分组列的顺序会影响在结果集内生成的行数。 那么这个顺序是什么呢?对了就是Group By 后面字段的顺序,排在靠近Group By的分组字段的级别高,然后是依次递减。如:Group By Column1, Column2, Column3。那么分组级别从高到低的顺序是:Column1 > Column2 > Column3。还是看我们前面的例子,SQL语句中我们仅仅将CUBE关键字替换成ROLLUP关键字,如: SELECT C_EMPLINFO_DEPTID, C_EMPLINFO_SEX, COUNT(*) AS C_EMPLINFO_TOTALSTAFFNUM FROM T_PERSONNEL_EMPLINFO GROUP BY C_EMPLINFO_DEPTID, C_EMPLINFO_SEX WITH ROLLUP 和CUBE相比,返回的数据行数减少了不少。:),仔细看一下,除了正常的Group By语句后,数据中还包含了: 1. 部门员工数;(向上卷了一次,这次先去掉了员工性别的分组限制) 2. 所有部门员工数;(向上又卷了依次,这次去掉了员工所在部门的分组限制)。 在现实的应用中,对于报表的一些统计功能是很有帮助的。 这里还有一个问题需要补充说明一下,如果我们使用ROLLUP或者CUBE关键字,那么将产生一些小计的行,这些行中被剔除在分组因素之外的字段将会被设置为NULL,那么还存在一种情况,比如在作为分组依据的列表中存在可空的行,那么NULL也会被作为一个分组表示出来,所以这里我们就不能仅仅通过NULL来判断是不是小计记录了。下面的例子展示了这里说得到的情况。还是我们前面提到的水果例子,现在我们在每种商品后面增加一个“折扣列”(Discount),用于显示对应商品的折扣,这个数值是可空的,也就是可以通过NULL来表示没有对应的折扣信息。数据集如下所示: FruitName ProctPlace Price Discount
Apple China $1.1 0.8
Apple Japan $2.1 0.9
Apple USA $2.5 1.0
Orange China $0.8 NULL
Banana China $3.1 NULL
Peach USA $3.0 NULL
现在我们要统计“各种折扣对应有多少种商品,并总计商品的总数。”,那么我们可以通过如下的SQL语句来完成: SELECT COUNT(*) AS ProctCount, Discount FROM T_TEST_FRUITINFO GROUP BY Discount WITH ROLLUP 好了,运行一下,你会发现数据都正常出来了,按照如上的数据集,结果如下所示: ProctCount Discount
3 NULL
1 0.8
1 0.9
1 1.0
6 NULL
好了,各种折扣的商品数量都出来了,但是在显示“没有折扣商品”和“商品小计”的时候判断上确存在问题,因为存在两条Discount为Null的记录。是哪一条呢?通过分析数据我们知道第一条数据(3, Null)应该对应没有折扣商品的数量,而(6,Null)应该对应所有商品的数量。需要判断这两个具有不同意义的Null就需要引入一个聚合函数Grouping。现在我们把语句修改一下,在返回值中使用Grouping函数增加一列返回值,SQL语句如下: SELECT COUNT(*) AS ProctCount, Discount, GROUPING(Discount) AS Expr1 FROM T_TEST_FRUITINFO GROUP BY Discount WITH ROLLUP 这个时候,我们再看看运行的结果: ProctCount Discount Expr1
3 NULL 0
1 0.8 0
1 0.9 0
1 1.0 0
6 NULL 1
对于根据指定字段Grouping中包含的字段进行小计的记录,这里会标记为1,我们就可以通过这个标记值将小计记录从判断那些由于ROLLUP或者CUBE关键字产生的行。Grouping(column_name)可以带一个参数,Grouping就会去判断对应的字段值的NULL是否是由ROLLUP或者CUBE产生的特殊NULL值,如果是那么就在由Grouping聚合函数产生的新列中将值设置为1。注意Grouping只会检查Column_name对应的NULL来决定是否将值设置为1,而不是完全由此列是否是由ROLLUP或者CUBE关键字自动添加来决定的。 2.2 Group By 和 Having, Where ,Order by语句的执行顺序: 最后要说明一下的Group By, Having, Where, Order by几个语句的执行顺序。一个SQL语句往往会产生多个临时视图,那么这些关键字的执行顺序就非常重要了,因为你必须了解这个关键字是在对应视图形成前的字段进行操作还是对形成的临时视图进行操作,这个问题在使用了别名的视图尤其重要。以上列举的关键字是按照如下顺序进行执行的:Where, Group By, Having, Order by。首先where将最原始记录中不满足条件的记录删除(所以应该在where语句中尽量的将不符合条件的记录筛选掉,这样可以减少分组的次数),然后通过Group By关键字后面指定的分组条件将筛选得到的视图进行分组,接着系统根据Having关键字后面指定的筛选条件,将分组视图后不满足条件的记录筛选掉,然后按照Order By语句对视图进行排序,这样最终的结果就产生了。在这四个关键字中,只有在Order By语句中才可以使用最终视图的列名,如: SELECT FruitName, ProctPlace, Price, ID AS IDE, Discount FROM T_TEST_FRUITINFO WHERE (ProctPlace = N'china') ORDER BY IDE 这里只有在ORDER BY语句中才可以使用IDE,其他条件语句中如果需要引用列名则只能使用ID,而不能使用IDE。

❺ 下列关于SQL语言使用方式的说法中,正确的是()

【答案】:C

sQL语言可以直接用命令形式以交互方式使用,也可以嵌入其他语言程序命令行中,以灶带程序的方式使用。SQL语言成为国际标准语言渗辩烂以后,各数据库软件开发商,纷纷推出SQL的关系数据库管理系统产品或接口软件。许多应用广泛的关系数据库管理系统,也都增加了支持SQL语丛漏言的功能。这使得不同数据库系统之间的交互操作有了共同的基础。答案为C(4P131)。

❻ SQL 数据库常用命令及语法举例

SQL2000常用命令,语法使用方法
(1) 数据记录筛选:

sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"

sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"

sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"

sql="select * from 数据表 where 字段名 in ('值1','值2','值3')"

sql="select * from 数据表 where 字段名 between 值1 and 值2"

(2) 更新数据记录:

sql="update 数据表 set 字段名=字段值 where 条件表达式"

sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"

(3) 删除数据记录:

sql="delete from 数据表 where 条件表达式"

sql="delete from 数据表" (将数据表所有记录删除)

(4) 添加数据记录:

sql="insert into 数据表 (字段1,字段2,字段3 …) values (值1,值2,值3 …)"

sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)

(5) 数据记录统计函数:

AVG(字段名) 得出一个表格栏平均值
COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名) 取得一个表格栏最大的值
MIN(字段名) 取得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加

引用以上函数的方法:

sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"
set rs=conn.execute(sql)

用 rs("别名") 获取统的计值,其它函数运用同上。

(5) 数据表的建立和删除:

CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )

例:CREATE TABLE tab01(name varchar(50),datetime default now())

DROP TABLE 数据表名称 (永久性删除一个数据表)

4. 记录集对象的方法:

rs.movenext 将记录指针从当前的位置向下移一行
rs.moveprevious 将记录指针从当前的位置向上移一行
rs.movefirst 将记录指针移到数据表第一行
rs.movelast 将记录指针移到数据表最后一行
rs.absoluteposition=N 将记录指针移到数据表第N行
rs.absolutepage=N 将记录指针移到第N页的第一行
rs.pagesize=N 设置每页为N条记录

2、更改表格
ALTER TABLE table_name
ADD COLUMN column_name DATATYPE
说明:增加一个栏位(没有删除某个栏位的语法。
ALTER TABLE table_name
ADD PRIMARY KEY (column_name)
说明:更改表得的定义把某个栏位设为主键。
ALTER TABLE table_name
DROP PRIMARY KEY (column_name)
说明:把主键的定义删除。

3、建立索引
CREATE INDEX index_name ON table_name (column_name)
说明:对某个表格的栏位建立索引以增加查询时的速度。

4、删除
DROP table_name
DROP index_name

二、的资料形态 DATATYPEs
smallint
16 位元的整数。
interger
32 位元的整数。
decimal(p,s)
p 精确值和 s 大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数
点后有几位数。如果没有特别指定,则系统会设为 p=5; s=0 。
float
32位元的实数。
double
64位元的实数。
char(n)
n 长度的字串,n不能超过 254。
varchar(n)
长度不固定且其最大长度为 n 的字串,n不能超过 4000。
graphic(n)
和 char(n) 一样,不过其单位是两个字符 double-bytes, n不能超过127。这个形态是为
了支援两个字符长度的字体,例如中文字。
vargraphic(n)
可变长度且其最大长度为 n 的双字符字串,n不能超过 2000。
date
包含了 年份、月份、日期。
time
包含了 小时、分钟、秒。
timestamp
包含了 年、月、日、时、分、秒、千分之一秒。

三、资料操作 DML (Data Manipulation Language)
资料定义好之后接下来的就是资料的操作。资料的操作不外乎增加资料(insert)、查询资料(query)、更改资料(update) 、删除资料(delete)四种模式,以下分 别介绍他们的语法:

1、增加资料:
INSERT INTO table_name (column1,column2,...)
valueS ( value1,value2, ...)
说明:
1.若没有指定column 系统则会按表格内的栏位顺序填入资料。
2.栏位的资料形态和所填入的资料必须吻合。
3.table_name 也可以是景观 view_name。

INSERT INTO table_name (column1,column2,...)
SELECT columnx,columny,... FROM another_table
说明:也可以经过一个子查询(subquery)把别的表格的资料填入。

2、查询资料:
基本查询
SELECT column1,columns2,...
FROM table_name
说明:把table_name 的特定栏位资料全部列出来
SELECT *
FROM table_name
WHERE column1 = xxx
[AND column2 > yyy] [OR column3 <> zzz]

三)交叉连接

交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数
据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
例,titles表中有6类图书,而publishers表中有8家出版社,则下列交叉连接检索到的记录数将等
于6*8=48行。
SELECT type,pub_name
FROM titles CROSS JOIN publishers
ORDER BY type
UNION运算符可以将两个或两个以上上SELECT语句的查询结果集合合并成一个结果集合显示,即执行联合查询。UNION的语法格式为:
select_statement
UNION [ALL] selectstatement
[UNION [ALL] selectstatement][…n]
其中selectstatement为待联合的SELECT查询语句。
ALL选项表示将所有行合并到结果集合中。不指定该项时,被联合查询结果集合中的重复行将只保留一
行。
联合查询时,查询结果的列标题为第一个查询语句的列标题。因此,要定义列标题必须在第一个查询语
句中定义。要对联合查询结果排序时,也必须使用第一查询语句中的列名、列标题或者列序号。
在使用UNION 运算符时,应保证每个联合查询语句的选择列表中有相同数量的表达式,并且每个查询选
择表达式应具有相同的数据类型,或是可以自动将它们转换为相同的数据类型。在自动转换时,对于数值类

型,系统将低精度的数据类型转换为高精度的数据类型。

在包括多个查询的UNION语句中,其执行顺序是自左至右,使用括号可以改变这一执行顺序。例如:

查询1 UNION (查询2 UNION 查询3)

INSERT语句

用户可以用INSERT语句将一行记录插入到指定的一个表中。例如,要将雇员John Smith的记录插入到本例的表中,可以使用如下语句:

INSERT INTO EMPLOYEES valueS

('Smith','John','1980-06-10',

'Los Angles',16,45000);

通过这样的INSERT语句,系统将试着将这些值填入到相应的列中。这些列按照我们创建表时定义的顺序排列。在本例中,第一个值“Smith”将填到第一个列LAST_NAME中;第二个值“John”将填到第二列FIRST_NAME中……以此类推。

我们说过系统会“试着”将值填入,除了执行规则之外它还要进行类型检查。如果类型不符(如将一个字符串填入到类型为数字的列中),系统将拒绝这一次操作并返回一个错误信息。

如果SQL拒绝了你所填入的一列值,语句中其他各列的值也不会填入。这是因为SQL提供对事务的支持。一次事务将数据库从一种一致性转移到另一种一致性。如果事务的某一部分失败,则整个事务都会失败,系统将会被恢复(或称之为回退)到此事务之前的状态。

回到原来的INSERT的例子,请注意所有的整形十进制数都不需要用单引号引起来,而字符串和日期类型的值都要用单引号来区别。为了增加可读性而在数字间插入逗号将会引起错误。记住,在SQL中逗号是元素的分隔符。

同样要注意输入文字值时要使用单引号。双引号用来封装限界标识符。

对于日期类型,我们必须使用SQL标准日期格式(yyyy-mm-dd)

❼ 以下哪个SQL命令是正确的

选A,因为根据SQL的语法可以排除B,B选项中没有from,而且SQL语句中没有[User.]这种写法,所以C和D也是错的。

这是SQL查询语句,SQL是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。SQL查询语句格式是:

select [列名] from [表名] where [条件];

(7)sql命令叙述正确的是什么扩展阅读

学好数据库的技巧:

1、从最简单的Access(文件型数据库)开始,首先基础的概念必须掌握,比如什么叫表、什么叫主键。

2、根据教材上的示例自己建几个简单的库,熟悉各种操作。

3、学习SQL语句,掌握查询的用法。

4、做更多的实例加深理解,掌握学到的东西。

5、学习SQLserver掌握试图、存储过程、触发器、游标等用法,掌握关系型数据库的基本操作。

6、深入学习卜孙大型数据库的知识,熟练复杂SQL语句的书写。

7、根据需要友拿再掌握Oracle、DB2等大型数据库。有了前面的基础,不论学习什么品牌的数据库都会比较容好弊搭易上手。

❽ sql语言中删除emp表中全部数据的命令正确的是

sql语言中删除emp表中全部数据的命令正确的是truncatetableemp。根据查询相关公开信息渗嫌耐显示,sql语言是结构化查询语言,其删者稿除emp表中全部数据丛春的命令官方命令即为truncatetableemp。

❾ SQL的简单介绍(基本的sql语句)

SQL是StructuredQuevyLanguage(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。

##1二、SQL数据库数据体系结构

SQL数据库的数据体系结构基本上是三级结构,但使用术语与传统关系模型术语不同。在SQL中,关系模式(模式)称为“基本表旅凯”(basetable);存储模式(内模式)称为“存储文件”(storedfile);子模式(外模式)称为“视图”(view);元组称为“行”(row);属性称为“列”(column)。名称对称如^00100009a^:

##1三、SQL语言的组成

在正式学习SQL语言之前,首先让我们对SQL语言有一个基本认识,介绍一下SQL语言的组成:

1.一个SQL数据库是表(Table)的集合,它由一个或多个SQL模式定义。

2.一个SQL表由行集构成,一行是列的序列(集合),每列与行对应一个数据项。

3.一个表或者是一个基本表或者是一个视图。基本表是实际存储在数据库的表,而视图是由若干基本表或其他视图构成的表的定义。

4.一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。每个存储文件与外部存储上一个物理文件对应。

5.用户可以用SQL语句对视图和基本表进行查询等操作。在用户角度来看,视图和基本表是一样的,没有区别,都是关系(表格)。

6.SQL用户可以是应用程序,也可以是终端用户。SQL语句可嵌入在宿主语言的程序中使用,宿主语言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada语言等。SQL用户也能作为独立的用户接口,供交互环境下的终端用户使用。

##1四、对数据库进行操作

SQL包括了所有对数据库的操作,主要是由4个部分组成:

1.数据定义:这一部分又称为“SQLDDL”,定义数据库的逻辑结构,包括定义数据库、基本表、视图和索引4部分。

2.数据操纵:这一部分又称为“SQLDML”,其中包括数据查询和数据更新两大类操作,其中数据更绝竖新又包括插入、删除和更新三种操作。

3.数据控制:对用户访问数据的控制有基本表和视图的授权、完整性规则的描述,事务控制语句等。

4.嵌入式SQL语言的使用规定:规定SQL语句在宿主语言的程序中使用的规则。

下面我们将分别介绍:

##2(一)数拆宏唤据定义

SQL数据定义功能包括定义数据库、基本表、索引和视图。

首先,让我们了解一下SQL所提供的基本数据类型:(如^00100009b^)

1.数据库的建立与删除

(1)建立数据库:数据库是一个包括了多个基本表的数据集,其语句格式为:

CREATEDATABASE<数据库名<〔其它参数〕

其中,<数据库名<在系统中必须是唯一的,不能重复,不然将导致数据存取失误。〔其它参数〕因具体数据库实现系统不同而异。

例:要建立项目管理数据库(xmmanage),其语句应为:

CREATEDATABASExmmanage

(2)数据库的删除:将数据库及其全部内容从系统中删除。

其语句格式为:DROPDATABASE<数据库名<

例:删除项目管理数据库(xmmanage),其语句应为:

DROPDATABASExmmanage

2.基本表的定义及变更

本身独立存在的表称为基本表,在SQL语言中一个关系唯一对应一个基本表。基本表的定义指建立基本关系模式,而变更则是指对数据库中已存在的基本表进行删除与修改。

❿ sql关系数据库(SQL关系数据库查询命令)

在关系数据库实现过程中,第一步是建立关系模式,定义基本表的结构,即该关系模式是哪些属性组成的,每一属性的数据类型及数据可能的长度、是否允许为空值以及其它完整性约束条件。

定义基本表:

CREATETABLE([列级完整性约束条件]

[,[列级完整性约束条件]]

[,[列级完整性约束条件]]

[,表列级完整性约束条件]);

说明:

1、中是SQL语句芦棚必须定义的部分,[]中是SQL语句可选择的部分,可以省略的。

2、CREATETABLE表示是SQL的关键字,指示本SQL语句的功能。

3、是所要定义的基本表的名称,一个表可以由一个或若干个属性(列)组成,但至少有一个属性,不允许一个属性都没有的表,这样不是空表的含义。

多个属性定义由圆括号指示其边界,通过逗号把各个属性定义分隔开,各个属性名称互不相同,可以采用任意顺序排列,一般按照实体或联系定义属性的顺序排列,关键字属性组在最前面,这样容易区分,也防止遗漏定义的属性。

4、每个属性由列名、数据类型、该列的多个完整性约束条件组成。其中列名一般为属性的英文名缩写,在MicrosoftAess2010中也可以采用中文,建议不要这样做,编程开发时不方便。

5、完整性约束条件,分为列级的完整性约束和表级的完整性约束,如果完整性约束条件涉及该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。

这些完整性约束条件被存入系统局慧的数据字典中,当用户操作表中数据时由RDBMS自动检查该操作是否违背这些完整性约束,如果违背则RDBMS拒绝本次操作;

这样保持了数据库状态的正确性和完整性,不需要用户提供检查,提高了编程的效率,降低了编程陪腊则难度。列级的完整性通常为主关键字的定义、是否允许为空。表级的完整性约束条件一般为外码定义。

数据操纵

数据操纵语言是完成数据操作的命令,一般分为两种类型的数据操纵。

1、数据检索(常称为查询):寻找所需的具体数据。

2、数据修改:插入、删除和更新数据。

数据操纵语言一般由INSERT(插入)、DELETE(删除)、UPDATE(更新)、SELECT(检索,又称查询)等组成。由于SELECT经常使用,所以一般将它称为查询(检索)语言并单独出现。