-
-
数据操作
SELECT --
从数据库表中检索数据行和列
INSERT -- 向数据库表添加新数据行
DELETE -- 从数据库表中删除数据行
UPDATE -- 更新数据库表中的数据
-- 数据定义
CREATE TABLE -- 创建一个数据库表
DROP TABLE -- 从数据库中删除表
ALTER TABLE -- 修改数据库表结构
CREATE VIEW -- 创建一个视图
DROP VIEW -- 从数据库中删除视图
CREATE INDEX -- 为数据库表创建一个索引
DROP INDEX -- 从数据库中删除索引
CREATE PROCEDURE -- 创建一个存储过程
DROP PROCEDURE -- 从数据库中删除存储过程
CREATE TRIGGER -- 创建一个触发器
DROP TRIGGER -- 从数据库中删除触发器
CREATE SCHEMA -- 向数据库添加一个新模式
DROP SCHEMA -- 从数据库中删除一个模式
CREATE DOMAIN -- 创建一个数据值域
ALTER DOMAIN -- 改变域定义
DROP DOMAIN -- 从数据库中删除一个域
-- 数据控制
GRANT -- 授予用户访问权限
DENY -- 拒绝用户访问
REVOKE -- 解除用户访问权限
-- 事务控制
COMMIT -- 结束当前事务
ROLLBACK -- 中止当前事务
SET TRANSACTION -- 定义当前事务数据访问特征
-- 程序化 SQL
DECLARE -- 为查询设定游标
EXPLAN -- 为查询描述数据访问计划
OPEN -- 检索查询结果打开一个游标
FETCH -- 检索一行查询结果
CLOSE -- 关闭游标
PREPARE -- 为动态执行准备 SQL 语句
EXECUTE -- 动态地执行 SQL 语句
DESCRIBE -- 描述准备好的查询
INSERT -- 向数据库表添加新数据行
DELETE -- 从数据库表中删除数据行
UPDATE -- 更新数据库表中的数据
-- 数据定义
CREATE TABLE -- 创建一个数据库表
DROP TABLE -- 从数据库中删除表
ALTER TABLE -- 修改数据库表结构
CREATE VIEW -- 创建一个视图
DROP VIEW -- 从数据库中删除视图
CREATE INDEX -- 为数据库表创建一个索引
DROP INDEX -- 从数据库中删除索引
CREATE PROCEDURE -- 创建一个存储过程
DROP PROCEDURE -- 从数据库中删除存储过程
CREATE TRIGGER -- 创建一个触发器
DROP TRIGGER -- 从数据库中删除触发器
CREATE SCHEMA -- 向数据库添加一个新模式
DROP SCHEMA -- 从数据库中删除一个模式
CREATE DOMAIN -- 创建一个数据值域
ALTER DOMAIN -- 改变域定义
DROP DOMAIN -- 从数据库中删除一个域
-- 数据控制
GRANT -- 授予用户访问权限
DENY -- 拒绝用户访问
REVOKE -- 解除用户访问权限
-- 事务控制
COMMIT -- 结束当前事务
ROLLBACK -- 中止当前事务
SET TRANSACTION -- 定义当前事务数据访问特征
-- 程序化 SQL
DECLARE -- 为查询设定游标
EXPLAN -- 为查询描述数据访问计划
OPEN -- 检索查询结果打开一个游标
FETCH -- 检索一行查询结果
CLOSE -- 关闭游标
PREPARE -- 为动态执行准备 SQL 语句
EXECUTE -- 动态地执行 SQL 语句
DESCRIBE -- 描述准备好的查询
SQL
常用语句
---
局部变量
declare @id char(10)
--set @id = '10010001'
select @id = '10010001'
--- 全局变量
declare @id char(10)
--set @id = '10010001'
select @id = '10010001'
--- 全局变量
---
必须以
@@
开头
--IF ELSEdeclare @x int @y int @z int
select @x = 1 @y = 2 @z=3
if @x > @y
print 'x > y' -- 打印字符串 'x > y'
else if @y > @z
print 'y > z'
else print 'z > y'
-- CASE
use pangu
update employee
set e_wage =
case
when job_level = ’1’ then e_wage*1.08
when job_level = ’2’ then e_wage*1.07
when job_level = ’3’ then e_wage*1.06
else e_wage*1.05
end
-- WHILE CONTINUE BREAK
declare @x int @y int @c int
select @x = 1 @y=1
while @x < 3
begin
print @x -- 打印变量 x 的值
while @y < 3
begin
select @c = 100*@x + @y
print @c -- 打印变量 c 的值
select @y = @y + 1
end
select @x = @x + 1
select @y = 1
end
-- WAITFOR
-- 例 等待 1 小时 2 分零 3 秒后才执行 SELECT 语句
waitfor delay ’01:02:03’
select * from employee
-- 例 等到晚上 11 点零 8 分后才执行 SELECT 语句
waitfor time ’23:08:00’
select * from employee
*** SELECT ***
select *( 列名 ) from table_name( 表名 ) where column_name operator value
ex:( 宿主 )
select * from stock_information where stockid = str(nid)
stockname = 'str_name'
stockname like '% find this %'
stockname like '[a-zA-Z]%' --------- ([] 指定值的范围 )
stockname like '[^F-M]%' --------- (^ 排除指定范围 )
--------- 只能在使用 like 关键字的 where 子句中使用通配符 )
or stockpath = 'stock_path'
or stocknumber < 1000
and stockindex = 24
not stocksex = 'man'
stocknumber between 20 and 100
stocknumber in(10,20,30)
order by stockid desc(asc) --------- 排序, desc- 降序, asc- 升序
order by 1,2 --------- by 列号
stockname = (select stockname from stock_information where stockid = 4)
--------- 子查询
--------- 除非能确保内层 select 只返回一个行的值,
--------- 否则应在外层 where 子句中用一个 in 限定符
select distinct column_name from table_name --------- distinct 指定检索独有的列值,不重复
select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name
select stockname , "stocknumber" = count(*) from table_name group by stockname
--------- group by 将表按行分组 , 指定列中有相同的值
having count(*) = 2 --------- having 选定指定的组
select *
from table1, table2
where table1.id *= table2.id -------- 左外部连接, table1 中有的而 table2 中没有得以 null 表示
table1.id =* table2.id -------- 右外部连接
select stockname from table1
union [all] ----- union 合并查询结果集, all- 保留重复行
select stockname from table2
*** insert** *
insert into table_name (Stock_name,Stock_number) values ("xxx","xxxx")
value (select Stockname , Stocknumber from Stock_table2)---value 为 select 语句
***update***
update table_name set Stockname = "xxx" [where Stockid = 3]
Stockname = default
Stockname = null
Stocknumber = Stockname + 4
*** delete ***
delete from table_name where Stockid = 3
truncate table_name ----------- 删除表中所有行,仍保持表的完整性
drop table table_name --------------- 完全删除表
***alter table*** --- 修改数据库表结构
alter table database.owner.table_name add column_name char(2) null .....
sp_help table_name ---- 显示表已有特征
create table table_name (name char(20), age smallint, lname varchar(30))
insert into table_name select ......... ----- 实现删除列的方法(创建新表)
alter table table_name drop constraint Stockname_default ---- 删除 Stockname 的 default 约束
*** function(/* 常用函数 */) ***
---- 统计函数 ----
AVG -- 求平均值
COUNT -- 统计数目
MAX -- 求最大值
MIN -- 求最小值
SUM -- 求和
-- AVG
use pangu
select avg(e_wage) as dept_avgWage
from employee
group by dept_id
-- MAX
-- 求工资最高的员工姓名
use pangu
select e_name
from employee
where e_wage =
(select max(e_wage)
from employee)
-- STDEV()
--STDEV() 函数返回表达式中所有数据的标准差
-- STDEVP()
--STDEVP() 函数返回总体标准差
-- VAR()
--VAR() 函数返回表达式中所有值的统计变异数
-- VARP()
--VARP() 函数返回总体变异数
--IF ELSEdeclare @x int @y int @z int
select @x = 1 @y = 2 @z=3
if @x > @y
print 'x > y' -- 打印字符串 'x > y'
else if @y > @z
print 'y > z'
else print 'z > y'
-- CASE
use pangu
update employee
set e_wage =
case
when job_level = ’1’ then e_wage*1.08
when job_level = ’2’ then e_wage*1.07
when job_level = ’3’ then e_wage*1.06
else e_wage*1.05
end
-- WHILE CONTINUE BREAK
declare @x int @y int @c int
select @x = 1 @y=1
while @x < 3
begin
print @x -- 打印变量 x 的值
while @y < 3
begin
select @c = 100*@x + @y
print @c -- 打印变量 c 的值
select @y = @y + 1
end
select @x = @x + 1
select @y = 1
end
-- WAITFOR
-- 例 等待 1 小时 2 分零 3 秒后才执行 SELECT 语句
waitfor delay ’01:02:03’
select * from employee
-- 例 等到晚上 11 点零 8 分后才执行 SELECT 语句
waitfor time ’23:08:00’
select * from employee
*** SELECT ***
select *( 列名 ) from table_name( 表名 ) where column_name operator value
ex:( 宿主 )
select * from stock_information where stockid = str(nid)
stockname = 'str_name'
stockname like '% find this %'
stockname like '[a-zA-Z]%' --------- ([] 指定值的范围 )
stockname like '[^F-M]%' --------- (^ 排除指定范围 )
--------- 只能在使用 like 关键字的 where 子句中使用通配符 )
or stockpath = 'stock_path'
or stocknumber < 1000
and stockindex = 24
not stocksex = 'man'
stocknumber between 20 and 100
stocknumber in(10,20,30)
order by stockid desc(asc) --------- 排序, desc- 降序, asc- 升序
order by 1,2 --------- by 列号
stockname = (select stockname from stock_information where stockid = 4)
--------- 子查询
--------- 除非能确保内层 select 只返回一个行的值,
--------- 否则应在外层 where 子句中用一个 in 限定符
select distinct column_name from table_name --------- distinct 指定检索独有的列值,不重复
select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name
select stockname , "stocknumber" = count(*) from table_name group by stockname
--------- group by 将表按行分组 , 指定列中有相同的值
having count(*) = 2 --------- having 选定指定的组
select *
from table1, table2
where table1.id *= table2.id -------- 左外部连接, table1 中有的而 table2 中没有得以 null 表示
table1.id =* table2.id -------- 右外部连接
select stockname from table1
union [all] ----- union 合并查询结果集, all- 保留重复行
select stockname from table2
*** insert** *
insert into table_name (Stock_name,Stock_number) values ("xxx","xxxx")
value (select Stockname , Stocknumber from Stock_table2)---value 为 select 语句
***update***
update table_name set Stockname = "xxx" [where Stockid = 3]
Stockname = default
Stockname = null
Stocknumber = Stockname + 4
*** delete ***
delete from table_name where Stockid = 3
truncate table_name ----------- 删除表中所有行,仍保持表的完整性
drop table table_name --------------- 完全删除表
***alter table*** --- 修改数据库表结构
alter table database.owner.table_name add column_name char(2) null .....
sp_help table_name ---- 显示表已有特征
create table table_name (name char(20), age smallint, lname varchar(30))
insert into table_name select ......... ----- 实现删除列的方法(创建新表)
alter table table_name drop constraint Stockname_default ---- 删除 Stockname 的 default 约束
*** function(/* 常用函数 */) ***
---- 统计函数 ----
AVG -- 求平均值
COUNT -- 统计数目
MAX -- 求最大值
MIN -- 求最小值
SUM -- 求和
-- AVG
use pangu
select avg(e_wage) as dept_avgWage
from employee
group by dept_id
-- MAX
-- 求工资最高的员工姓名
use pangu
select e_name
from employee
where e_wage =
(select max(e_wage)
from employee)
-- STDEV()
--STDEV() 函数返回表达式中所有数据的标准差
-- STDEVP()
--STDEVP() 函数返回总体标准差
-- VAR()
--VAR() 函数返回表达式中所有值的统计变异数
-- VARP()
--VARP() 函数返回总体变异数