SQL 学习

 

数据库创建:

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时对小时操作

 

SELECT DATEADD(DAY,-1,'2011-05-22')--日期减一天执行后返回2011-05-21 00:00:00.000

 

 

 

 

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值