SQLSERVER SQL编程集合 (part 3)

原创 2007年10月02日 21:10:00
////////////////////////////////////查询,表达式,总计函数

USE sqlstudy

GO

/**//*先进行分组再进行聚合函数的计算*/

 

SELECT last_name, trainer, COUNT(*AS num_trainers, SUM(sales_amt) AS gross_sales, AVG(sales_amt)    

FROM employees, sales

WHERE sales > 0 AND emp_id = sold_by

GROUP BY last_name, trainer

HAVING AVG(sales_amt) > 6000

 

/**//*不能将AS 后的名字用在group by 中,但是可以用在order by 中 如upSale*/

SELECT emp_id, sales, cust_id, sale升值后 = '升值后=''ckcs', (sales_amt * 10AS upSale, (sales_amt - 10 * 0.5AS testSale

FROM sales, employees

GROUP BY emp_id, sales, cust_id, sales_amt

ORDER BY emp_id DESC, upSale

 

SELECT emp_id

FROM employees

WHERE (emp_id< 5 AND NOT emp_id = '2'OR last_name = 'Green' /**//* not <> != */

 

 

SELECT emp_id, last_name, trainer, (sales * 10

FROM employees

ORDER BY 1 ASC3 DESC4 DESC  /**//*当某列不在表中的列(无名)的列*/

/**//*ORDER BY emp_id ASC, trainer DESC*/

 

USE sqlstudy

GO

SELECT last_name, CASE emp_id

                       
WHEN 1 THEN 'good'

                       
WHEN 2 THEN 'so good'

                       
WHEN 3 THEN 'bad' 

                  
END AS 'check'

FROM employees 

WHERE sales > 0

 

SELECT last_name, CASE WHEN sales = 2 THEN 'good'

                       
WHEN emp_id = (SELECT emp_id FROM employees WHERE emp_id = 4THEN 'bad'

                       
WHEN trainer = 'Greg' THEN 'so good'

                  
END  AS 'check sales'

FROM employees

WHERE emp_id <> 5

 

USE sqlstudy

GO

UPDATE employees

SET sales = CASE WHEN emp_id = 1 THEN sales * 1.5

                 
WHEN emp_id = 2 THEN sales * 2.5

                 
WHEN emp_id = 3 THEN sales * 3.5

                 
WHEN emp_id = 4 THEN sales * 4.5

                 
ELSE sales * 5.5

        
END

WHERE emp_id <> 5

 

SELECT trainer, CASE WHEN sales <> 0 THEN 100/sales

                     
ELSE '0' 

                
END AS 'test sales'

FROM employees

 

SELECT trainer, CASE WHEN sales > 20 THEN sales - 20

                     
ELSE '20'

                
END AS 'test sales'

FROM employ

 

USE sqlstudy

Go

/**//*nullif 在sales的值为6时返回null,否则返回sales的原值*/

SELECT last_name ,NULLIF(sales, 6AS 'test sales'

FROM employees     

/**//*isnull 在sales的值为null是返回6,否则返回sales的原值*/

SELECT last_name ,ISNULL(sales, 6AS 'test sales'

FROM employees

 

 

 

USE sqlstudy

GO   --coalesce(a, b, c, ..。)返回第一个不为null的值,当全为null的时候返回null值。

SELECT last_name, coalesce(sales, (SELECT MIN(sales) FROM employees), 0AS 'test sales'

FROM employees

WHERE emp_id <> 4

 

ALTER TABLE employees ADD first_name char(10)

 

ALTER TABLE employees DROP COLUMN total_emp 

 

UPDATE employees SET total_emp = (SELECT COUNT(DISTINCT sales) FROM employees) /**//*distinct 不可以和* 一起连用*/

 

SELECT COUNT('1'FROM employees

 

SELECT COUNT(first_name), COUNT(last_name),

       
COUNT(DISTINCT (first_name + last_name))

FROM employees

 

USE sqlstudy

GO

SELECT emp_id, trainer, SUM(sales) AS 'totalsales'

FROM employees

GROUP BY emp_id, trainer

WITH ROLLUP

ORDER BY emp_id

 

SELECT emp_id, trainer, SUM(sales) AS 'totalsales'

FROM employees

GROUP BY emp_id, trainer

WITH CUBE

ORDER BY emp_id

 

SELECT SUM(sales), SUM(DISTINCT sales) 

FROM employees

 

SELECT AVG(sales) AS 'testsales'AVG(DISTINCT sales) AS 'unique testsales'

FROM employees

WHERE emp_id <> '10'

 

SELECT sales, COUNT(*)

FROM employees

GROUP BY sales

 

USE sqlstudy

GO

SELECT last_name FROM employees WHERE sales IS NULL  /**//*不能通过比较运算符找到null值*/

 

SELECT last_name FROM employees WHERE sales = (SELECT sales FROM employees WHERE last_name = 'ckcs')

 

SELECT last_name FROM employees WHERE sales <= (.5 * 4)

 

SELECT last_name FROM employees WHERE sales BETWEEN 0 AND 2 /**//*等价于sales >=0 AND sales <=2*/

 

 

///////////////////////////////多表查询创建sql视图

 

USE sqlstudy

GO

CREATE VIEW vw_employee_salary /**//*纵向的视图*/

(employee_id, employee_salary)  
/**//*给view中的列去个别名*/

AS

SELECT id, salary

FROM employee

 

CREATE VIEW vw_employee_choose_name  /**//*横向的视图*/

AS

SELECT *

FROM employee

WHERE age=25

 

CREATE VIEW vw_choose_name_salary

AS

SELECT id, name, salary

FROM employee

WHERE age <> 25

 

CREATE VIEW vw_employee_name_sold_id

AS

SELECT name, cust_id

FROM employee, sales

WHERE employee.id = sales.cust_id

USE sqlstudy

GO

CREATE VIEW vw_sales_employee

AS

SELECT cust_id, salary, name

FROM employee, sales

 

UPDATE vw_sales_employee

SET name = 'text'

WHERE cust_id = '2'  /**//*会将employee中的所有行都改变???/*/

 

USE sqlstudy

GO

CREATE VIEW vw_no_check

AS

SELECT id, name, salary, department

FROM employee

WHERE department = 'temp'

 

 

INSERT INTO vw_no_check /**//*通过view向基表插入行*/

VALUES(101'JINLP'563)

 

UPDATE vw_no_check

SET department= 'daxue'

WHERE id = '88'

 

 

CREATE VIEW vw_test_check

AS

SELECT id, name, salary, department

FROM employee

WHERE department = 'temp'

WITH CHECK OPTION

 

INSERT INTO vw_test_check

VALUES(111'JINLP'563'temp')  /**//*在check的约束下只能department = 'temp'下进行插入*/

 

UPDATE vw_test_check

SET department= 'daxie'

WHERE id = '111'  /**//*在check的约束下不能改变department de 'temp'值下进行插入*/

 

SELECT cust_id, avg(sales_amp)

FROM sales

WHERE cust_id = '1'

GROUP BY cust_id

 

USE sqlstudy

GO

INSERT INTO employee_3

SELECT * FROM employee_1

 

 

SELECT * FROM employee_1

UNION 

SELECT * FROM employee_2  /**//*消除重复的行(MSSqlserver 以第一个表的列作为列名)*/

 

SELECT * FROM employee_1

UNION ALL

SELECT * FROM employee_2

ORDER BY salary (ORDER BY 3:"3为结果表中的第3列")

 

SELECT 'ckcs' AS 'ckcs' ,id ,name FROM employee_1

UNION 

SELECT name + emp_id ,emp_id ,name FROM employee_2

 

SELECT * FROM employee_1  /**//*使用挂号来告诉系统执行的顺序*/

UNION 

(
SELECT * FROM employee_2

UNION  ALL

SELECT * FROM employee_3)

 

CREATE TABLE use_mul_unique  /**//*多列的unique约束*/

(

employee_id  
int,

office       
char(20),

emp_name     
char(10),

SSAN         
char(30UNIQUE,

CONSTRAINT unique_by_test UNIQUE(employee_id, office)

)
 

SQLSERVER SQL编程集合 (part 2)

//////////////////////////////////授权与撤销权利 --受予lily对friend的查询权限,同时授予lily授予他人查询friend表的权限GRANT SELECT ...
  • ckcs49
  • ckcs49
  • 2007年10月02日 21:09
  • 633

SQLSERVER SQL编程集合 (part 1)

/////////////////////////////////////变量的使用/**//*变量声明方法*/(1)DECLARE @customer_count INT, @total_sales...
  • ckcs49
  • ckcs49
  • 2007年10月01日 19:37
  • 614

sql(SqlServer)编程基本语法 转发

sql(SqlServer)编程基本语法  一、定义变量 --简单赋值 declare @a int set @a=5 print @a   --使用select语句赋值 declar...
  • swand
  • swand
  • 2017年03月16日 09:36
  • 168

SQLServer数据集合的交、并、差集运算

      SQLServer2005通过intersect,union,except和三个关键字对应交、并、差三种集合运算。他们的对应关系可以参考下面图示        相关测试实例如下:  use...
  • jinjazz
  • jinjazz
  • 2009年09月07日 15:32
  • 17121

MySQL/sqlserver查询in操作 查询结果按in集合顺序显示

mysql用下面的语句 select * from ibs6_terminal_adv_inf where id in (16,14,15) order by field(id,16,14,...
  • u011203602
  • u011203602
  • 2015年12月09日 19:10
  • 1653

SQLSERVER数据集合的交、并、差集运算(intersect,union,except)

intersect,union,except,sql server 中对集合的交、并、差集运算
  • lqh4188
  • lqh4188
  • 2015年07月30日 09:33
  • 4279

SQL Server实现类型Oracle 中类似Listogg的功能

select * from [dbo].[Team] ID TL Member 1 Sherman Sonia,Hilary,Clair 2 Alvin Chris,Josie,Joanna 3 Na...
  • ChristopherChen
  • ChristopherChen
  • 2016年08月23日 11:35
  • 576

【SQL 编程你也行】学习SQL Server的经历

说说自己的学习经历。 在学校里学了数据库课程,里面有一章专门讲sql,当时对数据库比较感兴趣,但由于各种原因,毕业后一直没有做数据库方面的工作。 虽然不做数据库,但是有空的时候就会看数据库方面的书...
  • yupeigu
  • yupeigu
  • 2016年01月12日 10:37
  • 1011

sql编程 && 存储过程

sql  结构化查询语言      是一种编程语言   用于管理数据库的编程语言      元素:     数据     数据类型         变量的数据类型  就是字段的数据...
  • ebw123
  • ebw123
  • 2013年07月17日 23:11
  • 2494

SQL对数据进行统计、常用集合函数

学生表:       1、统计记录个数 1)  count(【all】*)【as  列别名】   返回表中的记录数 执行:SELECT COUNT (* )    FROM 学生表 结果为:  ...
  • softcg
  • softcg
  • 2016年12月09日 12:47
  • 4010
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQLSERVER SQL编程集合 (part 3)
举报原因:
原因补充:

(最多只允许输入30个字)