SQLServer2012书学习第五六

第五章  管理数据

  目标: 

  1 使用 SQL Server Management Studio 进行数据的插入,修改和删除    

  2 使用T-SQL 进行数据的插入修改和删除

  3 CREATE ALTER DROP 用来对表结构的创建修改删除,INSERT UPDATE DELETE 用来对表数据的插入修改删除

  4 可以使用管理工具和T-SQL对数据进行操作,但是T-SQL更为灵活,可大量插入和按照条件插入修改删除等

  5 为了表示数据的安全性,只有系统管理员(sa),数据库所有者(dbo),数据库对象所有者以及被授权的用户才可以管理数据库中的数据

 1     ----实现数据的增加
 2     USE XK
 3     GO
 4     DECLARE @n int
 5     SELECT @n=10000006
 6     WHILE @n<10000010
 7         BEGIN
 8             INSERT INTO student VALUES(@n,'小明','','计算机','11111116')
 9             SELECT @n+=1
10         END
11     GO
12     --实现联合查询将数据插入到组合表中
13     DECLARE @n int
14     SELECT @n=10000001
15     WHILE @n<10000010
16         BEGIN
17              INSERT INTO elective values((SELECT   student_id FROM student WHERE student_id  = @n), 11111115,null)
18              SELECT @n+=1
19          END
20       GO
21     ----实现对选课超过30的数据进行更改
22     DECLARE @n int
23     SELECT @n=11111111
24     WHILE @n<11111116
25         BEGIN
26             UPDATE course set course_time='周四晚上' 
27             WHERE     ((SELECT COUNT(*) FROM elective WHERE course_id=@n)>30 and course_id=@n)
28             SELECT @n+=1
29         END
30     GO
31     --将已有数据插入已有表中 表结构相同  不同时制定列
32     INSERT INTO  class  
33     SELECT TOP(5) * FROM class1
34     GO
35     ----复制表  只复制数据,不复制主键等东西
36     SELECT * INTO class3 from class
37     GO
38     --删除表中数据   按行删除  和直接删除
39     DELETE FROM  class2
40     GO
41     TRUNCATE TABLE class2
42     GO

第六章  T-SQL基础

  目标

  1  掌握T-SQL中的标识符,常量,变量,表达式和运算符的使用方法

  2  掌握T-SQL控制语句常用的方法

  3  掌握T-SQL中常用的函数

  4  掌握常用的系统存储过程

  5  运用T-SQL编写程序代码 

  1 Transact-SQL概述

SQL 是结构化查询语言(structured query language)简称,用于存取数据以及查询更新和管理关系数据库。侧重于对数据的操纵和对数据库的管理。
SQL集数据定义DDL,数据操纵DML,数据控制DCL于一体
    1 数据定义语言DDL, data definition language用于创建数据库和数据库对象,包括创建修改和删除
         CREATE ALTER DELETE
    2 数据操纵语言DML,data manipulation language,用于操纵数据表或试图中的数据,包括增加,查询,修改,删除,INSERT,SELECT,UPDATE,DELETE
    3    数据控制语言DCL(data control language)用来设置,更改角色或者用户的权限,包括对用户的授权GRANT,收回授权REMOVE
    4    SQL操作可以直接使用命令交互,也可以嵌入高级语言中使用,其中T-SQL是SQL Server唯一认知的语言

  2  T-SQL的使用规定

    1 语法格式约定

    2  对象引用的规范服务器名称.[数据库名称].[架构名称].[数据库对象的名称]

    3  注释的规范  单行注释--   批注释/*   */

  3  T-SQL语法元素

    语法元素包含关键字,标识符,数据类型,运算符,表达式,函数,注释,流程控制语言和错误处理等语法元素

    1 保留关键字  如 DECLARE SET SELECT PRINT GO ORDER是关键字,必须需要使用保留关键字作为属性时,需要使用[ORDER]

    2 标识符,第一个字符为字母,汉字,_,#,@,中间有空格需要使用[my test]    @开头表示局部变量或函数的参数  @@表示全局变量 #表示临时表或存储过程 ##表示全局的临时数据库对象

    3 运算符 算术运算符,逻辑运算符,比较运算符,字符串连接运算符,赋值运算符,位运算符,一元运算符,

    4 表达式, 用运算符和()和函数等连接起来就是表达式

  4  批处理

    批处理中的批与批之间使用GO进行连接起来,不然会出错。批处理可以保存在sql语句中,建立数据库时可以直接使用批处理文件进行完整的建立

  5  变量

    局部变量  生命周期为GO语句内,赋值  SET/SELECT   SET为一个变量赋值,SELECT 为多个变量赋值, AS 用于指定显示的名称,显示时不会出现未命名,

    全局变量  @@connections rowcount  error   procid  remserver  servername  spid  version

  6  常量

    字符串常量  Unicode字符串常量  二进制常量0x  位常量  整形常量  带有精度的常量  float real常量(科学计数法E5为10^5) 时间常量'2019-7-25'  货币型常量 ¥100

  7  流程控制语句

    分为顺序,选择,循环三类   主要有以下使用

    BEGIN   END        IF...ELSE     CASE...WHEN...ELSE    WHILE(expression)...BREAK|CONTINUE   RETURN    GOTO   

    WAITFOR DELAY '00:00:01'

  8  系统内置函数

    共14类    (聚合函数  配置函数  加密函数  游标函数  日期和时间函数  数学函数  元数据函数  排名函数  行集函数  安全函数  字符串函数  系统函数  系统统计函数  文本和图像函数)

    字符串函数  对数据进行替换,截断合并等操作    

      ASCII(char)  CHAR(int)  LEN(string)      RIGHT(char,3)   LEFT(char,3)  SUBSTRING(value,0,3)从0开始,读取三个  LTRIM 左边空格删除 RTRIM(char)  +指连接字符串

      CHARiNDEX(str1,str,[start]) 所有str1字符串在str中是否有值,有返回所在的第一个字符的位置,start表示开始搜索的位置    CHARiNDEX('str1','str1111',0)   第三个为0  1时都可以匹配到字符串str1   返回的位置1     开始为2时匹配不到字符串返回0

      REPLACE(str,str1,str2)用字符串str2代替str1  LOWER(char)  UPPER(char)  SPACE(int)返回由重复空格组成的字符串  STR(float) 浮点数据转化为指定长度字符串   并不是可变长度,多余的用空格都在前面代替PRINT STR( 3.1E2,5)  返回'  310'

    日期时间函数

    数学函数

    系统函数  APP_NAME()  CASE表达式  CASE(@s AS char(1))  CONVERT(char(1),@s)  COALESCE(@s,@d,@a,@b) 返回第一个非空数值  DATALENGTH(@s)  返回数值所占字节数  HOST_NAME()返回服务器计算机的名称  

          ISDATE(@s) 是有效日期格式返回1 否则返回0  ISNULL(@s,'zhou')是NULL用指定数值代替  ISNUMERIC(@s)是否为数值  NEWID()全局位移标识符  NULLIF(@s,@d)相等  则返回空值

   9  编程风格

代码

    

USE XK
GO
DECLARE @n int
SET @n=1
----显示课程有几类
SELECT course_name   FROM course 
GROUP BY course_name
ORDER BY course_name DESC
SELECT COUNT(*) AS '课程数' FROM course
--使用变量后才需要GO隔开,其他不必要,但也可以用
--对课程进行分类统计,显示课程类别,课程名称和课程报名人数

SELECT course_name AS '课程名',department_name AS '系名',COUNT(student_id) AS '报名人数' FROM course
LEFT JOIN department on course.department_id=department.department_id
LEFT JOIN elective on course.course_id=elective.course_id
GROUP BY course_name,department_name
ORDER BY course_name DESC
 
--查询在表1中但不在表2中的数据
SELECT student_id FROM student WHERE (student_id NOT IN (SELECT student_id FROM elective))
GO
 --求30!的数值
DECLARE @n int,@sum float
SELECT @n=1
SELECT @sum=1
WHILE @n<30
    BEGIN
        SELECT @n+=1
        SELECT @sum*=@n
        PRINT @sum
     END
  GO

--分支语句   case、
DECLARE @var int,@sum nvarchar(16)
SELECT @var=10
SET @sum=CASE @var
    WHEN 1 THEN '数值为1'
    WHEN 2 THEN '数值为2'
    ELSE '数值不为1也不为2'
END
PRINT @sum
  GO

    

原文地址:https://www.cnblogs.com/27floor/p/11243648.html