注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

宋金泽 廊坊师范学院信息技术提高班十四期

 
 
 

日志

 
 

SQL入门经典---课本  

2017-07-13 18:00:53|  分类: 学习历程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

一、什么是数据库:

数据库是一个永久数据的一个或多个大型结构化集合,它通常与更新和查询数据的软件相关。简单的数据库可以是一个包含许多记录的文件,其中每个记录包含相同的字段集合,并且每个字段具有特定的固定宽度。

二、SQL语言

SQL-结构化查询语言 (Structured Query Language) 

(1)创建数据库定义结构

(2)查询数据库,获得回答问题所需数据

(3)控制数据库的安全 ——语句类型: SELECT,CREAT,INSERT INTO,DROP,DELETE


第一章:简介

一、关于数据库

  创建数据库    CREATE  DATABASE  myDatabase1

  删除数据库    DROP  DATABASE myDatabase1

二、关于表

  1、创建表:    CREATE  TABLE  name_of_table

  2、更改表:

       ①添加新列:ALTER  TABLE   name_of_table

                          ADD  name_of_field  data_type

       ②删除现有列:ALTER  TABLE   name_of_table

                          DROP  COLUMN  name_of_field

  3、删除表:

drop table Table_name------------完全删除表

delete Table_name----------------删除表内数据,保留表结构

truncate table Table_name------------完全删除表内数据,保留表结构

delete  from Table_name where------条件删除相关数据

三、关于数据

  1、插入数据( INSERT INTO语句)

INSERT INTO table_name (column_names) values data values

  2、更改数据 UPDATE语句)

          UPDATE table_name 

          SET column_name=value     

          WHERE condition    

  3、删除数据(DELETE语句):

  4、删除所有:DELETE FROM MemberDetails;

  5、删除指定:DELETE FROM MemberDetails WHERE MemberId=3;  (删除了所有MemberId列的值=3的记录)

 注:指定从哪一个表中删除记录,并且如果需要,则添加一个WHERE子句以指定要删除哪些记录


第二章:输入信息

本章节主要介绍:如何处理变更数据的三种SQL语句

①、INSERT INTO 语句:用于插入新数据

②、UPDATE  语句:用于更新数据库中已经存在的数据

③、DELETE 语句:用于删除记录

  1、插入新数据

INSERT   INTO    table_name  (column_names)    VALUES    ( data_values )

例如:向 Category  表中添加一个记录

INSERT   INTO    Category   ( CategoryId ,Category )    VALUES    ( 1 ,'Thriller' ) ;

  2、将数据库插入到案例分析数据库

  3、更新数据

UPDATE  table_name

SET    column_name  =   value

WHERE    condition

例如:将电影俱乐部成员Steve  GeeMemberId =  4)的地址更新成

(45    Upper    road

    New    Town

    New    State

    99112)


UPDATE    MemberDetails

SET

Street   =  '45    Upper    road ' ,

City   =  'New    Town'  ,

State   =  'New    State' ,

ZipCode   =  '99112'

WHERE    MmberId  = 4 ;

  4WHERE 子句

WHERE子句就是设置一个条件 (一个限制)

逻辑运算符:ANDOR

  5、删除数据

DELECT    FROM    MemberDetails ;

例如:删除 MemberId  =  3  的记录

DELECT    FROM   MemberDetails    WHERE    MemberId   =  3


第三章:提取信息

从数据库中提取出所需要的信息

  1SELECT语句

最简单的SELECT语句就是从哪些列中获得哪些数据,基本语法:

SELECT    column1  ,  column2  ,  ...  columnx    FROM    table_name

例如:从个人信息表(MemberDetails)中提取姓氏(FirstName

SELECT    FirstName    FROM    MemberDetails

    ①、仅返回不同的行:假如在个人信息表中有好几个人的firstname都是相同的,那么在提取信息的时候就会出现重复。此时如果想仅仅提取不同的姓氏,就需要改变之前的SELECT代码 

SELECT    DISTINCT    FirstName    FROM    MemberDetails

但是当检索多个信息,而且每个信息的组合是唯一的时候,DISTINCT将失去意义

    ②、使用别名

例如:不想在结果中返回lastname,而是取代为一个称为surname的别名

SELECT    LastName    As   SurName    FROM    MemberDetails

    ③、过滤结果

就是设置一个权限,只有在这个权限之中的信息才能被检索,其他的就没办法检索

方法使用WHERE语句

  2、逻辑运算符及优先级

         运算符:  ()、NOT    AND    ALL    ANY    BETWEEN    IN    LIKE    OR     SOME

         优先级:()>   NOT  >  AND  >   (  ALL  =  ANY  =  BETWEEN  =  IN  =  LIKE  =  OR   =  SOME )

  3、利用ORDER  BY  排序结果

         SELECT    YearReleased   FROM    Films

         OEDER  BY    YearReleased

按照电影发布的时间对电影进行一个排序(升序),如果想按照降序进行排列的话就在最后加上  DESC

  4、从多个表中选择数据使用数据联合)

table1    INNER    JOIN    table2    ON    column_from_table1  =  column_from_table2

  5NULL数据

         NULL就是未知而不是什么都没有,但是能导致不期望和被忽略的结果

        如果想检查NULL值,就需要使用IS    NULL ,如果确保一个值不是NULL  就使用   IS    NOT    NULL


第四章:数据库的高级设计

一、标准化:

 第一范式的规则:

      1、定义所需要的数据项,将相关的数据项防止在一个表中

      2、确保没有重复的数据组

      3、确保存在一个主键

 第二范式的规则:

       主键中任意列没有局部相关性

 第三范式的规则:

        1、它符合第二范式

         2、所有非主键字段都依赖于主键

二、确保数据有效

    1、NOT   NULL约束

         NULL与没有数据不同,它表示未知数据。但是,NULL数据类型会对查询结果造成问题。它使得排序具有NULL值得列变得困难,因为所有的NULL 都是相同的。所以就使用NOT NULL  使得产生一个强制性列(确保一个特定的列具有一个值)

                  CREATE  TABEL  MyTable

                  (

                  Column1    int  MOT  NULL,

                  Column2    varchar( 20 ),

                  Column3    varchar( 12 )   NOT  NULL

                  )

    2、UNIQUE约束

         防止一个特定的列两个记录具有一致的值

                  CREATE  TABEL  MyUniqueTable

                  (

                  Column1    int ,

                  Column2    varchar( 20 )  UNIQUE,

                  Column3    varchar( 12 )   UNIQUE

                  );


   3、CHECK 约束

         检查输入到记录中的值是否满足条件,满足则可以被输入到表中,反之则不能

三、加速结果查询

创建索引需要使用CREATE  INDEX语句,它允许您命名索引

         CREATE  INDEX  < member_name >

         ON  < tabel_name >  ( <column_name > )


第五章:操作数据

一、数学运算 +   -   *   /

二、数学函数:1ABS()返回一个数值的绝对值

                    2POWER( )是指一个指数函数,它将一个数值提升到一个乘幂(即得到一个数值的乘幂)

                    3SQRT( )得到一个表达式的平方根

                    4RAND( )生成01之间的一个随机小数

三、舍入数值:舍入函数:CEILING( ) FLOOR( ) ROUND( )

                    CEILING( )函数:删除小数点后面的所有数值,并向上舍入到邻近的最大整数

                     FLOOR( ):向下舍入到邻近的最小整数

                     ROUND( )舍入到最接近的整数值

四、SUBSTRING( )函数:获得字符串的某一部分

五、大小写转换函数:

                        UPPER( )   UCASE( )  :变大写

                        LOWER( )   LCASE( ) 变小写

六、RESERVE()函数:颠倒一个字符串中字符的顺序

七、TRIM( ) 函数包含删除一个字符串的开始或者末尾部分中不想要的字符

八、LENGTH( )函数:需要求取长度的字符串

九、SOUNDEX( )函数:将一个字符串转换为一种特殊的4字符编码

十、DIFFERENCE( )函数:解释SOUNDEX( )的值,并返回一个    0~4之间的值,这个值反映了两个字符串发音的相似度


第八章:子查询

一、子查询术语:外部查询和内部查询

                      外部查询:SELECT    MemberId    FROM    Members

                      内部查询:SELECT    MemberId    FROM    MembersDetails

                                          WHERE    MemberId = SELECT    MAX(FilmId   FROM    Films);

在标准查询中嵌套--即放置在外部查询内---一个子查询,此时子查询被称为内部查询


二、SELECT列表中的子查询:

                          可以将子查询作为select查询内的返回一个值得表达式,就像返回值中的单个列一样,但是,在一个表达式中子查询必须只返回一个巨鹿,这样的子查询被称为标量子查询。

                          SELECT    Category

                               SELECT    MAX(DVDPrice    FROM    Films    WHERE    Films.CategoryId    =    Category.CategoryId),    

                                   CategoryId

                                   FROM    Category;


三、WHERE子句中的子查询:

                          例如:

                                   SELECT   Category  ,  FilmName  ,  DVDPrice

                                   FROM    Category    INNER    JOIN    Films

                                   ON    Category .  CategoryId  =  Films .CategoryId

                                   WHERE    Films .  DVDPrice  =

                                            (SELECT    MIN(DVDPrice)    FROM    Films    WHERE    Films  .  CategoryId  =

                                            Category.CategoryId);

 

 

四、相关子查询:相关子查询是指访问外部查询的子查询 

五、用于其他语句的子查询:

        1、INSERT语句中使用子查询:

         例如:

                  不需要再插入字面值:

                  INSERT    INTO    FavCategory  CategoryId MemberId    SELECT    7 , MemberId    FROM

                  MernberDetails    WHERE    LastName  =  ‘Hawthorn ’    AND    FirstName    =  ‘ Catherine ’

         2、UPDATE 语句中使用子查询

         例如:

                  SELECT    MAX( DVDPrice )    FROM    Films

                  UPDATE    Films

                  SET    DVDPrice  =  SELECT    MAX( DVDPrice )    FROM    Films

         3、DELETE   FROM语句中使用子查询

         例如:

                  DELECT    FROM    Location

                  WHERE ( SELECT    COUNT( * )   FROM    MeMmberDetails

                          WHERE    Location.City  =  MemberDetails .City

                          AND

                          Location.State  =  Memberdetails.State

                          GROUP    BY    City  ,  State  )<=1

                AND

                  LocationId    NOT    IN  (SELECT    LocationId    FROM    Attendance);

 

第九章:高级查询

高效查询的一些技巧:

1、当使用AND时,将很可能不为真的条件放在前面

2、当使用OR运算符时,将最可能为真的条件放在前面

3DISTINCT  GROUP  BY更快

4、限制联合结果

5、对子查询使用IN 运算符

6、避免使用 SWLECT * FROM

7、对整数类型列进行搜索

  评论这张
 
阅读(7)| 评论(6)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017