• SQL课堂笔记--数据操纵和函数


           2017.11.17
      
    七.数据的插入,更新和删除:
     1.向表中插入数据:
      使用insert语句插入
      传统的insert语句基本语法格式:
       insert into 表名 values (值1,值2,...)

      也可以指定说要插入数据的列:
       insert into table_name (列1,列2,...) values (值1,值2,...)
      (参数into是个可选关键字)

     例1:向表中插入数据:
      (1):添加一行到所有列中
      (2):添加一行到部分列中
      (3):插入多行数据怎么办?
       1.insert into 表名 values (值1,值2,...)重复书写
       2.SQL server2008中提供新方法-----行值构造器
        insert into student (sno,sname,ssex,sage,sdept,class) values
          ('95011','欧阳一','女',18,'软件','3'),
          ('95012','欧阳二','女',18,'软件','3'),
          ('95013','欧阳三','女',18,'软件','3')
       3.使用select从句中插入:
        insert into table[(字段1,字段2,...)]
         select value1,value2,...[from table1]
        或者:
         insert into table2 select * from table1
       例:
        insert into student select '95011','欧阳一','女',18,'软件','3'
               insert into student select '95012','欧阳二','女',18,'软件','3'
        或者用union/union all
       insert into student select '95011','欧阳一','女',18,'软件','3'
        union/union all
             '95012','欧阳二','女',18,'软件','3')


     2.更新表中数据:
       update语句更新
      update 表名 set 列名
     
      例2:
       update student1 set sdept='动漫' where sno='95012'
     3.删除数据:
      delete 表名 [where 条件]
      
      例3:删除student1表中sno为95015同学的记录
       delete student1 where sno=95012


     项目二:SQL语法
      
             1.常量:字符串,二进制,整形,日期,实型,货币
      2.变量: 
       1.全局变量:由系统提供,在名称前加上两个"@"符号区别于局部变量
       2.局部变量:用一个"@"
      
     练习:
      1.查询SQL Server的版本信息:
       select @@version
      2.查询本地服务器名称:
       select @@servername
      3.查询当前使用的语言名称:
       select @@language 
      
      3.变量的使用:
       1.用declare语句声明变量:
         declare {@ 局部变量名 数据类型}[,...n]
        声明两个变量@v1,@v2,数据类型为char(8),int
        declare @ v1 char(8),@v2 int
       2.set语句赋值:
        set @局部变量=表达式
         给两个变量@v1,@v2赋值后输出: 
          declare @v1 char(8),@v2 int set @v1='welcome' set @v2=100 select @v1,@v2 表格形式输出
          declare @v1 char(8),@v2 int set @v1='welcome' set @v2=100 print'v1为:'=@v1  消息形式输出
                   print @v2
      4.注释语句
       行注释
       块注释
      
     二.变量,运算符与表达式 

     三.批处理与流程控制:
       1.顺序语句begin...end语句
        begin {SQL语句|SQL语句块} end
       
       2.if...else...语句:
        在学生成绩管理系统中查看张立成绩,如果成绩最低分成绩为60以上,显示成绩情况,否则显示文本'成绩不理想':
         declare @m int
         select @m=min(grade)
          from student,sc
          where sc.sno = student.sno and sname='张立'
         if(@m>=60)
          select student.sno,sname,cno grade
          from student,sc
          where student.sno=sc.sno and sname='张立'
         else
          print'成绩不理想'
       3.while语句
         while<布尔表达式>
         {SQL语句|SQL语句块}
         [break]
         {SQL语句|SQL语句块}
         [continue]
           continue:程序跳过continue后面的语句回到循环的第一行命令
           break:跳出循环

        例:计算1到10之间的奇数之和
         declare @i tinyint,@sum int
         set @sum=0
         set @i=0
         while @i>=10
         begin
          select '总和'=@sum
          break  
         end  
         else
          begin  
           set @i=@i+1
           if(@i%2)=0
            contiue
          else
          set @sum=@sum+@i
          end
         end
       4.1.case语句:
         case 表达式
          when 表达式 then 表达式
          when 表达式 then 表达式 
          when 表达式 then 表达式[...n] 
         [else 表达式]
         end    
        
        例:判断学生成绩等级,90-100分的显示为'优秀',80-90显示为'良好',70-80为'中等',60-70为'及格',其他为'不及格'
          select sno,cno,grade,
           'rank'=case grade/10
            when 10 then '优秀'
            when 9 then '优秀'
            when 8 then '良好'
            when 7 then '中等'
            when 6 then '及格'
            else '不及格'
            end
          from sc


        2.搜索case语句: 
          select sno,cno,grade,
           'rank'=case
            when grade>=90 and grade<=100 then '优秀'
            when grade>=80 and grade<90 then '良好'
            when grade>=70 and grade<80 then '中等'
            when grade>=60 and grade<70 then '及格'
            else '不及格'
            end
          from sc

    练习:

    use students
    go
    --一,向student表中INSERT INTO …VALUES添加记录信息为:(95009,'欧阳静','女',18,'软件',3)
     insert into student values(95009,'欧阳静','女',18,'软件',3)
     
    --二,在提供的students数据库中新增一张与student表结构一样的student1表。
    --三,在student1表中用行值构造器插入以下数据:
    insert into student1 (sno,sname,ssex,sage,sdept,class) values
      (95011,'欧阳一','女',18,'软件',3),
      (95012,'欧阳二','女',18,'软件',3),
      (95013,'欧阳三','女',18,'软件',3),
      (95014,'欧阳四','女',18,'软件',3),
      (95015,'欧阳五','女',18,'软件',3)
    --四、在提供的students数据库中书写SQL代码进行查询:
    --1、 书写SQL代码创建表class,表的结构如下:
     use students
     go
     create table class
     (
      classID int primary key,
      className char(20),
      specialityID char(10),
      specialityName char(20),
      EntranceYear int,
      Monitor int
      )
    --2、使用带SELECT从句的INSERT SQL语句 ,向class表中添加记录,记录信息为:(1,'16计算机01班','a01','摄影',2019,95030),(2,'16计算机01班','a02','开发程序',2019,95032)
    insert into class values(1,'16计算机01班','a01','摄影',2019,95030)
    insert into class values(2,'16计算机01班','a02','开发程序',2019,95032)
     
    --3、使用带SELECT从句的INSERT SQL语句 ,向class表中部分字段添加一条记录,字段为:(2008001,'08计算机控制','a01',2008,0733001)
     insert into class (classID,className,specialityID,EntranceYear,Monitor) values
     (2008001,'08计算机控制','a01',2008,0733001)


    --五、在提供的students数据库中书写SQL代码进行查询:
    use students
    go
    --1、将所有课程的学分增加1分。
    update course set ccredit=ccredit+1

    --2、将计算机专业的所有学生的选修课成绩降低5%。
    update sc set grade=grade*0.95 where sno in(select sno from student where sdept='计算机')

    --3、删除选修课成绩低于60分的记录。
    delete sc where grade<60

    --4、用Union操作符把student表与student1表的结果集合并。
    --select 语句1 union [all] select 语句2
    select sno,sname,ssex,sage,sdept,class from student  union all select sno,sname,ssex,sage,sdept,class from student1

    --六、使用SSMS编写并运行SQL 脚本 。
    --1、查询SQL Server的版本信息。
    select @@version
    --2、查询本地服务器的名称。
    select @@servername
    --3、查询当前使用的语言的名称。
    select @@language
    --4、在学生成绩管理系统中查看王明的成绩。如果王明的平均成绩为70分以上,显示文本“成绩理想”,否则显示文本“成绩不理想”。
    declare @m int
     select @m=avg(grade)
     from student,sc
     where sc.sno = student.sno and sname='王明'
    if(@m>=70)
     print '成绩理想'
     else
     print'成绩不理想'

  • 相关阅读:
    20180404
    20180323
    20180315
    mongodb
    linux 集群 读写分离 session入库 负载均衡 配置
    linux 搭建配置 lnmp搭建
    有语义标签
    CSS标签属性
    使用QQ登录商城
    ajax 跨域
  • 原文地址:https://www.cnblogs.com/TuringShine/p/7850792.html
Copyright © 2020-2023  润新知