sql基本语法,SQL数据库常用命令及语法举例
sql基本语法,SQL数据库常用命令及语法举例详细介绍
本文目录一览: SQL语句语法大全
连接对象.ExecuteSQL操作性语句[,RecordAffected][,Option]·RecordAffected为可选项,此出可放置一个变量,SQL语句执行后,所生效的记录数会自动保存到该变量中。通过访问该变量,就可知道SQL语句队多少条记录进行了操作。
selectmax(SQL成绩),min(MCSE成绩)from表---查SQL最高分和MCSE最低分---常用的函数:max(最大),min(最小),sum(总和),avg(平均值)---count(*)统计表内数据的行数。
DDL语句对数据库对象如表、列和视进行定义。它们并不对表中的行进行处理,这是因为DDL语句并不处理数据库中实际的数据。这些工作由另一类SQL语句—数据操作语言(DML)语句进行处理。
简单查询简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。例如,下面的语句查询testtable表中姓名为张三的nickname字段和email字段。
SQL是英文StructuredQueryLanguage的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。
SQL里最基本的语法是什么呢?
一.SELECT语句的完整语法为:
SELECT[ALL|DISTINCT|DISTINCTROW|TOP]
{*|talbe.*|[table.]field1[AS alias1][,[table.]field2[AS alias2][,…]]}
FROM tableexpression[,…
][IN externaldatabase]
[WHERE…]
[GROUP BY…]
[HAVING…]
[ORDER BY…]
[WITH OWNERACCESS OPTION]
说明:
用中括号([])括起来的部分表示是可选的,用大括号({})括起来的部分是表示必须从中选择其中的一个。
一. 1 FROM子句
FROM子句指定了SELECT语句中字段的来源。FROM子句后面是包含一个或多个的表达式(由逗号分开),其中的表达式可为单一表名称、已保存的查询或由 INNER JOIN、LEFT JOIN 或 RIGHT JOIN 得到的复合结果。如果表或查询存储在外部数据库,在IN 子句之后指明其完整路径。
例:下列SQL语句返回所有有定单的客户:
SELECT OrderID,Customer.customerID
FROM Orders Customers
WHERE Orders.CustomerID=Customers.CustomeersID
一.2 ALL、DISTINCT、DISTINCTROW、TOP谓词
(1) ALL 返回满足SQL语句条件的所有记录。如果没有指明这个谓词,默认为ALL。
例:SELECT ALL FirstName,LastName
FROM Employees
(2) DISTINCT 如果有多个记录的选择字段的数据相同,只返回一个。
(3) DISTINCTROW 如果有重复的记录,只返回一个
(4) TOP显示查询头尾若干记录。也可返回记录的百分比,这是要用 TOP N PERCENT子句(其中N 表示百分比)
例:返回5%定货额最大的定单
SELECT TOP 5 PERCENT*
FROM [ Order Details]
ORDER BY UnitPrice*Quantity*(1-Discount) DESC
一.3 用 AS 子句为字段取别名
如果想为返回的列取一个新的标题,或者,经过对字段的计算或总结之后,产生了一个新的值,希望把它放到一个新的列里显示,则用AS保留。
例:返回FirstName字段取别名为NickName
SELECT FirstName AS NickName ,LastName ,City
FROM Employees
例:返回新的一列显示库存价值
SELECT ProductName ,UnitPrice ,UnitsInStock ,UnitPrice*UnitsInStock AS valueInStock
FROM Products
二 .WHERE 子句指定查询条件
二 . 1比较运算符
比较运算符 含义
= 等于
> 大于
= 大于等于
不等于
!> 不大于
!#1/1/96# AND OrderDate#96-1-1#
也可以表示为:
WHERE OrderDate>Datevalue(‘1/1/96’)
使用 NOT 表达式求反。
例:查看96年1月1日以后的定单
WHERE Not OrderDateQuantity
另一种方法是用 Microsof JET SQL 独有的 JNNER JOIN
语法:
FROM table1 INNER JOIN table2
ON table1.field1 comparision table2.field2
其中comparision 就是前面WHERE子句用到的比较运算符。
SELECT FirstName,lastName,OrderID,CustomerID,OrderDate
FROM Employees
INNER JOIN Orders ON Employees.EmployeeID=Orders.EmployeeID
注意:
INNER JOIN不能连接Memo OLE Object Single Double 数据类型字段。
在一个JOIN语句中连接多个ON子句
语法:
SELECT fields
FROM table1 INNER JOIN table2
ON table1.field1 compopr table2.field1 AND
ON table1.field2 compopr table2.field2 OR
ON table1.field3 compopr table2.field3
也可以
SELECT fields
FROM table1 INNER JOIN
(table2 INNER JOIN [( ]table3
[INNER JOER] [( ]tablex[INNER JOIN]
ON table1.field1 compopr table2.field1
ON table1.field2 compopr table2.field2
ON table1.field3 compopr table2.field3
外部连接返回更多记录,在结果中保留不匹配的记录,不管存不存在满足条件的记录都要返回另一侧的所有记录。
FROM table [LEFT|RIGHT]JOIN table2
ON table1.field1comparision table.field2
用左连接来建立外部连接,在表达式的左边的表会显示其所有的数据
例:不管有没有定货量,返回所有商品
SELECT ProductName ,OrderID
FROM Products
LEFT JOIN Orders ON Products.PrductsID=Orders.ProductID
右连接与左连接的差别在于:不管左侧表里有没有匹配的记录,它都从左侧表中返回所有记录。
例:如果想了解客户的信息,并统计各个地区的客户分布,这时可以用一个右连接,即使某个地区没有客户,也要返回客户信息。
空值不会相互匹配,可以通过外连接才能测试被连接的某个表的字段是否有空值。
SELECT *
FROM talbe1
LEFT JOIN table2 ON table1.a=table2.c
四 .1 连接查询中使用Iif函数实现以0值显示空值
Iif表达式: Iif(IsNull(Amount,0,Amout)
例:无论定货大于或小于¥50,都要返回一个标志。
Iif([Amount]>50,?Big order?,?Small order?)
五 分组和总结查询结果
在SQL的语法里,GROUP BY和HAVING子句用来对数据进行汇总。GROUP BY子句指明了按照哪几个字段来分组,而将记录分组后,用HAVING子句过滤这些记录。
GROUP BY 子句的语法
SELECT fidldlist
FROM table
WHERE criteria
[GROUP BY groupfieldlist [HAVING groupcriteria]]
注:Microsoft Jet数据库 Jet 不能对备注或OLE对象字段分组。
GROUP BY字段中的Null值以备分组但是不能被省略。
在任何SQL合计函数中不计算Null值。
GROUP BY子句后最多可以带有十个字段,排序优先级按从左到右的顺序排列。
例:在‘WA’地区的雇员表中按头衔分组后,找出具有同等头衔的雇员数目大于1人的所有头衔。
SELECT Title ,Count(Title) as Total
FROM Employees
WHERE Region = ‘WA’
GROUP BY Title
HAVING Count(Title)>1
JET SQL 中的聚积函数
聚集函数 意义
SUM ( ) 求和
AVG ( ) 平均值
COUNT ( ) 表达式中记录的数目
COUNT (* ) 计算记录的数目
MAX 最大值
MIN 最小值
VAR 方差
STDEV 标准误差
FIRST 第一个值
LAST 最后一个值
六 用Parameters声明创建参数查询
Parameters声明的语法:
PARAMETERS name datatype[,name datatype[, …]]
其中name 是参数的标志符,可以通过标志符引用参数.
Datatype说明参数的数据类型.
使用时要把PARAMETERS 声明置于任何其他语句之前.
例:
PARAMETERS[Low price] Currency,[Beginning date]datatime
SELECT OrderID ,OrderAmount
FROM Orders
WHERE OrderAMount>[low price]
AND OrderDate>=[Beginning date]
七 功能查询
所谓功能查询,实际上是一种操作查询,它可以对数据库进行快速高效的操作.它以选择查询为目的,挑选出符合条件的数据,再对数据进行批处理.功能查询包括更新查询,删除查询,添加查询,和生成表查询.
七 .1 更新查询
UPDATE子句可以同时更改一个或多个表中的数据.它也可以同时更改多个字段的值.
更新查询语法:
UPDATE 表名
SET 新值
WHERE 准则
例:英国客户的定货量增加5%,货运量增加3%
UPDATE OEDERS
SET OrderAmount = OrderAmount *1.1
Freight = Freight*1.03
WHERE ShipCountry = ‘UK’
七 .2 删除查询
DELETE子句可以使用户删除大量的过时的或冗于的数据.
注:删除查询的对象是整个记录.
DELETE子句的语法:
DELETE [表名.*]
FROM 来源表
WHERE 准则
例: 要删除所有94年前的定单
DELETE *
FROM Orders
WHERE OrderData,,=)一起使用.返回一个布尔值True或False.ANY的意思是,表达式与子查询返回的一系列的值逐一比较,只要其中的一次比较产生True结果,ANY测试的返回 True值(既WHERE子句的结果),对应于该表达式的当前记录将进入主查询的结果中.ALL测试则要求表达式与子查询返回的一系列的值的比较都产生True结果,才回返回True值.
例:主查询返回单价比任何一个折扣大于等于25%的产品的单价要高的所有产品
SELECT * FROM Products
WHERE UnitPrice>ANY
(SELECT UnitPrice FROM[Order Details] WHERE Discount>0.25)
十 .2检查表达式的值是否匹配子查询返回的一组值的某个值
语法:
[NOT]IN(子查询)
例:返回库存价值大于等于1000的产品.
SELECT ProductName FROM Products
WHERE ProductID IN
(SELECT PrdoctID FROM [Order DEtails]
WHERE UnitPrice*Quantity>= 1000)
十 .2检测子查询是否返回任何记录
语法:
[NOT]EXISTS (子查询)
例:用EXISTS检索英国的客户
SELECT ComPanyName,ContactName
FROM Orders
WHERE EXISTS
(SELECT *
FROM Customers
WHERE Country = ‘UK’ AND
Customers.CustomerID= Orders.CustomerID)
SQL语句语法大全
我整理的一些比较常用的SQL语句语法 需要的朋友可以过来参考下
一 数据控制语句 (DML) 部分
INSERT (往数据表里插入记录的语句)
INSERT INTO 表名(字段名 字段名 ……) VALUES ( 值 值 ……);
INSERT INTO 表名(字段名 字段名 ……) SELECT 字段名 字段名 …… FROM 另外的表名;
字符串类型的字段值必须用单引号括起来 例如: GOOD DAY
如果字段值里包含单引号 需要进行字符串转换 我们把它替换成两个单引号
字符串类型的字段值超过定义的长度会出错 最好在插入前进行长度校验
日期字段的字段值可以用当前数据库的系统时间SYSDATE 精确到秒
或者用字符串转换成日期型函数TO_DATE(‘ YYYY MM DD )
TO_DATE()还有很多种日期格式 可以参看ORACLE DOC
年 月 日 小时:分钟:秒 的格式YYYY MM DD HH :MI:SS
INSERT时最大可操作的字符串长度小于等于 个单字节 如果要插入更长的字符串 请考虑字段用CLOB类型
方法借用ORACLE里自带的DBMS_LOB程序包
INSERT时如果要用到从 开始自动增长的序列号 应该先建立一个序列号
CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY START WITH
MAXVALUE CYCLE NOCACHE;
其中最大的值按字段的长度来定 如果定义的自动增长的序列号 NUMBER( ) 最大值为
INSERT 语句插入这个字段值为: 序列号的名称 NEXTVAL
DELETE (删除数据表里记录的语句)
DELETE FROM表名 WHERE 条件;
注意 删除记录并不能释放ORACLE里被占用的数据块表空间 它只把那些被删除的数据块标成unused
如果确实要删除一个大表里的全部记录 可以用 TRUNCATE 命令 它可以释放占用的数据块表空间
TRUNCATE TABLE 表名;
此操作不可回退
UPDATE (修改数据表里记录的语句)
UPDATE表名 SET 字段名 =值 字段名 =值 …… WHERE 条件;
如果修改的值N没有赋值或定义时 将把原来的记录内容清为NULL 最好在修改前进行非空校验;
值N超过定义的长度会出错 最好在插入前进行长度校验
注意事项:
A 以上SQL语句对表都加上了行级锁
确认完成后 必须加上事物处理结束的命令 MIT 才能正式生效
否则改变不一定写入数据库里
如果想撤回这些操作 可以用命令 ROLLBACK 复原
B 在运行INSERT DELETE 和 UPDATE 语句前最好估算一下可能操作的记录范围
应该把它限定在较小 (一万条记录) 范围内 否则ORACLE处理这个事物用到很大的回退段
程序响应慢甚至失去响应 如果记录数上十万以上这些操作 可以把这些SQL语句分段分次完成
其间加上MIT 确认事物处理
二 数据定义 (DDL) 部分
CREATE (创建表 索引 视图 同义词 过程 函数 数据库链接等)
ORACLE常用的字段类型有
CHAR 固定长度的字符串
VARCHAR 可变长度的字符串
NUMBER(M N) 数字型M是位数总长度 N是小数的长度
DATE 日期类型
创建表时要把较小的不为空的字段放在前面 可能为空的字段放在后面
创建表时可以用中文的字段名 但最好还是用英文的字段名
创建表时可以给字段加上默认值 例如 DEFAULT SYSDATE
这样每次插入和修改时 不用程序操作这个字段都能得到动作的时间
创建表时可以给字段加上约束条件
例如 不允许重复 UNIQUE 关键字 PRIMARY KEY
ALTER (改变表 索引 视图等)
改变表的名称
ALTER TABLE 表名 TO 表名 ;
在表的后面增加一个字段
ALTER TABLE表名 ADD 字段名 字段名描述;
修改表里字段的定义描述
ALTER TABLE表名 MODIFY字段名 字段名描述;
给表里的字段加上约束条件
ALTER TABLE 表名 ADD CONSTRAINT 约束名 PRIMARY KEY (字段名);
ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE (字段名);
把表放在或取出数据库的内存区
ALTER TABLE 表名 CACHE;
ALTER TABLE 表名 NOCACHE;
DROP (删除表 索引 视图 同义词 过程 函数 数据库链接等)
删除表和它所有的约束条件
DROP TABLE 表名 CASCADE CONSTRAINTS;
TRUNCATE (清空表里的所有记录 保留表的结构)
TRUNCATE 表名;
三 查询语句 (SELECT) 部分
SELECT字段名 字段名 …… FROM 表名 [表名 ……] WHERE 条件;
字段名可以带入函数
例如: COUNT(*) MIN(字段名) MAX(字段名) AVG(字段名) DISTINCT(字段名)
TO_CHAR(DATE字段名 YYYY MM DD HH :MI:SS )
NVL(EXPR EXPR )函数
解释:
IF EXPR =NULL
RETURN EXPR
ELSE
RETURN EXPR
DECODE(AA﹐V ﹐R ﹐V ﹐R )函数
解释:
IF AA=V THEN RETURN R
IF AA=V THEN RETURN R
…
ELSE
RETURN NULL
LPAD(char n char )函数
解释:
字符char 按制定的位数n显示 不足的位数用char 字符串替换左边的空位
字段名之间可以进行算术运算
例如: (字段名 *字段名 )/
查询语句可以嵌套
例如: SELECT …… FROM
(SELECT …… FROM表名 [表名 ……] WHERE 条件) WHERE 条件 ;
两个查询语句的结果可以做集合操作
例如: 并集UNION(去掉重复记录) 并集UNION ALL(不去掉重复记录) 差集MINUS 交集INTERSECT
分组查询
SELECT字段名 字段名 …… FROM 表名 [表名 ……] GROUP BY字段名
[HAVING 条件] ;
两个以上表之间的连接查询
SELECT字段名 字段名 …… FROM 表名 [表名 ……] WHERE
表名 字段名 = 表名 字段名 [ AND ……] ;
SELECT字段名 字段名 …… FROM 表名 [表名 ……] WHERE
表名 字段名 = 表名 字段名(+) [ AND ……] ;
有(+)号的字段位置自动补空值
查询结果集的排序操作 默认的排序是升序ASC 降序是DESC
SELECT字段名 字段名 …… FROM 表名 [表名 ……]
ORDER BY字段名 字段名 DESC;
字符串模糊比较的方法
INSTR(字段名 ‘字符串 )>
字段名 LIKE ‘字符串% [‘%字符串% ]
每个表都有一个隐含的字段ROWID 它标记着记录的唯一性
四 ORACLE里常用的数据对象 (SCHEMA)
索引 (INDEX)
CREATE INDEX 索引名ON 表名 ( 字段 [字段 ……] );
ALTER INDEX 索引名 REBUILD;
一个表的索引最好不要超过三个 (特殊的大表除外) 最好用单字段索引 结合SQL语句的分析执行情况
也可以建立多字段的组合索引和基于函数的索引
ORACLE 字符串可以索引的最大长度为 单字节
ORACLE 字符串可以索引的最大长度为 单字节
ORACLE DOC上说字符串最大可以建索引的长度约是:数据块的大小(db_block_size)* %
视图 (VIEW)
CREATE VIEW 视图名AS SELECT … FROM … ;
ALTER VIEW视图名 PILE;
视图仅是一个SQL查询语句 它可以把表之间复杂的关系简洁化
同义词 (SYNONMY)
CREATE SYNONYM同义词名FOR 表名;
CREATE SYNONYM同义词名FOR 表名@数据库链接名;
数据库链接 (DATABASE LINK)
CREATE DATABASE LINK数据库链接名CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘数据库连接字符串 ;
数据库连接字符串可以用NET EASY CONFIG或者直接修改TNSNAMES ORA里定义
数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一样
数据库全局名称可以用以下命令查出
SELECT * FROM GLOBAL_NAME;
查询远端数据库里的表
SELECT …… FROM 表名@数据库链接名;
五 权限管理 (DCL) 语句
GRANT 赋于权限
常用的系统权限集合有以下三个:
CONNECT(基本的连接) RESOURCE(程序开发) DBA(数据库管理)
常用的数据对象权限有以下五个:
ALL ON 数据对象名 SELECT ON 数据对象名 UPDATE ON 数据对象名
DELETE ON 数据对象名 INSERT ON 数据对象名 ALTER ON 数据对象名
GRANT CONNECT RESOURCE TO 用户名;
GRANT SELECT ON 表名 TO 用户名;
GRANT SELECT INSERT DELETE ON表名 TO 用户名 用户名 ;
REVOKE 回收权限
REVOKE CONNECT RESOURCE FROM 用户名;
REVOKE SELECT ON 表名 FROM 用户名;
lishixinzhi/Article/program/MySQL/201311/29570
几个简单的基本的sql语句
说明:几个简单的基本的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 * 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
SQL的基本语法
select
delect
updata
一、基础
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 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统计函数中的字段,不能和普通的字段放在一起;
13、对数据库进行操作:
分离数据库: sp_detach_db; 附加数据库:sp_attach_db 后接表明,附加需要完整的路径名
14.如何修改数据库的名称:
sp_renamedb 'old_name', 'new_name'
二、提升
1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
法一:select * into b from a where 1<>1(仅用于SQlServer)
法二:select top 0 * into b from a
2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)
insert into b(a, b, c) select d,e,f from b;
3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件
例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..
4、说明:子查询(表名1:a 表名2:b)
select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)
5、说明:显示文章、提交人和最后回复时间
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
6、说明:外连接查询(表名1:a 表名2:b)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
7、说明:在线视图查询(表名1:a )
select * from (SELECT a,b,c FROM a) T where t.a > 1;
8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 数值1 and 数值2
9、说明:in 的使用方法
select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)
10、说明:两张关联表,删除主表中已经在副表中没有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
11、说明:四表联查问题:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
12、说明:日程安排提前五分钟提醒
SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5
13、说明:一条sql 语句搞定数据库分页
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
具体实现:
关于数据库分页:
declare @start int,@end int
@sql nvarchar(600)
set @sql=’select top’+str(@end-@start+1)+’+from T where rid not in(select top’+str(@str-1)+’Rid from T where Rid>-1)’
exec sp_executesql @sql
注意:在top后不能直接跟一个变量,所以在实际应用中只有这样的进行特殊的处理。Rid为一个标识列,如果top后还有具体的字段,这样做是非常有好处的。因为这样可以避免 top的字段如果是逻辑索引的,查询的结果后实际表中的不一致(逻辑索引中的数据有可能和数据表中的不一致,而查询时如果处在索引则首先查询索引)
14、说明:前10条记录
select top 10 * form table1 where 范围
15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
(select a from tableA ) except (select a from tableB) except (select a from tableC)
17、说明:随机取出10条数据
select top 10 * from tablename order by newid()
18、说明:随机选择记录
select newid()
19、说明:删除重复记录
1),delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
2),select distinct * into temp from tablename
delete from tablename
insert into tablename select * from temp
评价: 这种操作牵连大量的数据的移动,这种做法不适合大容量但数据操作
3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段
alter table tablename
--添加一个自增列
add column_b int identity(1,1)
delete from tablename where column_b not in(
select max(column_b) from tablename group by column1,column2,...)
alter table tablename drop column column_b
20、说明:列出数据库里所有的表名
select name from sysobjects where type='U' // U代表用户
21、说明:列出表里的所有的列名
select name from syscolumns where id=object_id('TableName')
22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。
select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type
显示结果:
type vender pcs
电脑 A 1
电脑 A 1
光盘 B 2
光盘 A 2
手机 B 3
手机 C 3
23、说明:初始化表table1
TRUNCATE TABLE table1
24、说明:选择从10到15的记录
select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc
SQL语句的基本语法一
一 SELECT语句的完整语法为 SELECT[ALL|DISTINCT|DISTINCTROW|TOP] {*|talbe *|[table ]field [AS alias ][ [table ]field [AS alias ][ …]]} FROM tableexpression[ …][IN externaldatabase] [WHERE…] [GROUP BY…] [HAVING…] [ORDER BY…] [WITH OWNERACCESS OPTION] 说明 用中括号([])括起来的部分表示是可选的 用大括号({})括起来的部分是表示必须从中选择其中的一个 FROM子句 FROM子句指定了SELECT语句中字段的来源 FROM子句后面是包含一个或多个的表达式(由逗号分开) 其中的表达式可为单一表名称 已保存的查询或由 INNER JOIN LEFT JOIN 或 RIGHT JOIN 得到的复合结果 如果表或查询存储在外部数据库 在IN 子句之后指明其完整路径 例 下列SQL语句返回所有有定单的客户 SELECT OrderID Customer customerID FROM Orders Customers WHERE Orders CustomerID=Customers CustomeersID ALL DISTINCT DISTINCTROW TOP谓词 ( ) ALL 返回满足SQL语句条件的所有记录 如果没有指明这个谓词 默认为ALL 例 SELECT ALL FirstName LastName FROM Employees ( ) DISTINCT 如果有多个记录的选择字段的数据相同 只返回一个 ( ) DISTINCTROW 如果有重复的记录 只返回一个 ( ) TOP显示查询头尾若干记录 也可返回记录的百分比 这是要用 TOP N PERCENT子句(其中N 表示百分比) 例 返回 %定货额最大的定单 SELECT TOP PERCENT* FROM [ Order Details] ORDER BY UnitPrice*Quantity*( Discount) DESC 用 AS 子句为字段取别名 如果想为返回的列取一个新的标题 或者 经过对字段的计算或总结之后 产生了一个新的值 希望把它放到一个新的列里显示 则用AS保留 例 返回FirstName字段取别名为NickName SELECT FirstName AS NickName LastName City FROM Employees 例 返回新的一列显示库存价值 SELECT ProductName UnitPrice UnitsInStock UnitPrice*UnitsInStock AS valueInStock FROM Products 二 WHERE 子句指定查询条件 比较运算符 比较运算符 含义 = 等于 > 大于 < 小于 >= 大于等于 <= 小于等于 <> 不等于 !> 不大于 !< 不小于 例 返回 年 月的定单 SELECT OrderID CustomerID OrderDate FROM Orders WHERE OrderDate># / / # AND OrderDate<# / / # 注意 Mcirosoft JET SQL 中 日期用 # 定界 日期也可以用Datevalue()函数来代替 在比较字符型的数据时 要加上单引号 尾空格在比较中被忽略 例 WHERE OrderDate># # 也可以表示为 WHERE OrderDate>Datevalue( / / ) 使用 NOT 表达式求反 例 查看 年 月 日以后的定单 WHERE Not OrderDate<=# / / # 范围(BEEEN 和 NOT BEEEN) BEEEN …AND…运算符指定了要搜索的一个闭区间 例 返回 年 月到 年 月的定单 WHERE OrderDate Beeen # / / # And # / / # 列表(IN NOT IN) IN 运算符用来匹配列表中的任何一个值 IN子句可以代替用OR子句连接的一连串的条件 例 要找出住在 London Paris或Berlin的所有客户 SELECT CustomerID CompanyName ContactName City FROM Customers WHERE City In( London Paris Berlin ) 模式匹配(LIKE) LIKE运算符检验一个包含字符串数据的字段值是否匹配一指定模式 LIKE运算符里使用的通配符 通配符 含义 ? 任何一个单一的字符 * 任意长度的字符 # ~ 之间的单一数字 [字符列表] 在字符列表里的任一值 [!字符列表] 不在字符列表里的任一值 指定字符范围 两边的值分别为其上下限 例 返回邮政编码在( ) 到( ) 之间的客户 SELECT CustomerID CompanyName City Phone FROM Customers WHERE Phone Like ( ) #### LIKE运算符的一些样式及含义 样式 含义 不符合 LIKE A* A后跟任意长度的字符 Bc c LIKE [*] * LIKE ? 与 之间有任意一个字符 wer LIKE ## kd LIKE [a z] a z间的任意一个字符 % LIKE [! ] 非 间的任意一个字符 LIKE [[] * 三 用ORDER BY子句排序结果 ORDER子句按一个或多个(最多 个)字段排序查询结果 可以是升序(ASC)也可以是降序(DESC) 缺省是升序 ORDER子句通常放在SQL语句的最后 ORDER子句中定义了多个字段 则按照字段的先后顺序排序 例 SELECT ProductName UnitPrice UnitInStock FROM Products ORDER BY UnitInStock DESC UnitPrice DESC ProductName ORDER BY 子句中可以用字段在选择列表中的位置号代替字段名 可以混合字段名和位置号 例 下面的语句产生与上列相同的效果 SELECT ProductName UnitPrice UnitInStock FROM Products ORDER BY DESC DESC 四 运用连接关系实现多表查询 例 找出同一个城市中供应商和客户的名字 SELECT Customers CompanyName Suppliers ComPany Name FROM Customers Suppliers WHERE Customers City=Suppliers City 例 找出产品库存量大于同一种产品的定单的数量的产品和定单 SELECT ProductName OrderID UnitInStock Quantity FROM Products [Order Deails] WHERE Product productID=[Order Details] ProductID AND UnitsInStock>Quantity 另一种方法是用 Microsof JET SQL 独有的 JNNER JOIN 语法 FROM table INNER JOIN table ON table field parision table field 其中parision 就是前面WHERE子句用到的比较运算符 SELECT FirstName lastName OrderID CustomerID OrderDate FROM Employees INNER JOIN Orders ON Employees EmployeeID=Orders EmployeeID 注意 INNER JOIN不能连接Memo OLE Object Single Double 数据类型字段 在一个JOIN语句中连接多个ON子句 语法 SELECT fields FROM table INNER JOIN table ON table field popr table field AND ON table field popr table field OR ON table field popr table field 也可以 SELECT fields FROM table INNER JOIN (table INNER JOIN [( ]table [INNER JOER] [( ]tablex[INNER JOIN] ON table field popr table field ON table field popr table field ON table field popr table field 外部连接返回更多记录 在结果中保留不匹配的记录 不管存不存在满足条件的记录都要返回另一侧的所有记录 FROM table [LEFT|RIGHT]JOIN table ON table field parision table field 用左连接来建立外部连接 在表达式的左边的表会显示其所有的数据 例 不管有没有定货量 返回所有商品 SELECT ProductName OrderID FROM Products LEFT JOIN Orders ON Products PrductsID=Orders ProductID lishixinzhi/Article/program/Oracle/201311/16954
SQL数据库常用命令及语法举例
SQL Server数据库中的AS使用
下面是一些常用的SQL语句,虽然很基础,可是却很值得收藏,对于初学者非常实用
SQL常用命令使用方法:(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.excute(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条记录
rs.pagecount 根据 pagesize 的设置返回总页数
rs.recordcount 返回记录总数
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete 删除当前记录,但记录指针不会向下移动
rs.addnew 添加记录到数据表末端
rs.update 更新数据表记录
参考资料
SQL常用命令.csdn[引用时间2017-12-30]
sql增删改查基本语法
sql增删改查基本语法如下:
1、“INSERT INTO”语句,用于向表格中增加新的行。
2、“DELETE”语句,用于删除表中的行。
3、“Update”语句,用于修改表中的数据。
4、“SELECT”语句,用于从表中选取数据。
sql语言特点:
SQL可以独立完成数据库生命周期中的全部活动,包括定义关系模式、录入数据、建立数据库、查询、更新、维护、数据库重构、数据库安全性控制等一系列操作,这就为数据库应用系统开发提供了良好的环境,在数据库投入运行后,还可根据需要随时逐步修改模式,且不影响数据库的运行,从而使系统具有良好的可扩充性。
SQL数据库常用语法都有哪些?
数据库管理系统非常多,你说的2005、2008等都是微软的产品,指的是SQL Server2005/2008。其实除了微软SQL Server系列以外,还有很多其它的,比如Sybase、informix、DB2、ORACLE,以上这些都是收费软件,多数应用于企业环境。
目前比较流行的免费数据库系统有mysql,在互联网上,mysql应该是使用非常广的了。
微软产品的优势是使用比较方便、简单、直观。但它对Windows系统的依赖性很强,也就是只能在Windows上运行。mysql除了windows,还可以在 linux、unix上跑,包括oracle、DB2、Sybase等都是可以在几个平台上运行的。
作为学生,直接使用微软的SQL Server2005/2008精简版就可以了,精简版可以免费使用。
另外,站长团上有产品团购,便宜有保证
http://wenku.baidu.com/view/0ac6fd00a6c30c2259019edf.html
你看看这个吧!~ 都是些基本的关键字!~
掌握SQL四条最基本的数据操作语句:Insert,Select,Update和Delete。
练掌握SQL是数据库用户的宝贵财 富。在本文中,我们将引导你掌握四条最基本的数据操作语句—SQL的核心功能—来依次介绍比较操作符、选择断言以及三值逻辑。当你完成这些学习后,显然你已经开始算是精通SQL了。
在我们开始之前,先使用CREATE TABLE语句来创建一个表(如图1所示)。DDL语句对数据库对象如表、列和视进行定义。它们并不对表中的行进行处理,这是因为DDL语句并不处理数据库中实际的数据。这些工作由另一类SQL语句—数据操作语言(DML)语句进行处理。
SQL中有四种基本的DML操作:INSERT,SELECT,UPDATE和DELETE。由于这是大多数SQL用户经常用到的,我们有必要在此对它们进行一一说明。在图1中我们给出了一个名为EMPLOYEES的表。其中的每一行对应一个特定的雇员记录。请熟悉这张表,我们在后面的例子中将要用到它。
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操作将失败。
让我们来看一看上述INSERT语句的语法图:
INSERT INTO table
[(column { ,column})]
VALUES
(columnvalue [{,columnvalue}]);
和前一篇文章中一样,我们用方括号来表示可选项,大括号表示可以重复任意次数的项(不能在实际的SQL语句中使用这些特殊字符)。VALUE子句和可选的列名列表中必须使用圆括号。
SELECT语句
SELECT语句可以从一个或多个表中选取特定的行和列。因为查询和检索数据是数据库管理中最重要的功能,所以SELECT语句在SQL中是工作量最大的部分。实际上,仅仅是访问数据库来分析数据并生成报表的人可以对其他SQL语句一窍不通。
SELECT语句的结果通常是生成另外一个表。在执行过程中系统根据用户的标准从数据库中选出匹配的行和列,并将结果放到临时的表中。在直接SQL(direct SQL)中,它将结果显示在终端的显示屏上,或者将结果送到打印机或文件中。也可以结合其他SQL语句来将结果放到一个已知名称的表中。
SELECT语句功能强大。虽然表面上看来它只用来完成本文第一部分中提到的关系代数运算“选择”(或称“限制”),但实际上它也可以完成其他两种关系运算—“投影”和“连接”,SELECT语句还可以完成聚合计算并对数据进行排序。
SELECT语句最简单的语法如下:
SELECT columns FROM tables;
当我们以这种形式执行一条SELECT语句时,系统返回由所选择的列以及用户选择的表中所有指定的行组成的一个结果表。这就是实现关系投影运算的一个形式。
让我们看一下使用图1中EMPLOYEES表的一些例子(这个表是我们以后所有SELECT语句实例都要使用的。而我们在图2和图3中给出了查询的实际结果。我们将在其他的例子中使用这些结果)。
假设你想查看雇员工作部门的列表。那下面就是你所需要编写的SQL查询:
SELECT BRANCH_OFFICE FROM EMPLOYEES;
以上SELECT语句的执行将产生如图2中表2所示的结果。
由于我们在SELECT语句中只指定了一个列,所以我们的结果表中也只有一个列。注意结果表中具有重复的行,这是因为有多个雇员在同一部门工作(记住SQL从所选的所有行中将值返回)。要消除结果中的重复行,只要在SELECT语句中加上DISTINCT子句:
SELECT DISTINCT BRANCH_OFFICE
FROM EMPLOYEES;
这次查询的结果如表3所示。
现在已经消除了重复的行,但结果并不是按照顺序排列的。如果你希望以字母表顺序将结果列出又该怎么做呢?只要使用ORDER BY子句就可以按照升序或降序来排列结果:
SELECT DISTINCT BRANCH_OFFICE
FROM EMPLOYEES
ORDER BY BRANCH_OFFICE ASC;
这一查询的结果如表4所示。请注意在ORDER BY之后是如何放置列名BRANCH _OFFICE的,这就是我们想要对其进行排序的列。为什么即使是结果表中只有一个列时我们也必须指出列名呢?这是因为我们还能够按照表中其他列进行排序,即使它们并不显示出来。列名BRANCH_ OFFICE之后的关键字ASC表示按照升序排列。如果你希望以降序排列,那么可以用关键字DESC。
同样我们应该指出ORDER BY子句只将临时表中的结果进行排序;并不影响原来的表。
假设我们希望得到按部门排序并从工资最高的雇员到工资最低的雇员排列的列表。除了工资括号中的内容,我们还希望看到按照聘用时间从最近聘用的雇员开始列出的列表。以下是你将要用到的语句:
SELECT BRANCH_OFFICE,FIRST_NAME,
LAST_NAME,SALARY,HIRE_DATE
FROM EMPLOYEES
ORDER BY SALARY DESC,
HIRE_DATE DESC;
这里我们进行了多列的选择和排序。排序的优先级由语句中的列名顺序所决定。SQL将先对列出的第一个列进行排序。如果在第一个列中出现了重复的行时,这些行将被按照第二列进行排序,如果在第二列中又出现了重复的行时,这些行又将被按照第三列进行排序……如此类推。这次查询的结果如表5所示。
将一个很长的表中的所有列名写出来是一件相当麻烦的事,所以SQL允许在选择表中所有的列时使用*号:
SELECT * FROM EMPLOYEES;
这次查询返回整个EMPLOYEES表,如表1所示。
下面我们对开始时给出的SELECT语句的语法进行一下更新(竖直线表示一个可选项,允许在其中选择一项。):
SELECT [DISTINCT]
(column [{, columns}])| *
FROM table [ {, table}]
[ORDER BY column [ASC] | DESC
[ {, column [ASC] | DESC }]];
定义选择标准
在我们目前所介绍的SELECT语句中,我们对结果表中的列作出了选择但返回的是表中所有的行。让我们看一下如何对SELECT语句进行限制使得它只返回希望得到的行:
SELECT columns FROM tables [WHERE predicates];
WHERE子句对条件进行了设置,只有满足条件的行才被包括到结果表中。这些条件由断言(predicate)进行指定(断言指出了关于某件事情的一种可能的事实)。如果该断言对于某个给定的行成立,该行将被包括到结果表中,否则该行被忽略。在SQL语句中断言通常通过比较来表示。例如,假如你需要查询所有姓为Jones的职员,则可以使用以下SELECT语句:
SELECT * FROM EMPLOYEES
WHERE LAST_NAME = 'Jones';
LAST_NAME = 'Jones'部分就是断言。在执行该语句时,SQL将每一行的LAST_NAME列与“Jones”进行比较。如果某一职员的姓为“Jones”,即断言成立,该职员的信息将被包括到结果表中(见表6)。
使用最多的六种比较
我们上例中的断言包括一种基于“等值”的比较(LAST_NAME = 'Jones'),但是SQL断言还可以包含其他几种类型的比较。其中最常用的为:
等于 =
不等于 <>
小于 <
大于 >
小于或等于 <=
大于或等于 >=
下面给出了不是基于等值比较的一个例子:
SELECT * FROM EMPLOYEES
WHERE SALARY > 50000;