SQL查询语法大全完整word版-高手详解

合集下载

sql语句语法

sql语句语法

sql语句语法SQL语句是用于管理和操作关系型数据库的命令语句,它是结构化查询语言(Structured Query Language)的缩写,其语法非常规范且严格。

以下是一些常用的SQL语句及其语法:1. 查询语句(SELECT)SELECT field1,field2,…,fieldn FROM table1 [WHERE condition] [ORDER BY field [ASC|DESC]] [LIMIT m, n]其中,field1至fieldn代表要查询的字段,table1代表要查询的表,WHERE condition代表查询条件,ORDER BY field [ASC|DESC]代表排序方式,LIMIT m, n代表返回结果的数量。

2. 插入数据(INSERT)INSERT INTO table1 (field1, field2, …, fieldn) VALUES (value1,value2, …, valuen)其中,table1代表要插入数据的表,field1至fieldn代表要插入的字段,values1至valuen代表要插入的值。

3. 更新数据(UPDATE)UPDATE table1 SET field1=value1, field2=value2,…, fieldn=valuen [WHERE condition]其中,table1代表要更新数据的表,SET field1=value1, field2=value2,…, fieldn=valuen代表要更新的字段及其值,WHERE condition代表更新数据的条件。

4. 删除数据(DELETE)DELETE FROM table1 [WHERE condition]其中,table1代表要删除数据的表,WHERE condition代表删除数据的条件。

5. 创建数据表(CREATE TABLE)CREATE TABLE table1 (field1 datatype1 [constraint1],field2 datatype2 [constraint2],…,fieldn datatypen [constraintn])其中,table1代表要创建的数据表,field1至fieldn代表要创建的字段及其类型及约束条件。

SQL语法

SQL语法

SQL语法一、SQL简单查询㈠SELECT语句的语法格式SELECT语句是用户对数据库提出问题的基础。

当创建并执行一个SELECT语句时,其实就是在“查询”数据库。

一个SELECT语句由几个独立的关键字组成,这些关键字被称为子句,可以使用子句的多种形式来定义SELECT语句,从而获得想要的信息。

这些子句中有些是必需的,而另外一些是可选择的。

另外,每个子句都有一个或多个关键字,这些关键字由必须值和可选值来描述。

虽然SELECT 语句的完整语法较复杂,但是其主要的子句可归纳如下:SELECT select_list[ INTO new_table ]FROM table_source[ WHERE search_condition ][ GROUP BY group_by_expression ][ HA VING search_condition ][ ORDER BY order_expression [ ASC | DESC ] ]SELECT语句中的各子句的功能如下:●SELECT子句:这是SELECT语句中必须包含的最主要的子句,用户可以使用该子句指定查询的结果集中想要显示的字段。

这些字段可以是从用户所指定的一个表或视图中提取出来的,也可以是同时从多个表中取出的。

同时在SELECT子句中也可以使用一些函数和公式。

●INTO子句:该子句用于创建新表并将结果行从查询插入到新表中。

用户若要执行带 INTO 子句的 SELECT 语句,必须在目的数据库内具有 CREATE TABLE 权限。

●FROM子句:这是SELECT语句中仅次于SELECT的子句,也是对数据库查询中的必选项。

FROM用来指定SELECT子句中的字段是从哪个表或者视图中取出的。

●WHERE子句:该子句是一个可选项。

其功能是用来过滤显示结果。

只有符合其<search_condition >所指定条件的记录才会在结果中显示出来。

sql数据库查询语句基本语法

sql数据库查询语句基本语法

sql数据库查询语句基本语法摘要:1.SQL数据库查询语句基本概念2.SELECT语句的结构3.数据表的操作4.条件查询5.排序和分组6.聚合函数和窗口函数7.连接和子查询8.存储过程和触发器9.实践案例与总结正文:一、SQL数据库查询语句基本概念SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的标准化语言。

它主要用于查询、插入、更新和删除数据库中的数据,还可以用于创建和管理数据库表、视图、索引等。

二、SELECT语句的结构SQL查询语句的核心是SELECT语句,其基本结构如下:1.SELECT 列名1,列名2,...2.FROM 数据表名3.WHERE 条件(可选)4.GROUP BY 列名(可选)5.HAVING 条件(可选)6.ORDER BY 列名(可选)7.LIMIT 分页大小(可选)三、数据表的操作在SQL中,可以使用CREATE、ALTER、DROP等语句对数据表进行创建、修改和删除操作。

1.创建数据表:CREATE TABLE 数据表名(列名1 数据类型,列名2 数据类型,...);2.修改数据表:ALTER TABLE 数据表名ADD 列名数据类型;3.删除数据表:DROP TABLE 数据表名;四、条件查询在SQL查询中,可以使用WHERE子句添加条件,对数据进行筛选。

例如:SELECT * FROM 数据表名WHERE 列名1 = 值1 AND 列名2 = 值2;五、排序和分组可以使用ORDER BY和GROUP BY子句对查询结果进行排序和分组。

例如:1.排序:SELECT * FROM 数据表名ORDER BY 列名1 ASC,列名2 DESC;2.分组:SELECT 列名1,COUNT(*) FROM 数据表名GROUP BY 列名1;六、聚合函数和窗口函数SQL支持聚合函数(如SUM、AVG、MAX、MIN、COUNT等)和窗口函数(如ROW_NUMBER、RANK、DENSE_RANK、CUME_DIST、PERCENT_RANK等)。

sql 查询语法

sql 查询语法

sql 查询语法SQL查询语法是一种用于从关系型数据库中检索数据的语言。

它是一种标准化的语言,被广泛应用于各种数据库管理系统中。

SQL查询语法包括SELECT、FROM、WHERE、GROUP BY、HAVING和ORDER BY等关键字,下面将对这些关键字进行详细介绍。

SELECT关键字用于从数据库中选择需要检索的列。

例如,SELECT name, age FROM students; 将从students表中选择name和age列。

FROM关键字用于指定要从中检索数据的表。

例如,SELECT name, age FROM students WHERE age > 18; 将从students表中选择年龄大于18岁的学生的姓名和年龄。

WHERE关键字用于指定检索数据的条件。

例如,SELECT name, age FROM students WHERE age > 18 AND gender = 'male'; 将从students表中选择年龄大于18岁且性别为男性的学生的姓名和年龄。

GROUP BY关键字用于将检索到的数据按照指定的列进行分组。

例如,SELECT gender, COUNT(*) FROM students GROUP BY gender; 将按照性别分组,并统计每个性别的学生人数。

HAVING关键字用于指定分组后的条件。

例如,SELECT gender, COUNT(*) FROM students GROUP BY gender HAVING COUNT(*) > 10; 将按照性别分组,并统计每个性别的学生人数,只选择人数大于10的性别。

ORDER BY关键字用于指定检索到的数据的排序方式。

例如,SELECT name, age FROM students ORDER BY age DESC; 将按照年龄降序排列学生的姓名和年龄。

SQL查询语法是一种非常强大的语言,可以帮助我们从数据库中检索出所需的数据。

sql语法知识点总结大全

sql语法知识点总结大全

sql语法知识点总结大全一、数据查询1. SELECT语句SELECT语句是SQL中用于从数据库中检索数据的关键字。

可以使用SELECT语句从一个或多个表中选择数据,还可以使用WHERE子句对查询结果进行筛选。

例如:```SELECT column1, column2FROM table_nameWHERE condition;```2. DISTINCT关键字DISTINCT关键字用于去除查询结果中的重复行,只返回唯一的行数据。

例如:```SELECT DISTINCT column1, column2FROM table_name;```3. WHERE子句WHERE子句可以用来过滤查询结果,只返回满足指定条件的数据。

可以使用比较运算符(=、<、>等)、逻辑运算符(AND、OR、NOT等)、IN、BETWEEN、LIKE等来构建条件。

例如:```SELECT column1, column2FROM table_nameWHERE column1 = 'value';```4. ORDER BY子句ORDER BY子句用于对查询结果进行排序,可以指定一个或多个列进行排序,并可以指定升序(ASC)或降序(DESC)。

例如:```SELECT column1, column2FROM table_nameORDER BY column1 ASC, column2 DESC;```5. GROUP BY子句GROUP BY子句用于将查询结果按照指定的列进行分组,并可以使用聚合函数(如COUNT、SUM、AVG等)进行汇总。

例如:```SELECT column1, COUNT(*)FROM table_nameGROUP BY column1;```6. HAVING子句HAVING子句用于对分组后的结果进行筛选,类似于WHERE子句对单行数据进行筛选,但是HAVING子句对分组后的数据进行筛选。

SQL查询语句

SQL查询语句

找出分数高于90分的学生姓名和所在院系 找出选修数据库的学生的学号和分数 给出计算机系选修数据库的学生的学号和 分数

SELECT 学号,分数 SELECT 学号,分数 SELECT 姓名,所在院系 FROM 课程,成绩 FROM 学生,课程,成绩 FROM 学生,成绩 WHERE (课程名=‘数据库’) WHERE (课程名=‘数据库’) WHERE (分数>90) AND 学生.学号=成绩.学号 AND 课程.课程号=成绩.课程号 AND 课程.课程号=成绩.课程号 AND 学生.学号=成绩.学号 \\多表连接

注:函数SUM和AVG只能对数值型字段进行计算
GROUP BY 子句
分组查询 求各个课程号(Cno)及相应的选课人数。其命 令为: SELECT Cno , COUNT(Sno) CntSno FROM Reports GROUP BY Cno;

GROUP BY子句按Cno的值分组,所有具有相 同Cno的元组为一组,对每一组的学生数使用 函数COUNT进行计算,统计出各课程的人数, 存放在名称为CntSno 这个属性列中。

字符串的匹配
LIKE 是字符串匹配运算符 样式符号 *代表0个或多个任意字符 ?代表1个任意字母 # 代表1个任意数字 (!)a-z代表字符(或以外)范围 通配符 %表示0个或多个字符串 _表示一个字符
查询姓名中第二个汉字是“力”的学生号信息 SELECT * FROM Students WHERE Sname LIKE '_力 %';
自身连接
当一个表与其自已进行连接操作时,称为表的自身连接。要查询的
内容均在同一表中,可以将表分别取两个别名,一个是X,一个是Y。 将X, Y中满足查询条件的行连接起来。这实际上是同一表的自身连 接。 查`询每一门课的间接先修课(即先修课的先修课)。 在Courses表关系中,只有每门课的直接先修课信息,而没有先修课 的先修课。要得到这个信息,必须先对一门课找到其先修课,再按 此先修课的课程号,查找它的先修课程。这就需要要将Courses表 与其自身连接。为方便连接运算,这里为Courses表取两个别名分 别为A,B。则完成该查询的SQL语句为:

数据库SQL查询语句大全

经典SQL查询语句大全 一、基础

1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 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 only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 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 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count(field1) as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、说明:几个高级查询运算词 A: UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 B: EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。 C: INTERSECT 运算符 INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。 注:使用运算词的几个查询结果行必须是一致的。 12、说明:使用外连接 A、left (outer) join: 左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。 SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c B:right (outer) join: 右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。 C:full/cross (outer) join: 全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。 12、分组:Group by: 一张表,一旦分组 完成后,查询后只能得到组相关的信息。 组相关的信息:(统计信息) count,sum,max,min,avg 分组的标准) 在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据 在selecte统计函数中的字段,不能和普通的字段放在一起;

SQL常用语法大全

SQL常⽤语法⼤全⼀、 Table 增加列1.增加列:alter table tableName add columnName varchar(30)1.2. 修改列类型:alter table tableName alter column columnName varchar(4000)1.3 修改列的名称:EXEC sp_rename 'tableName.column1' , 'column2' (把表名为tableName的column1列名修改为column2)1.4 删除列名ALTER TABLE At_StaffDailyRangeDetail DROP COLUMN column_name1.5 根据字段名查询表名SELECT as TableName, as columnname From syscolumns a INNER JOIN sysobjects b ON a.id=b.id AND b.type='U' AND ='Roles字段名'⼆、库转库:----insert into 库名1.dbo.表名(字段) select (字段) 库名2.dbo.表名三、case when :3.1 select (case Gender when 1 then '男' when 2 then '⼥' else '其他' end) as Gender from Table13.2 SELECT lft.FSName_Chinese, lft.fSNO,(CASE lft.FSNO WHEN 0 THEN '全天' WHEN 1 THEN '上半天' WHEN 2 THEN '下半天' ELSE '其它' end) as 休假类型 FROM leave_fitshift lft四、修改数据库字段空格UPDATE hr_Staff SET StaffName = RTRIM(LTRIM(StaffName))五、Excel拼接函数。

SQL查询语句

矿产资源开发利用方案编写内容要求及审查大纲
矿产资源开发利用方案编写内容要求及《矿产资源开发利用方案》审查大纲一、概述
㈠矿区位置、隶属关系和企业性质。

如为改扩建矿山, 应说明矿山现状、
特点及存在的主要问题。

㈡编制依据
(1简述项目前期工作进展情况及与有关方面对项目的意向性协议情况。

(2 列出开发利用方案编制所依据的主要基础性资料的名称。

如经储量管理部门认定的矿区地质勘探报告、选矿试验报告、加工利用试验报告、工程地质初评资料、矿区水文资料和供水资料等。

对改、扩建矿山应有生产实际资料, 如矿山总平面现状图、矿床开拓系统图、采场现状图和主要采选设备清单等。

二、矿产品需求现状和预测
㈠该矿产在国内需求情况和市场供应情况
1、矿产品现状及加工利用趋向。

2、国内近、远期的需求量及主要销向预测。

㈡产品价格分析
1、国内矿产品价格现状。

2、矿产品价格稳定性及变化趋势。

三、矿产资源概况
㈠矿区总体概况
1、矿区总体规划情况。

2、矿区矿产资源概况。

3、该设计与矿区总体开发的关系。

㈡该设计项目的资源概况
1、矿床地质及构造特征。

2、矿床开采技术条件及水文地质条件。

sql语法总结

sql语法总结1. SELECT语句:用于查询数据。

SELECT 列名1, 列名2, ... FROM 表名 WHERE 条件;2. INSERT语句:用于插入新的数据。

INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...);3. UPDATE语句:用于更新数据。

UPDATE 表名 SET 列名1 = 值1, 列名2 = 值2 WHERE 条件;4. DELETE语句:用于删除数据。

DELETE FROM 表名 WHERE 条件;5. CREATE TABLE语句:用于创建表。

CREATE TABLE 表名 (列名1 数据类型,列名2 数据类型,...);6. ALTER TABLE语句:用于修改表结构。

ALTER TABLE 表名 ADD 列名数据类型;ALTER TABLE 表名 MODIFY 列名数据类型;ALTER TABLE 表名 DROP 列名;7. CREATE INDEX语句:用于创建索引。

CREATE INDEX 索引名 ON 表名 (列名1, 列名2, ...);8. DROP TABLE语句:用于删除表。

DROP TABLE 表名;9. GROUP BY语句:用于分组查询。

SELECT 列名1, 列名2, ... FROM 表名 GROUP BY 列名1, 列名2, ...;10. ORDER BY语句:用于排序查询结果。

SELECT 列名1, 列名2, ... FROM 表名 ORDER BY 列名1 [ASC|DESC], 列名2 [ASC|DESC];这些是SQL语言中常用的语法,但并不是全部。

SQL语言具有更多的功能和语法,根据具体需求可以进行深入学习和掌握。

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

连接查询 通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。 在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在 一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。连接操作给用户带 来很大的灵活性,他们可以在任何时候增加新的数据类型。为不同实体创建新的表,尔后通过连接进行查询。 连接可以在SELECT 语句的FROM子句或WHERE子句中建立,似是而非在FROM子句中指出连接时有助于 将连接操作与WHERE子句中的搜索条件区分开来。所以,在Transact-SQL中推荐使用这种方法。 SQL-92标准所定义的FROM子句的连接语法格式为: FROM join_table join_type join_table [ON (join_condition)] 其中join_table指出参与连接操作的表名,连接可以对同一个表操作,也可以对多表操作,对同一 个表操作的连接又称做自连接。 join_type 指出连接类型,可分为三种:内连接、外连接和交叉连接。内连接(INNER JOIN)使用比 较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。根据所使用 的比较方式不同,内连接又分为等值连接、自然连接和不等连接三种。 外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN)、右外连接(RIGHT OUTER JOIN或RIGHT JOIN) 和全外连接(FULL OUTER JOIN或FULL JOIN)三种。与内连接不同的是,外连接不只列出与连接条件相匹 配的行,而是列出左表(左外连接时)、右表(右外连接时)或两个表(全外连接时)中所有符合搜索条件的数据行。

交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行的笛卡尔积,其结果集合中的 数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。 连接操作中的ON (join_condition) 子句指出连接条件,它由被连接表中的列和比较运算符、逻辑 运算符等构成。 无论哪种连接都不能对text、ntext和image数据类型列进行直接连接,但可以对这三种列进行间接 连接。例如: SELECT p1.pub_id,p2.pub_id,p1.pr_info FROM pub_info AS p1 INNER JOIN pub_info AS p2 ON DATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info) (一)内连接

内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分三种: 1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接 表中的所有列,包括其中的重复列。

2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些 运算符包括>、>=、<=、<、!>、!。

3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询 结果集合中所包括的列,并删除连接表中的重复列。 例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版社: SELECT * FROM authors AS a INNER JOIN publishers AS p ON a.city=p.city 又如使用自然连接,在选择列表中删除authors 和publishers 表中重复列(city和state): SELECT a.*,p.pub_id,p.pub_name,p.country FROM authors AS a INNER JOIN publishers AS p ON a.city=p.cityQQ291911320

(二)外连接 内连接时,返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件 的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外 连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。

如下面使用左外连接将论坛内容和作者信息连接起来: SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b ON a.username=b.username

下面使用全外连接将city表中的所有作者以及user表中的所有作者,以及他们所在的城市: SELECT a.*,b.* FROM city as a FULL OUTER JOIN user as b ON a.username=b.username

---------------------------------------------------------------------------------- 三)交叉连接

交叉连接不带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),但是在系统中可以进行定义,以接受其他的格式。当然,2000年临近,请你最好还是使用四位来表示年份。

既然你已经理解了INSERT语句是怎样工作的了,让我们转到EMPLOYEES表中的其他部分: INSERT INTO EMPLOYEES valueS (\'Bunyan\',\'Paul\',\'1970-07-04\', \'Boston\',12,70000); INSERT INTO EMPLOYEES valueS (\'John\',\'Adams\',\'1992-01-21\', \'Boston\',20,100000); INSERT INTO EMPLOYEES valueS (\'Smith\',\'Pocahontas\',\'1976-04-06\', \'Los Angles\',12,100000); INSERT INTO EMPLOYEES valueS (\'Smith\',\'Bessie\',\'1940-05-02\', \'Boston\',5,200000); INSERT INTO EMPLOYEES valueS (\'Jones\',\'Davy\',\'1970-10-10\', \'Boston\',8,45000); INSERT INTO EMPLOYEES valueS (\'Jones\',\'Indiana\',\'1992-02-01\', \'Chicago\',NULL,NULL); 在最后一项中,我们不知道Jones先生的工薪级别和年薪,所以我们输入NULL(不要引号)。NULL是SQL中的一种特殊情况,我们以后将进行详细的讨论。现在我们只需认为NULL表示一种未知的值。

有时,像我们刚才所讨论的情况,我们可能希望对某一些而不是全部的列进行赋值。除了对要省略的列输入NULL外,还可以采用另外一种INSERT语句,如下:

INSERT INTO EMPLOYEES( FIRST_NAME, LAST_NAME, HIRE_DATE, BRANCH_OFFICE) value( \'Indiana\',\'Jones\', \'1992-02-01\',\'Indianapolis\'); 这样,我们先在表名之后列出一系列列名。未列出的列中将自动填入缺省值,如果没有设置缺省值则填入NULL。请注意我们改变了列的顺序,而值的顺序要对应新的列的顺序。如果该语句中省略了FIRST_NAME和LAST_NAME项(这两项规定不能为空),SQL操作将失败。

相关文档
最新文档