数据库创建:
CREATE DATABASE TestData
数据库文件创建在默认的目录下:
Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA
一、表操作:
1.1数据表创建:
CREATE TABLE dbo.Products
(
ProductID int PRIMARY KEY NOT NULL,
ProductName varchar(25) NOT NULL,
Price money NULL,
ProductDescription text NULL
)
1.2数据表修改:
ALTER TABLE Products ADD description text --增加字段
ALTER TABLE Products DROP COLUMN description --删除字段
1.3数据表删除:
DROP TABLE Products
1.3表内数据记录的插入、更新、删除
Ø 插入记录:
--不指定插入字段
INSERT Products
VALUES (1, '锦湖轮胎', 1280, ' Flat Head Screwdriver ')
--指定插入字段
INSERT Products
(ProductID,ProductName,ProductDescription)
VALUES (2, '韩泰轮胎', ' Workbench clamp ')
Ø 修改记录:
UPDATE Products
SET ProductName = '米其林轮胎',Price=2100
WHERE ProductID = 2
Ø 删除记录:
DELETE FROM Products
WHERE ProductID = 2
1.4表内数据记录的读取(查询)
从一个单一的表中读取数据的基本语法:
SELECT ProductID, ProductName, Price, ProductDescription
FROM Products
使用星号选择表中的所有列,不指定返回的列(不建议使用)
SELECT * FROM Products
使用 WHERE 子句可以限制返回给用户的行。
SELECT ProductID, ProductName, Price, ProductDescription
FROM dbo.Products
WHERE ProductID =2
可以在返回列中的值时使用它们。以下示例对 Price 列执行数学运算。除非通过使用 AS 关键字提供一个名称,否则以此方式更改的列将没有名称。
SELECT ProductName, Price * 1.07 AS CustomerPays
FROM Products
1.5 SELECT 语句中的常用函数
1.51 字符串函数
大小写转换函数
LOWER()将字符串全部转为小写:
SELECT LOWER(ProductDescription) AS ProductDescription
FROM Products
UPPER()将字符串全部转为大写:
SELECT UPPER (ProductDescription) AS ProductDescription
FROM Products
去空格函数
LTRIM() 把字符串头部的空格去掉:
SELECT LTRIM (ProductDescription) AS ProductDescription
FROM Products
RTRIM() 把字符串尾部的空格去掉:
SELECT RTRIM (ProductDescription) AS ProductDescription
FROM Products
取子串函数
LEFT() 从左侧截取:
SELECT LEFT(ProductName,2) FROM Products --从左侧开始截取个字符
RIGHT() 从右侧截取:
SELECT RIGHT(ProductName,2) FROM Products --从右侧开始截取个字符
SUBSTRING () 自定义截取:
SELECT SUBSTRING(ProductName,2,2) FROM Products --从左侧第二个字符开始截取个字符
字符串比较函数
CHARINDEX()返回字符串中某个指定的子串出现的开始位置:
SELECT CHARINDEX('林',ProductName) FROM Products
WHERE ProductID = 2 --查询到的ProductName值为“米其林轮胎”执行后返回结果“林”的位置为
QUOTENAME()返回被特定字符括起来的字符串。
SELECT QUOTENAME(ProductName,'}') FROM Products--用{}将ProductName字段值括起来。
REPLACE()返回被替换了指定子串的字符串。
SELECT REPLACE(ProductName,'轮胎','蛋糕') FROM Products --查询到的ProductName值中的“轮胎”替换成“蛋糕”
1.52 数据类型转换函数
CONVERT()数据类型转换:
SELECT CONVERT(DATETIME,'2011-01-01')--将字符串转换成日期类型
SELECT CONVERT(VARCHAR(3),'ABCDEFG')--将位的字符串转换成位的VARCHAR类型
1.53 日期函数
DAY (date_expression) 返回date_expression中的日期值
SELECT DAY('2011-05-22') --执行后返回22'
MONTH (date_expression) 返回date_expression中的月份值
SELECT MONTH('2011-05-22') --执行后返回05
YEAR (date_expression) 返回date_expression中的年份值
SELECT YEAR('2011-05-22') --执行后返回2011
DATEADD()返回指定日期date 加上指定的额外日期间隔number 产生的新日期。
SELECT DATEADD(DAY,1,'2011-05-22') --日期加一天执行后返回2011-05-23 00:00:00.000
换MONTH时对月操作 换YEAR时对年操作 换HOUR时对小时操作
|
DATEPART()以整数值的形式返回日期的指定部分。
SELECT DATEPART(DAY,'2011-05-22') –返回22
SELECT DATEPART(MONTH,'2011-05-22') –返回05
SELECT DATEPART(YEAR,'2011-05-22') –返回2011
DATEDIFF()返回两个指定日期差距值
SELECT DATEDIFF(DAY,'2011-05-01','2011-05-22') --执行后返回,表示相差天
SELECT DATEDIFF(MONTH,'2011-04-01','2011-05-22') --执行后返回,表示相差个月
SELECT DATEDIFF(YEAR,'2010-04-01','2011-05-22') --执行后返回,表示相差个年
GETDATE()返回系统当前的日期和时间
SELECT GETDATE()
1.6 创建视图:
执行以下语句创建一个非常简单的视图,该视图执行 Select 语句,并将产品的名称和价格返回给用户。
CREATE VIEW vw_Names
AS
SELECT ProductName,Price FROM Products
GO
1.6 创建存储过程:
以下语句创建一个名为 pr_Names 的存储过程,接受名为 @VarPrice、数据类型为 money 的输入参数。该存储过程打印与输入参数(已从 money 数据类型更改为 varchar(10) 字符数据类型)串联的语句 Products less than。然后,该存储过程对视图执行 SELECT 语句,将输入参数作为 WHERE 子句的一部分进行传递。这将返回价格小于输入参数值的所有产品。
CREATE PROCEDURE pr_Names @VarPrice money
AS
BEGIN
PRINT 'Products less than ' + CAST(@VarPrice AS varchar(10));
SELECT ProductName, Price FROM vw_Names
WHERE Price < @varPrice;
END
GO
若要测试存储过程,请键入并执行以下语句。存储过程应该返回在第 1 课中向 Products 表中输入的、其价格小于 2000.00 的两个产品的名称。
EXECUTE pr_Names 2000.00;
二、控制语句:
2.1 IF 语句:
指定 IF 而无 ELSE
IF 语句取值为 TRUE 时,执行 IF 语句后的语句或语句块。IF 语句取值为 FALSE 时,跳过 IF 语句后的语句或语句块。
例如,定义一个变量@Num 给定值为 8,当@Num <> 0时输出'条件成立'。
DECLARE @Num int
SET @Num = 8
IF (@Num <> 0)
BEGIN
PRINT '条件成立'
END
指定 IF 并有 ELSE
IF 语句取值为 TRUE 时,执行 IF 语句后的语句或语句块。然后控制跳到 ELSE 语句后的语句或语句块之后的点。IF 语句取值为 FALSE 时,跳过 IF 语句后的语句或语句块,而执行可选的 ELSE 语句后的语句或语句块。
例如,定义一个变量@Num 给定值为 8,当@Num <> 0时输出'条件成立',否则输出'条件不成立':
DECLARE @Num int
SET @Num = 8
IF (@Num <> 0)
BEGIN
PRINT '条件成立'
END
ELSE
BEGIN
PRINT '条件不成立'
END
2.2 WHILE 语句:
只要指定的条件为 True 时,WHILE 语句就会重复语句或语句块。
例如,定义变量@Num给定值为 0,当小于10时,将@Num转换成字符类型输出,并自加1。
DECLARE @Num int
SET @Num = 0
WHILE (@Num <10)
BEGIN
PRINT CONVERT(VARCHAR,@Num)
SET @Num = @Num+1
END
2.2 CASE 语句:
CASE 函数的组成部分:
· CASE 关键字。
· 需要转换的列名称。
· 指定搜索内容表达式的 WHEN 子句和指定要替换它们的表达式的 THEN 子句。
· END 关键字。
· 可选的、定义 CASE 函数别名的 AS 子句。
例如,查询表Products中的ProductName字段,当值为'锦湖轮胎'时返回'JH',当值为'米其林轮胎'时返回' MQL ':
SELECT ProductName,
CASE ProductName
WHEN '锦湖轮胎' THEN 'JH'
WHEN '米其林轮胎' THEN 'MQL'
END AS ProductName
FROM Products