您的位置:首页 > 数据库

第6讲 SQL语言概述

2016-04-24 18:30 344 查看
1.SQL语言是集DDL,DML,DCL为一体的语言。它主要由9个单词操作构成:

           1)DDL : Create (建立),Alter(删除),Drop(撤销)。

模式的定义和删除。包括 Database,Table,View,Index.以及完整性约束条件等。

           2)DML : Insert, Delete, Update, Select

各种问题的更新以及检索操作,比如插入一条记录,连接查找,模糊查找等。还有各种”聚集操作“,求平均,求和等。

           3)DCL : Grant ,Revoke

 安全控制:授权和不授权。

2.利用数据库语言建立数据库:在数据库SCT中,有以下Table

          Student ( Snumber char(8), Sname char(10) , Ssex char(2) , Sage int , Dnumber char(2) ,Sclass char(6) ).

          Dept ( Dnumber char(2) , Dname char(10) , Dean char(10)) ;

          Course ( Cnumber char(3), Cname char(12) , Chourse int , Credit float(1) , Tnumber char(3) );

          Theacher ( Tnumber char(3) , Tname char(10) , Dnumber char(2) , Salary float(2) );

          Sc ( Snumber char(8) , Cnumber char(3) , Score float(1) );

   建立数据库:包括两件事,定义数据库和表(使用DDL),向表中添加元组(使用 DML)

   语法:创建数据库SCT: Create database SCT ;    //表示建立数据库SCT

   通用: Create database 数据库名

   接下来可以定义表了:Create table 表明 (属性 数据类型[Primary key |Unique ] ,....)

   例如建立表Student :  Create table Student ( Snumber char(8) not null, Sname char(10) , Ssex char(2) , Sage int , Dnumber char(2) ,Sclass char(6) ).

其中:Primary key 表示为表的主键,每个表只有一个 。Unique:唯一性约束(即是候选键),可以有多个。

not null :非空约束,约束某一列不可为空。

表格里面涉及到的标准SQL语言的数据类型:

          char (n) :固定长度为 n 的字符串。

          Varchar (n):最大长度为 n 的字符串。

           int :整数

           numeric(p,q):固定精度数字,表示数字总长度为 p,小数点右边有q位。比如numeric(3,1)可以精确保存 45.3,但是不能保存4.53或者456.3这样的数字。

          real ;浮点数

          float(n) :精度至少为 n位的浮点数

定义了表格之后就可以向表中添加元素了;使用DML的insert语句:

     语法: insert into 表名 (属性1,属性2....)

                  Values (值1,值2...)

需要注意的是,Values 后面值得排列与into 后面的属性名顺序是一致的。若是表后面的属性名省略,则Values后面的值得排列需要与表实际存储的属性顺序一致。

   如;向学生表中插入一条信息:

               insert into Student (‘98030101’ ,‘ 张三’ ,'男' ,20,‘03’,‘9803127’);

3.利用SQL语言进行简单的查询:

    Select 语法形式:

                 Select  name1 , name2,...

                 From 表名

                 Where  查询条件

     语义解释:从表面给出的表中,查询出满足检索条件的元组。并按照给定的列名进行投影显示。

     示列: 检索学生表中的所有信息。

                  Select Snumber ,Sname ,Ssex  , Sage , Sclass , Dnumber

                   From Student ;

     这种情况也可以写为:

                   Select * From Student ; 其中 * 表示了Student中所有的属性名 。

      示例:检索学生表中所有学生的姓名及年龄 。

                   Select Sname , Sage

                    From Student ;

       示例:检索学生表中所有的年龄小于19岁的学生的年龄和姓名 。

                   Select Sage , Sname

                    From Student

                    Where Sage < 19 ;

       检索条件的书写:需要注意关系逻辑运算符的优先顺序,not,and,of。有时候要使用括号。

       示例:检索教师表中所有工资小于1500或者工资大于2000元并且是03系的教师姓名。

                    Select  Tname

                    From Theacher

                    Where (Salary<1500 or Salary > 2000 ) and Tnumber='03' ;

        检索结果的唯一性:在检索结果中,有的时候要求无重复的元组是通过DISTINCT来实现的。

        示例:在课程表中,检索成绩大于80分的所有学号 。

         Select Snumber

         From SC

         Where Score>80 ;

  //以上可能会有重复元组出现,比如有的同学不止一门成绩大于 80 。

          Select DISTINCT Snumber

          From SC

          Where Score >80 ;

 //这时候,如果有重复的元祖,就会被 DISTINCT过滤掉。

         对结果进行排序:Select的语句中的结果的排序是通过 Order by 语句来实现。Order by 属性名 ;

   含义为:对检索结果按照指定的熟悉名进行排序。后面跟asc 或者省略则为升序。后面跟 desc则为降序 。

          示例:按照学号从小到大的顺序显示出所有学生的姓名以及学号 。

           Select Sname ,Snumber

           From  Student

           Order by Snumber   (ASC);   //括号里面表示可以省略

           示例:检索002号课程成绩大于80的所有学生学号,并按照成绩又高到低的顺序显示 。

           Select Snumber

           From SC

           Where Cnumber='002' and Score>80

           Order by Score DESC ;

    模糊查询问题:比如查询姓张的学生,检查张某某等。这类查询语句,Select是通过在检索条件中运用运算符 Like 来实现的。含有Like的表达式: 属性名  [not] Like "字符串 "。其中给定的字符串只可以出现 "%"或者"_ " 的匹配字符,规则如下:

            "%" : 可以匹配0个或者多个字符

             “_” :只可以匹配一个字符

            “\” : 转义字符,用于去掉一些特殊字符 ,使其变为普通字符。比如用"\%"可以去匹配字符%,而“\_”是去匹配字符“_”.

          示例:检索所有姓张的学生的学号和姓名 。

             Select Snumber ,Sname

             From Student

             Where Sname Like '张%' ;

              示例:检索姓名为张某某的所有同学姓名:

                   Select Sname

                   From Student

                   Where Sname Like '张__' ;

多表联合查询问题;

                   select  属性列 

                   From  表1,表2,....

                   where 查询条件

上面表示的是一般的多表查询,他们表示的是一个广义的笛卡尔积。

更新操作:

      insert   插入

      Updata  更新

      Delete   删除

插入语句: insert  into 表名 

                     Values (值1,值2,值3,...)           --分别与表的属性对应

删除语句: Delete From  表名 

                     where  删除条件                               --删除满足删除条件的元组

                     Delete  From 表名 ;                      --删除所有元组,但是关系还存在

更新语句 : Updata  表名

                      Set   列名=表达式(子查询)

                      where 更新条件;                          --更新满足更新条件的列

例如:将所有教师工资上调 10%

                     Updata teacher

                     Set  salary=1.1*salary;

修正与撤销操作: alter  table  表名

                                 [add {cloname datatype}]     //增加列属性

                                 [drop (完整性约束名)]           //删除完整性约束条件

                                 [Modify {cloname datatype}]  //修改列定义

例如:在学生表student中加上属性saddr ,PID

    alter table  student            

    add saddr char(40),PID char[30];

 例如:将student表中的PID属性增加两个字符;

     alter table student

     Modify PID char[32];

撤销表:drop table 表名 ; //将表中数据和表的结构都删除

撤销数据库: drop database 数据库名;  //将数据库删除

指定使用当前数据库: use 数据库名

关闭当期前数据库:   close  数据库名

SQL Server基本知识:

    SQL Server的系统数据库:

Master: 是SQL Server 中最重要的数据库,存储了SQL Server 中的元数据

Model : 模板数据库。在创建新的数据库的时候,SQL Server会复制此数据库作为新数据库的基础。

Masdb:代理服务数据库,提供一个存储空间Tempdb存储临时的数据库或表。断开连接后后都会被删除。

文件的三种扩产名: .mdf , .ndf ,.ldf

主数据库文件: .mdf .存储的数据库的启动信息,部分或者全部的数据。一个数据库只有一个主数据库文件。

辅助数据库文件: .ndf . 用于放置主数据库中其他的数据,可有多个。

日志文件: ldf .每个数据库至少有一个日志文件。

页面: SQL Server存储的最小单元,一页为8K

空间(extent):表示8个连续的页面64K,是数据库空间的一种单位。

数据库授权: 语法 grant 权限 on 表名 to 用户名

权限包括: select ,Updata,insert,delete,exec,dri.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: