sql中as的用法和一些经典的sql语句
sql中as的用法和一些经典的sql语句
2008-08-21 21:55
总结一些工作中用到或碰到的SQL语句,希望能与大家分享,同时也希望大家能提供更多的精妙SQL语句.....
1、delete table1 from (select * from table2) as t2 where table1.id=t2.id
2、truncate table table1 (不在事务日志中做记录,比delete table快,但不能激活触发器)
3、update table1 set column=column+1 where id=(select id from table2)
4、update table1 set column=column+1 from table1,table2 where
table1.id=table2.id
5、select top n [Percent] * from table1 '输出百分比记录
6、select id,column1 * column2 as column from table1 '可算明白as的用法了
7、select * from table1 where column1 like 'SQL#_G_O' escape '#' '单匹配
8、select table1.id from table1 where not exists (select table2.id from
table2 where table1.id=table2.id) '这个应该比not in快一些
9、select table1.id from table1,table2 where table1.id<>table2.id '看复合查询机制
10、select table1.id from table1,table2,(select id from table3) as t3
where table1.id=table2.id and table2.id=t3.id '有些类似[1]了......
11、select * from table1 where column1 like '[A]%' or like '[^B]%'
12、select @column1=column1 from table1;select @column1 as column1 '存储到自定义变量
13、select * from table1 where contains(column1,'char1 or char2*') '全文索引
14、select * from table1 where contains(column1,'前有 near 中有 near 后有')
15、select * from table1 where
contains(column1,'formsof(inflectional,go)') '派生
16、select * from table1 where contains(description,'isabout(apple
weight(.9),boy weight(.8),china weight(.7))') '权重
17、select * from table1 where freetext(column1,'char') '仅支持文字不支持表达式搜索
18、insert into table1 select column1,count(column1) from table2 group
by column1 '统计
-----------------------------------------------------------------------------------------
1 说明:复制表(只复制结构,源表名:a 新表名:b)
SQL: select * into b from a where 1<>1
2 说明:拷贝表(拷贝数据,源表名:a 目标表名:b) SQL: insert into b(a, b, c) select d,e,f from b;
3 说明:显示文章、提交人和最后回复时间
SQL: select a.title,ername,b.adddate from table a,(select
max(adddate) adddate from table where table.title=a.title) b
4 说明:外连接查询(表名1:a 表名2:b)
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
5 说明:日程安排提前五分钟提醒
SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5
6 说明:两张关联表,删除主表中已经在副表中没有的信息
SQL:
delete from info where not exists ( select * from infobz where
info.infid=infobz.infid )
7 说明:
从数据库中去一年的各单位电话费统计(电话费定额和电话费清单两个表来源)
SQL:
SELECT erper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy') AS
telyear,
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '01', a.factration)) AS
JAN,
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '02', a.factration)) AS
FRI,
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '03', a.factration)) AS
MAR,
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '04', a.factration)) AS
APR,
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '05', a.factration)) AS
MAY,
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '06', a.factration)) AS
JUE,
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '07', a.factration)) AS
JUL,
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '08', a.factration)) AS
AGU,
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '09', a.factration)) AS
SEP,
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '10', a.factration)) AS OCT,
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '11', a.factration)) AS
NOV,
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '12', a.factration)) AS
DEC
FROM (SELECT erper, a.tel, a.standfee, b.telfeedate, b.factration
FROM TELFEESTAND a, TELFEE b
WHERE a.tel = b.telfax) a
GROUP BY erper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy')
8 说明:四表联查问题:
SQL: 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 .....
9 说明:得到表中最小的未使用的ID号
SQL:
SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.HandleID = 1) THEN
MIN(HandleID) + 1 ELSE 1 END) as HandleID
FROM Handle
WHERE NOT HandleID IN (SELECT a.HandleID - 1 FROM Handle a)
10 说明:模糊查询,单字匹配(短横线代表待匹配内容)
select * from table where field1 like 'A_B_C'
11 说明:as的用法
select id,column1 * column2 as column from table1
sql 语句 别名
sql 语句 别名
在SQL语句中,我们可以使用别名来为表格和列取一个临时的名称,使语句更易读和理解。
例如:
```sql
SELECT column1 AS alias1, column2 AS alias2
FROM table1 AS t
WHERE t.column1 = 10;
```
在这个例子中,我们使用AS关键字给column1取了一个alias1的别名,给column2取了一个alias2的别名。同时我们使用AS也给table1取了一个t的别名。
使用别名的好处:
1. 使语句更简洁,提高可读性。不用每次都写完整的表名和列名。
2. 可以为列取一个更有意义的名称,便于理解。
3. 可以避免与保留字的冲突。如果表名或列名是SQL的保留字,可以取一个别名来避免错误。
4. 可以在查询中为同一表取多个别名,自连接表。
5. 在GROUP BY, ORDER BY, HAVING等语句中使用别名也更简洁。
合理使用别名可以使SQL语句更简洁清晰,提高可读性,是编写SQL的一个好习惯。
sqlwithas用法详解
sqlwithas⽤法详解
⼀.WITH AS的含义 WITH AS短语,也叫做⼦查询部分(subquery factoring),可以让你做很多事情,定义⼀个SQL⽚断,该SQL⽚断会被整个
SQL语句所⽤到。有的时候,是为了让SQL语句的可读性更⾼些,也有可能是在UNION ALL的不同部分,作为提供数据的部
分。
特别对于UNION ALL⽐较有⽤。因为UNION ALL的每个部分可能相同,但是如果每个部分都去执⾏⼀遍的话,则成本太⾼,
所以可以使⽤WITH AS短语,则只要执⾏⼀遍即可。如果WITH AS短语所定义的表名被调⽤两次以上,则优化器会⾃动将WITH AS短语所获取的数据放⼊⼀个TEMP表⾥,如果只是被调⽤⼀次,则不会。⽽提⽰materialize则是强制将WITH AS短
语⾥的数据放⼊⼀个全局临时表⾥。很多查询通过这种⽅法都可以提⾼速度。
⼆.使⽤⽅法
先看下⾯⼀个嵌套的查询语句:
复制代码 代码如下:
select * from person.StateProvince where CountryRegionCode in
(select CountryRegionCode from person.CountryRegion where Name like 'C%')
上⾯的查询语句使⽤了⼀个⼦查询。虽然这条SQL语句并不复杂,但如果嵌套的层次过多,会使SQL语句⾮常难以阅读和维
护。因此,也可以使⽤表变量的⽅式来解决这个问题,SQL语句如下:
复制代码 代码如下:
declare @t table(CountryRegionCode nvarchar(3))
insert into @t(CountryRegionCode) (select CountryRegionCode from person.CountryRegion where Name like 'C%')
select * from person.StateProvince where CountryRegionCode
selece as 语句
selece as 语句
"selece as" 语句可能是一个拼写错误,正确的应该是
"select as" 语句。在 SQL 中,"select as" 语句用于给查询结果的列起别名。例如:
SELECT column_name AS alias_name.
FROM table_name;
这个语句将会从指定的表中选择指定的列,并且给这些列起别名为 alias_name。这在查询结果需要更具有可读性或者需要在后续的操作中引用相同的列时非常有用。起别名的列可以使用在后续的查询中,也可以作为输出结果的列名。
另外,"select as" 语句也可以用在计算列的情况下,比如:
SELECT column1 + column2 AS sum.
FROM table_name;
这个语句将会把 column1 和 column2 相加,并且把结果起名为 sum。
总的来说,"select as" 语句在 SQL 中是一个非常有用的功能,可以让查询结果更具有可读性,也可以方便后续的操作和引用。
with as 用法 sql
一、 什么是WITH AS语句?
WITH AS语句是SQL中的一种常用语法,用于创建临时表或视图,并在后续的SQL语句中引用这些临时表或视图。通过在一个语句中“WITH”关键字后面定义一个或多个临时表或视图,并在后面的语句中使用“AS”关键字为其命名,可以简化复杂查询的编写,并提高代码的可读性和维护性。
二、WITH AS语句的语法结构
WITH AS语句的语法结构如下所示:
```
WITH AS (
),
AS (
),
...
SELECT ...
```
其中,``为临时表或视图的名称,``为定义临时表或视图的SQL语句。多个临时表或视图的定义之间使用逗号分隔,在最后一个临时表或视图的定义结束后,可以使用SELECT语句来引用这些临时表或视图,并进行查询操作。在后续的查询中,可以直接使用临时表或视图的名称来引用它们,而不需要重复编写其查询语句,提高了代码的可读性和简洁性。
三、WITH AS语句的使用示例
下面通过一个简单的示例来展示WITH AS语句的使用方法,假设有一个员工表和一个部门表,现在需要查询每个部门的平均工资。
我们可以使用WITH AS语句定义两个临时表,分别用来计算每个员工的工资总额和每个部门的员工数:
```
WITH total_salary AS (
SELECT department_id, SUM(salary) AS total_salary
FROM employee
GROUP BY department_id
),
employee_count AS (
SELECT department_id, COUNT(*) AS count
FROM employee
GROUP BY department_id
)
```
我们可以在后续的语句中引用这两个临时表,并计算每个部门的平均工资: ```
SQL中Withas的用法
SQL中Withas的⽤法
⼀.WITH AS的含义 WITH AS短语,也叫做⼦查询部分(subquery factoring),可以让你做很多事情,定义⼀个SQL⽚断,该SQL⽚断会被整个SQL语句所⽤
到。有的时候,是为了让SQL语句的可读性更⾼些,也有可能是在UNION ALL的不同部分,作为提供数据的部分。
特别对于UNION ALL⽐较有⽤。因为UNION ALL的每个部分可能相同,但是如果每个部分都去执⾏⼀遍的话,则成本太⾼,所以可以使⽤WITH AS短语,则只要执⾏⼀遍即可。如果WITH AS短语所定义的表名被调⽤两次以上,则优化器会⾃动将WITH AS短语所获取的数据放
⼊⼀个TEMP表⾥,如果只是被调⽤⼀次,则不会。⽽提⽰materialize则是强制将WITH AS短语⾥的数据放⼊⼀个全局临时表⾥。很多查询
通过这种⽅法都可以提⾼速度。
⼆.使⽤⽅法
先看下⾯⼀个嵌套的查询语句:
select * from person.StateProvince where CountryRegionCode in
(select CountryRegionCode from person.CountryRegion where Name like 'C%')
上⾯的查询语句使⽤了⼀个⼦查询。虽然这条SQL语句并不复杂,但如果嵌套的层次过多,会使SQL语句⾮常难以阅读和维护。因此,也可
以使⽤表变量的⽅式来解决这个问题,SQL语句如下:
declare @t table(CountryRegionCode nvarchar(3))
insert into @t(CountryRegionCode) (select CountryRegionCode from person.CountryRegion where Name like 'C%')
select * from person.StateProvince where CountryRegionCode
SQL中使用WITHAS提高性能
SQL中使⽤WITHAS提⾼性能
1. 案例起因
公司门店应⽤程序每天都要出⼀份报表,⽤来统计所有商品当天的期初库存数量、⼊库数量、出库数量
及当天的期末库存数量。运⾏半年以后,这份报表运⾏越来越慢,到现在,每次运⾏该报表显⽰当天数据时需要近20秒的时间。于是开发⼈员找到我,希望我看看,是不是可以使该报表运⾏的时间更短。
该报表就是⼀段SQL语句,主要由三部分组成,第⼀部分是计算每个商品的期初数量,第⼆部分是计算每个商品的当天发⽣(包括⼊库和出库的)数量,第三部分是计算每个商品的期末数量,也就是当天的余额。每个部分使⽤UNION ALL连接起来。
我看到该报表,第⼀个感觉就是这段SQL⾥的每个部分都要对表进⾏扫描,明显成本过⾼。应该可以使⽤WITH AS进⾏改写。
2. WITH AS的含义
WITH AS短语,也叫做⼦查询部分(subquery factoring),可以让你做很多事情,定义⼀个SQL⽚断,该SQL⽚断会被整个SQL语句所⽤到。有的时候,是为了让SQL语句的可读性更⾼些, 也有可能是在UNION ALL的不同部分,作为提供数据的部分。
特别对于UNION ALL⽐较有⽤。因为UNION ALL的每个部分可能相同,但是如果每个部分都去执⾏⼀遍的话,则成本太⾼,所以可以使⽤WITH AS短语,则只要执⾏⼀遍即可。如果WITH AS短语所定义的表名被调⽤两次以上,则优化器会⾃动将WITH AS短语所获取的数据放⼊⼀个TEMP表⾥,如果只是被调⽤⼀次,则不会。⽽提⽰materialize则是强制将WITH AS短语⾥的数据放⼊⼀个全局临时表⾥。很多查询通过这种⽅法都可以提⾼速度。
3. 案例说明
⾸先介绍该SQL所涉及到的主要的表的结构。该表表名为fin,⽤来存放每天每个商品的发⽣数以及该商
品的余额数。其表结构为如下所⽰(这⾥我只选取了与我们要讨论的SQL相关的部分表字段)。
SQL> desc fin
sql with as 原理
- 1 - sql with as 原理
SQL中的WITHAS语句是一种常用的数据查询语句,它可以将一个复杂的查询语句分解为多个小的查询,然后使用别名来引用这些子查询的结果集。这样可以提高SQL查询的可读性和可维护性。
WITH AS语句的基本语法如下:
WITH subquery_name AS (
SELECT column1, column2, ...
FROM table_name
WHERE condition
)
SELECT *
FROM subquery_name;
其中,subquery_name是子查询的别名,括号中是子查询的语句。在主查询中,可以使用subquery_name来引用子查询的结果集。使用WITH AS语句可以避免在主查询中多次使用相同的子查询,从而提高查询效率。
WITH AS语句还可以嵌套使用,也可以使用多个WITH AS子句。此外,WITH AS语句还支持递归查询,可以用来处理一些树形结构的数据。
总之,WITH AS语句是一种非常实用的SQL语句,可以提高查询效率和可读性,对于处理复杂数据查询非常有帮助。
oracle as语句
- 1 - oracle as语句
OracleAS语句是Oracle数据库管理系统中的主要语句,它可以用来查询、操作和管理数据库中的数据。Oracle AS语句的功能强大,有助于提高数据库的性能,提高编程效率,满足企业系统应用中更复杂的数据处理要求。
AS语句是Oracle数据库控制台命令行环境中主要使用的一种语句,它属于Oracle数据库脚本语言系列。AS语句可以建立、查询、修改、恢复等操作,是Oracle数据库最用的一种语句,主要用于管理数据库的表、索引、视图、存储过程等。
Oracle AS语句可以用来处理结构化数据,以减少计算机运行程序的负担,简化数据库管理系统的操作。AS语句具有快速、可靠、安全等特点,能够最大限度地发挥数据库的性能,提高编程效率。
AS语句有两个主要类型:DDL(Data Definition Language)语句和DML(Data Manipulation Language)语句。DDL语句用于定义和操作数据库中的对象,例如创建表、删除表、修改表结构等;DML语句用于操作数据库中的数据,例如插入数据、更新数据、查询数据等。此外,Oracle还提供了一些特殊的语句,如SESSION变量语句、系统变量语句等,可以用来控制Oracle的环境、命令和操作。
Oracle的AS语句的功能日益强大,通过它,可以完成数据库的建立和管理,实现数据库功能的优化,可以更加高效地完成复杂的数据处理任务,更有效地实现企业系统应用。
Oracle AS语句有以下应用实例: - 2 - 1.建表:创建表时,可以使用如下AS语句:
```
CREATE TABLE名
(列1据类型 [列约束条件] [,2据类型 [列约束条件]...]
[,约束] ) ;
```
2.入数据:插入数据时,可以使用如下AS语句:
oracle select as 用法
在 Oracle 数据库中,`SELECT AS`
语句用于在查询结果中为列分配别名。别名可以提高查询的可读性,同时还有助于避免列名冲突。以下是 `SELECT AS`
语句的基本用法:
```sql
SELECT column1, column2, column3 AS alias_name1, column4 AS alias_name2
FROM table_name;
```
这里,`column1`、`column2`、`column3` 和 `column4` 是表中的列名,`alias_name1`
和 `alias_name2` 是为这些列分配的别名。
例如,假设我们有一个名为 `employees`
的表,包含以下列:`id`、`name`、`salary` 和
`department`。我们可以使用以下查询为列分配别名:
```sql
SELECT
id AS
employee_id, name AS
employee_name, salary
AS
employee_salary,
department AS employee_department
FROM employees;
```
查询结果将包含以下列:
- employee_id
- employee_name
- employee_salary
- employee_department
这使得查询结果更加易读,尤其是当列名较长或包含关键字时。请注意,别名仅在查询结果中有效,并不会更改表结构或列的实际名称。
sqlwith as 用法
第 1 页 共 3 页 sqlwith as 用法
SQL是一种用于处理关系数据库的编程语言,它在各种应用中发挥着关键作用。在使用SQL进行数据库操作时,我们经常需要创建、更新、查询和删除数据。在这个过程中,"WITH AS"子句被用于创建一个临时的命名查询或视图,以便在后续的查询中重用。本文将详细介绍"WITH AS"的用法,并展示其在实际应用中的优势。
一、什么是"WITH AS"?
"WITH AS"是SQL中的一种语法,它允许你在一个查询中定义一个临时的命名查询或视图,并将结果集存储在数据库中。通过使用"WITH
AS",你可以重用查询结果,从而减少编写重复代码的时间,提高查询效率。
二、用法示例
下面是一个使用"WITH AS"的简单示例,展示了如何使用它来创建一个临时的命名视图,并在后续查询中重用该视图。
```sql
WITH temp_view AS (
SELECT column1, column2, ...
FROM table_name
WHERE condition
)
SELECT * FROM temp_view WHERE column3 = 'value';
```
在上述示例中,我们首先使用"WITH AS"创建了一个名为"temp_view"的临时命名视图。这个视图包含了满足特定条件的表中的第 2 页 共 3 页 数据。然后,在后续的查询中,我们使用了该视图的名称来重用之前的结果集。
三、优势与注意事项
使用"WITH AS"子句的优势在于:
1. 提高代码复用性:通过创建临时的命名查询或视图,你可以避免重复编写相同的SQL代码,从而减少了工作量。
2. 减少查询时间:通过重用已有的结果集,避免了重复的计算和资源消耗,提高了查询效率。
3. 方便管理:通过将查询结果存储在数据库中,你可以方便地对其进行管理、更新和删除。
然而,在使用"WITH AS"时,需要注意以下几点:
