首页 > 代码库 > 重温——RDBMS

重温——RDBMS

?第一章   关系型数据库管理系统(relational database managerment system简称RDBMS

本章重点:理解关系型数据库的基本概念

                                     理解数据库管理系统管理的工作原理

                                      熟悉结构化查询语言及其分类

必记词汇:

        Entity(实体)   relationship(关系)  attribute(属性)

        Column(行)   row(列)     local(本地)

        Server(服务器)

数据库集中式控制的优点(6个):

降低冗余度

2数据一致性

3存储数据可以共享

4可以建立数据库所遵循的标准

5维护数据完整性

6实现数据的安全性

数据在数据库中的存储形式(4种)

                        A 层次模型

                        B 网状模型

                        C 关系模型

                        D 对象模型

关系型数据库的基本概念:以关系模型来创建的数据库称为关系型数据库。其相似的实体被存入表中,表是关系型数据库的核心单元,是数据存储的地方。

关系型数据库与表之间的关系:(3点)

                          1 一对一

                          2一对多

                          3多对多

注:在商业应用程序开发中,为安全性及性能考虑,通常采用数据库服务器管理系统。

操作关系行数据库有:DQL 、DML、  DDL、  DCL


       

     第二章   管理数据库和表

本章重点

        如何管理数据库

                 掌握各种数据类型

        如何管理数据库表

      必记词汇:create 创建   table 

A. 创建和使用数据库(表):

       创建(删除)数据库语法:

       Createdropdatabase+数据库名;

       创建(删除)表语法:

       Createdroptable+表名;     

    B. 表的管理:(如何动态添加一个管理列)

      删除列语法:alter table+表名+drop column+修要删除的列名;      

               添加列语法:alter table+要修改的表名+add column+需要添加的列名+数据类型;    

               修改列语法:alter table+表名+change +需要修改的列名+空格键+变化后的列名+数据类型;    

               复制表语法:create table+表名+select*from+需要复制的表名;

               注:在这儿的*号可以替换为多个列名。

      注:临时创建表不要求记忆。

C.管理索引

     索引的概述:索引是一个用来提供整个数据库操作速度的数据库对象,他通过创建一个内部的索引表来达到快速搜索的目的,索引是依赖与表建立的,在一个表上创建索引可以提高在该表上执行select语句的速度(优点);但同时也会降低deleteupdateinsert语句执行的速度(缺点)。

     创建索引语法:create index+索引名+on+表名+列名1,列名2

     删除(表中的)索引语法:(alter table+表名)drop index+表名.+索引名;

 D.数据类型(9种):

  1.整数据类型:

       Int:占4个字节的存储空间。

       Smallint:占2个字节的存储空间。

       Bigint: 8个字节的存储空间。

                 Tinyint: 1个字节的存储空间。

2.浮点数据类型:

       Float: 8个字节的存储空间。

       Double: 8个字节的存储空间。

                   Decimal:可以提供小数所需要的实际存储空间。

       Real: 4个字节的存储空间。

                   Numeric: decimal数据类型相同

3.字符串类型:

         Char:固定长度,默认长度为1,()里的长度可省略。

         Varchar:其长度不超过8kb

         Text:长度超过8kb  

         Unicode

4.二进制数据类型:

         Binary:

        Varbinary:

5.逻辑数据类型:

        Flase()

        True(真):

6.图形数据类型:

        Image

7.日期和时间数据类型:

            Year(年):

            Datetime(--)

            Date(年--日):

          Smalldatetime:

8.货币数据类型:

                Money:

                Smallmoney:

9.特殊数据类型:

                Timestamp:

                Uniqueidentifier:

注:所有的数据类型都为创建表服务。


第2章 数据完整性

本章重点:

        理解数据完整性的含义

        掌握实现各种数据完整性类型的方法

        掌握创建的中约束的语法

1. 数据完整性的类别(4类):

实体完整性:主键(primary key)和唯一(unique)

域完整性:check(检验),default(默认),not null(非空), Foreign(外键)        

引用完整性:所谓引用完整性就是我们必须在有关联关系的表中,确保一个表的外键的值来源于另一个表中的主键值。即引用数据fk(外键).

用户自定义完整性:可以通过触发器,存储过程等实现。

注:外键是放与创建表的里面的。


第3章 使用DML语句更改数据

本章目标

使用insert语句添加数据

使用update语句修改数据

使用delete语句删除数据

必记词汇:

         Insert(添加)  values()  

         Update(修改)  set(设置)

         Delete(删除)  truncate(删除)

注:delete*from 的语法书写是错误的。

1.添加新数据

添加数据(单,多行数据):

语法:insert into+表名+列名列表+values+值列表

修改数据:

语法1update+表名+set+新列值列表+where条件;

语法2update+表名+set+1=新值1,列2=新值2 +where条件;

删除数据:(deletetrnucate

语法1delete from +表名+where条件;

语法2truncate table+表名;

注:deletetruncate的差异:

1. 语法上:delete可跟条件,而truncate不能跟条件。

2. 主键影响:delete从最大的值开始,而truncate返回原始状态1

   3.效率上:delete一次只能删除一条,而truncate能删除表中所有的行。

4.日志文件:delete操作会记录到日志文件,而truncate则不会。

 

第4章 简单的数据查询(DCL语句)

本章目标

       简单查询中的投影操作

       简单查询中的选择操作

       简单查询中的排序操作

必记词汇:

         Select(选择)  like ()  projection(投影)

      Distinct(排除重复)  between  and(在两者之间,包括边界值)    and(同时满足)   or(其中之一) in(集合) 

Order by(排序)   limit(分页)

Is null(是空) 

1. 查询的基本结构即(投影操作):

语法1select*from+表名(查询所有的表)

注:(*在这儿,指代这张表中的所有列名,也可将*有具体的列名列表代替)。

语法2:模糊查询(like) 

select*from+表名+where +name like%_;

注:(where后面的是过滤条件,‘%’是指通配符,代表0个,1个或者是多个字符。‘-’是指占位符,它可以是数字,字母或者是汉字。)

2.列别名(列别名是为了让人们更加便于理解)

A作为,通常用于列别名的情况下。

3.计算列 (列的算数运算,只能够是数字运算)

例:Select name +3 from course;

注:(列名只能由数字和数字相加,不能是数字和字符串相加的)。 

          4.排除重复数据(distinct 排除重复后,仍会保留一个重复的值)                    

语法:select distinct+列名+from+表名;

灵活运用:select distinct+列名1,列名2+from+表名; 

5.选择操作即(通过用where子句来指定查询条件,只从表中提取或显示满足条件的查询。)

 语法:select +列表列名+from+表名+where条件;

where条件后可接(6个):

1. 运算符

2. like模糊查询中的‘-’,‘%

3. in()集合

4. between   and

5. and   or

6. is  null

注:26无法进行址查询。

7. limit(分页)

分析1(跟一个参数)limit M;代表返回这张表中的前M条数据。

例:select*from student limit5

分析2(跟两个参数):limit M,N

例:select*from student limit3,7;(解析:在这3是指行数,代表从3这个位置的下一行开始,即m=3,运行时从m=4开始;7是指返回的7条数据,即n=7.)

注;limit不需要加where

8. 排序操作(order by 默认是从小到大ASC(升序),DESC(倒序)

语法:order by+列名(列名1,列名2);

      第六章   聚合函数与分组

本章目标

       常用的聚合函数的用法

       数据分组统计

1. 使用聚合函数进行统计汇总

五类聚合函数:

     统计行数Count语法:select count(计数规范)from(表名);

     求和Sum语法:select sum(计数规范)from(表名);

        求平均值Avg语法:select avg(平均值规范)from(表名);

        求最大值Max语法:select max(最大值规范)from(表名);

        求最小值Min语法:select min(最小值规范)from(表名);

2. 数据分组(group by分组不写where,可对多个列进行分组)

       (原始状态)语法:select count*),group by+(列名)

        执行顺序:先分组,在执行,最后统计。

      换一种展现形式如:

  语法:Group_concat+列名;

3. SQL语句的执行顺序

A. select +表名     d.

B. from+列名   a.

C. where+条件过滤  b.

D. group by+列名    c.

E. having+条件     e

F. order by+列名     f.

G. limit           g.

注:having后可跟上where的任何条件,它主要用于对聚合函数的结果过滤

注:大写是按语法顺序执行,小写是按mysql执行顺序。

第5章 组合查询

本章目标

         子查询

         集合操作union

1. 子查询定义:嵌套在其他查询中的查询即是子查询。

2. 子查询的分类:相关子查询和非相关子查询。

二者的区别(差异):非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。而相关子查询的执行依赖于外部查询的数据。当外部查询返回一行,子查询就执行一行。

3. 子查询作为计算列的语法

Select columnA,(子查询) as columnB from +表名;

注:返回多个结果的子查询用in来连接,其后可以是一个字符或数字。例:select columnAcolumnB from table where column in(select columnD from table 2);

4. where子句中的子查询有:between  and、 and  or、 In 、运算符。                                                   

5. 在子查询中使用运算符

A. 使用exists(存在)运算符

语法:select studentidname from student

      Where exists(子查询)

语法说明:1.where后面不能接列名,

          2.exists当判断()里的结果集时,如有返回一个值就为真,运行出来的结果是全部;如没有返回一个值就为假,运行出来的结果什么也没有,为空。

B. 使用all(匹配所有)运算符

例:select columnA from table 

where columnA>ALLselect columnB from table;

注:all运算符与子查询和比较运算符(=>,>=)一起使用。

C. 使用any(其中之一)运算符

说明:崽子查询返回的值中,只要有一行满足比较运算符,则比较表达式的值就为真,若所有的值都不满足,则返回假。

例:select columnA from tableA

WHERE columnA>(SELECT columnB FROM tableB);

D. 使用union运算符

语法:select columnAcolumnB from tableA

Union  select columnC , columnD from tableB;

第八章    联接

本章目标 

       联接的几种方式

       如何使用联接输出多个表的数据

1. 使用连接

A. 内联接 

语法:select*from t_student t_class

          Where t_student.Class_id =t_class.pk_id;

B. 外联接(3类)

左外联接(leftouter) join

语法:select *from table1

Leftouterjoin table2 

on table1.column1= table2. column2

右外联接(rightouter) join

语法:select *from table1

Rightouterjoin table2 

on table1.column1= table2. column2

全外联接(fullouter) join

语法:select *from table1

Fullouterjoin table2 

on table1.column1= table2. column2

 

C. 交叉联接

问:我们在数据库的表中何时才能用到联接?

当我们所操作的数据库是来自于两张表或者多张表时,则就需要建立联接。

注:on后不仅可以跟where的所有条件,还可以跟多个过滤条件。