漫画:SQL数据库学习(基础入门)

一:什么是数据库?

        DBMS(Data Base Management System,数据库管理系统)

二:关系数据库是什么?

        几个运算:

              以下是关系运算:

                 投影(projection):调取某一列.

                选择(selection):调取某一行.

                连接(join):通过外键(每个表的主键)把数据拼接起来.

                除(division): 除就是从“被除表格”中调取“除表格”中包含的所有行,然后再从中去掉“除表          格”中所有行的运算。

三:设计数据库

        E-R模型:E(entity,实体)  |   R(relationship,关系)

        E-R模型的分析方法:一对一,一对多,多对多

        表格的规范化(第一范式,第二范式....)

        关系数据库的设计分为概念模式内部模式外部模式三个部分.

四:使用数据库-SQL库的基本操作

        SQL的功能:生成表格,录入/调取表格,管理用户

        ①数据定义语言 DDL:生成表格 (对表格定义)

        ②数据操作语言 DML:输入,调取数据 (对表格内容处理)

        ③数据控制语言 DCL:管理用户的访问 (权限)

       查询(query)语句:SELECT 列名 FROM 表名 WHERE 条件

                1.如果是调取符合条件的所有列,列名用*代替;

                2.在条件中使用字符要用' '或者" "引号引起来;

                3.条件如果不确定,只是知道其中几个字,可以用 where 列名 like'%果';

                4.多个条件中间用OR,and等;

                5.如果要对最后结果进行排序,在最后加上ORDER BY 列名;

                6.部分计算函数

                7.连接两个不同的表.相同的列名用 表名.列名 区分开来,不同的就直接写开

                8.创建表格:

                        CREAT TABLE 表名

                                        (列名1 值域,

                                         列名2 值域,

                                        ...

                                        primary key(列名)); 

                    表格限制直接写在值域后面,这就是约束(constraint),通过给予限制,防止输入矛盾数据.

                9.插入数据:

                                insert into 表名(列名1,列名2,列名3...) values (值1,值2,值3...);

                10.删除和更新命令:

                        delete删除

                                delete from 表 where...

                        update更新

                                update 表名

                                set 列名='值2'                                        把列名是值1的改成值2

                                where 列名='值1'

                11.比较运算符

                12.与 或 非 逻辑运算符

                 13.通配符

                 14.设定数值范围:between ... and ...

                        例如:where 列名 between 值1 and 值2

                15.有空行时:

                                where 列名 IS NULL

                16.分组计算函数:

                                GROUP BY 分组依据的名,avg(列名)  HAVING avg(列名) >30

                17.子查询检索

                        select * from 表 where 列名 in (select 列名 from... where 条件)

                 18.相关子查询检索:内部查询可以使用外部指定的表格(加粗位置)

        

                19.连接(JOIN)

                内部连接:仅选择数值相同的行进行连接,我们称之为内部连接(inner join);

                外部连接:全部保留任何一方表格的所有行,将一方中没有的行设置为空值的连接方法称为外部连接(outer join)。

                两个表格在SOL命中分左右时,根据保留全部表格行的情况,分为左外部连接(left outer join)和右外部连接(right outerjoin)。

                20.制作视图(VIEW)

                        CREAT VIEW 表1(列1,列2,列3...)

                        AS select *

                        from 表2

                        where 条件;

                ①做成视图表之后,表名可以直接用于检索的from语句中

                ②删除视图

                DROP VIEW 表名;

                ③删除表

                DROP TABLE 表名;

                21.从应用程序使用SQL

                在程序语言使用SQL的方式有很多种。编译程序时预置 SQL命令的静态 SQL及执行程序时送出SOL命令的动态 SOL;

                22.使用游标移动行

                使用程序语言的循环语句(loop statement)移动游标,可以访问多行;

                使用游标抽取每行的数据,称作提取(fetch)

 五:数据库的应用

  1. 数据库事务:使用数据库的用户可以利用数据库进行数据的检索/插入/更新/删除,用户的一个连贯操作成为事物.
  2. 数据库需要有如下属性:
  3. 提交(COMMIT;):确定事务处理的指令.
  4. 回滚(ROLLBACK;):取消事务处理的指令.
  5. 事务处理必须由提交/回滚的任意一个指令来结束.
  6. 使数据不发生矛盾:数据库事务需要有一致性;
  7.  通过锁进行控制
  8. 可序列化:多个事务并行处理也和逐个处理得到的结果一样.
  9. 由于安排可序列化,就有必要进行同时执行控制(concurrency control)。这种方法最常使用的是由锁(lock)来进行控制。读取数据时使用共享锁(shared lock),写入数据时使用独占锁(exclusive lock)
  10. 锁的对立关系
  11. 其他同时执行控制:时间戳控制(tinestamp control)  乐观控制(Optimistic control)
  12. 设置隔离级别:

        READ UNCOMMITTED

        READ COMMITTED

        REPEATABLE READ

        SERIALIZABLE

语句set transaction:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

       

         ①脏读:事务1还没提交,事务2就读取了,在事务1回滚的情况下,事务2读取了不存在的行

        ②非重复读:事务1读取的时候,事务2更新了这行并提交了,事务1又读了导致结果不一样

        ③虚读:事务1进行检索,获得多行结果,事务2追加了符合该条件的行,事务1二次检索的时候结果发生变化.

        未设定隔离级别的情况下,默认serializable;

13.数据库安全问题:赋予(GRANT)权限

        GRANT SELECT,UPDATE ON 表名 TO 人物;

-----赋 予 操 作 权 限

         如果想要给 被授权的用户 再 授予其他用户权限的权限,可以附带WITH GTANT OPTION

       GRANT SELECT,UPDATE ON 表名 TO 用户 WITH GRANT OPTION;

                               ---------能够授予其他用户权限

        如果想要收回GRANT命令授予的权限,此时使用REVOKE(撤销)命令;

REVOKE SELECT,UPDATE ON 表名 TO 用户;

----------能够收回权限

                利用可视化表,通过设定对可视表的权限,能够在安全性上进行更加精细化的管理;

                   

                

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值