您的位置:威尼斯官方网站 > 威尼斯官方网站登录 > 4、创设和平运动用视图

4、创设和平运动用视图

发布时间:2020-01-03 20:02编辑:威尼斯官方网站登录浏览(102)

    1、事务(Transaction):

    事务是将一系列数据操作绑成一个整体进行统一管理。

    如果一事务执行成功,则咋子该事务中进行的所有数据更改均会提交,称为数据库中的永久成部分。

    如果事务执行是遇到错误且必须取消或回滚,则数据将全部恢复到操作前的状态,所有数据的更改均被清除。

    定义:

    事务是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所欲的命令作为一个整体起向系统提交侧小操作请求,即这一组数据库命令要么都执行,要么都不执行。

      Eg:

    转账过程就是一个整体

    它需要两条UPDATE语句来完成,这两条语句是一个整体

    如果其中任一条出现错误,则整个转账业务也应取消,两个账户中的余额应恢复到原来的数据,从而确保转账前和转账后的余额不变,即都是1001元

    事务是作为单一逻辑工作单元执行一系列操作。一个逻辑工作单位必须有四个属性,

    即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability),这些特性通常简称为ACID。

    ●原子性:事务是一个完整的操作,事务的各步操作(各元素)是不可分的(原子的),要么都执行,要么都不执行

    ●一致性:当事务完成时,数据必须处于一致状态。

    ●隔离性:对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,他不应以任何方式依赖于或影响其他事务。

    ● 持久性:事务的持久性指不管系统是否发生了故障,事务处理的结果都是永久的。

    2、实行职业:

    默认设置下,枚举SQL语句就是一个事务,即执行SQL语句后自动提交,为了达到将几个操作作为一个整体的目的,

    需要使用BEGIN或START TRANSACTION开启一个事务,或者执行命令SETAUTOCOMMIT = 0,

    来禁止当前回话的自动提交后,后面的语句作为事务的开始。

    MySQL中支持事务的存储引擎有InnoDB和BDB

    执行事务的语法:

    SQL使用下列语句来管理事务。

    (1)开始事务

    语法

    BEGIN;   //开始的意思  

    或者  

    START  TRANSACTION;

    这个语句显式地标记一个事务的起始点。

    (2)提交事务

    语法

    COMMIT;

    这个语句标志一个事务成功提交。

    自事务开始至提交语句之间执行的所有数据更新将永久地保存在数据库数据文件中,并释放连接是占用的资源。

    (3)回滚(撤销)事务

    语法

    ROLLBACK;

    清除自事务起始点至该语句所做的所有数据更新操作,将数据状态回滚到事务开始前,并释放由事务控制的资源。

    设置值自动提交关闭或开始:

    MySQL中默认开启自动提交模式,即为指定开启事务时,

    每条SQL语句都是单独的事务执行完毕自动提交,可以关闭自动提交模式,手动提交或回滚事务。

    语法

    SET  autocommit = 0 | 1;

    值为0:关闭自动提交。

    值为1:开启自动提交。

                               当执行SET autocommit = 0后,即关闭自动提交,

    从下一条SQL语句开始则开启新事务,需使用COMMIT或ROLLBACK语句结束该事务。

    编写事务的原则:

    事务尽可能简短;

    事务中访问的数据量尽量最少;

    查询数据时尽量不要使用事务;

    在事务处理过程中尽量不要出现等待用户输入的操作;

    3、视图:

    视图是保存在数据库中的SELECT查询。因此,对查询执行的大多数操作饿可在视图上进行。

    使用视图的原因有两点:一个是处于安全考虑,用户不必看到整个数据库的结构,而隐藏部分数据;另一个是符合用户日常业务逻辑,使他们更容易理解数据。

    定义:

           视图是另一种查看数据库中一个或多个表中数据的方法。

    视图是一种虚拟表,通常是作为来自一个或多个表的行或列的子集创建的。当然,它也可以包含全部的行和列。

    但是,视图并不是数据库中存储的数值的集合,它的行和列来自查询中引用的表。在执行是,他直接显示来自于表中的数据。

    视图充当着查询中指定表筛选器。定义视图的查询可以基于一个或多个表,也可以基于其他视图、当前数据库或其他数据库。

    视图是一张虚拟表

    u 表示一张表的部分数据或多张表的综合数据

    u 其结构和数据是建立在对表的查询基础上

    视图中不存放数据

    u 数据存放在视图所引用的原始表中

    一个原始表,根据不同用户的不同需求,可以创建不同的视图

    视图通常用来进行一下三种操作:

    (1)筛选表中的行。

    (2)防止为经许可的用户访问敏感数据。

    (3)将多个物理数据表抽象为一个逻辑数据表。

    (4)降低数据库的复杂程度

    对最终用户的好处:

    (1)结果更容易理解。创建视图是,可以将列名改为有意义的名称,使用户更容易理解列所有表的内容。在视图中修改名不会影响基表的列名。

    (2)获得数据更容易。很多人对SQL不太了解,因此对他们来说,创建对多个表的复杂查询很困难,可以通过创建视图来方便用户访问多个表中的数据。

    对开发人员的好处:

    (1)限制数据检索更容易。开发人员于是需要隐藏某些行或列中的信息。通过使用视图,用户可以灵活地访问他们的数据,同时保证同一个表或其他表中的其他数据的安全性。要实现这一个目标,可以在创建视图时将对用户保密的列排出在外。

    (2)维护应用程序更方便。调试视图表调试查询更容易,跟踪视图中各个步骤的错误更为容易,这是因为所有的步骤都是视图的组成部分。

    4、创造和使用视图:

    使用SQL语句创建视图

               语法:

    CREATE  VIEW  视图名

    AS

    <SELECT语句>

    注:在SQL语句名命规范中,视图一般以view_xxx或v_xxx的样式来命名;

    与创建数据表相同,在创建视图之前,如果数据库中已存在同名视图,需要先删除在创建。

    使用SQL语句删除视图

    语法

    DROP  VIEW  [IF  EXISTE] 视图名;

    使用SQL语句看视图数据

    语法

    SELECT  字段1,字段2,…… FROM  view_name;

                    使用查询语句SELECT执行视图的SQL代码,可获得数据结果集。

    查看所有视图

    USE information_schema;

    SELECT * FROM viewsG;

    使用视图的注意事项

    (1)每个视图中可以使用多个表。

    (2)与查询相似,一个视图可以嵌套另一个视图,但最好不要超过三层。

    (3)对视图数据进行添加、更新和删除操作直接引用表中的数据。

    (4)当视图数据来自多个表时,不允许添加和删除数据。

    注:使用视图修改数据会有许多限制,一般在实际开发中视图仅用作查询

    5、索引:

    索引提供指针有存储在表中指定列的数据值,在根据指定的排序列这些指针。

    数据库使用索引的方式与使用书的目录很相似;通过搜索索引找到特定的值,在跟随指针到包含该值的行。

     索引是一种有效组合数据的方式,为快速查找到指定记录

       作用:

      大大提高数据库的检索速度

      改善数据库性能

      MySQL索引按存储类型分类

      B-树索引:InnoDB、MyISAM均支持

      哈希索引

    MySQL中,常用的索引有以下六类。

    1. 普通索引:普通索引是MySQL中的基本索引类型,允许在定义索引的列中插入重复值和空值。

    2.唯一索引:唯一索引不允许两行具有相同的索引值。如果现有数据中存在重复的键值,则一般情况下多数数据库不允许创建唯一索引。

    允许有空值

    3.主键索引:在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。

               主键列中的每个值是非空、唯一的

    4.复合索引:在创建索引是,并不是只能对其他一列创建索引,与创建主键一样,可以多个列组合作为索引,这种索引称为符合索引。

    5.全文索引:全文索引的作用是在定义索引的列上支持值的全文查找,允许这些索引列中插入重复的空值和重复值。

    6.空间索引:空间索引是对空间数据类型的列建立的索引,如GEOMETRY、POINT等。

    6、使用索引: 

    开创索引:使用CREATE INDEX语句能够在以经存在的表上增添索引:

    语法

    CREATE  [UNIQUE | FULLTEXT | SPATIAL] INDEX  index_name

    ON  table_name  (column_name[length]……)

    其中:

    (1)UNIQUE | FULLTEXT | SPATIAL:分别代表唯一索引、全文索引的上空引得,为可选参数。

    (2)index_name:钦赐索引名。

    (3)column_name:钦点须求创立索引的列。

    (4)length:钦点索引长度,可选参数,独有字符创类型才干钦命索引长度。

    (5) table_name:内定创设索引的表名。

    剔除索引:

    语法

    DROP  INDEX  index_name  ON  table_name;

      注:删除表时,该表的全部索引将同期被去除。

    除去表中的列时,若是要去除的列为索引的组成部分,则该列也会从索引中删去。倘诺构成索引的有所列都被删除,则整个索引将被剔除。

    安分守纪下列规范选择成立目录的列

    u 往往寻找的列

    u 不时用作查询接收的列

    u 时常排序、分组的列

    u 一再用作连接的列(主键/外键)

    不要采纳下面包车型大巴列成立索引

    u 仅包蕴多少个不相同值的列

    u 表中仅包罗几行

    动用索引时注意事项:

    查询时收缩使用*归来全部列,不要回来无需的列

    目录应该尽或然小,在字节数小的列上创建目录

    WHERE子句中有五个规格表达式时,富含索引列的表明式应置于其余标准化表明式早先

    制止在ORAV4DE大切诺基 BY子句中央银行使表明式

    依据职业数据发生的效能,准时重新生成或重新组织目录,举办零散整理;

    查看索引:

    语法:

    SHOW INDEX FROM table_name;

    Eg:查看myschool数据库中全部索引消息

    USE myschool;

    SHOW INDEX FROM `student`G;

     威尼斯官方网站 1

    分析:

    Table:创造索引的表

    Non_unique:索引是还是不是非唯黄金年代

    Key_name:索引的名目

    Column_name:定义索引的列字段

    Seq_in_index:该列在目录中的地方

    Null:该列是还是不是能为空值

    Index_type:索引类型

     

    威尼斯官方网站,7、数据库的备份和余烬复起

    mysqldump是MySQL一个常用的备份命令(属于DOS命令),执行此命令将包含数据的表结构和数据内容转换成相应的CREATE语句和INSERT INTO语句,保存在文本文件中,将来如果需要还原数据,只需执行该文本文件中的SQL语句即可。

    mysqldump命令格式

    语法

    mysqldump  -u  username  -h  host  -ppassword

               dbname[ tbname1 [,tbname2……] ] > filename.sql

    其中:

    (1)username表示用户名。

    (2)host表示登录用户的主机名称,如本机为主机可省略。

    (3)password表示登录密码。

    (4)dbname为需要备份的数据库。

    (5)tbname为需要备份的数据表,可指定多张表。为可选项,如备份整个数据库则此项省略。

    (6)filename.sql表示备份的文件名。

       注意:mysqldump是DOS系统下的命令,在使用时无须进入mysql命令行,否则将无法执行

    mysqldump的常用参数:

    参数

    描述

    -add-drop-table

    在每个CREATE TABLE语句前添加DROP TABLE语句,默认是打开的,可以用-skip-add-drop-table来取消

    -add-locks

    该选项会在INSERT语句中捆绑一个LOCK TABLE和UNLOCK TABLE语句,防止记录再次导入时,

    其他用户对表进行的操作,默认是打开的

    -t或-no-complete-insert

    指导出数据,而不添加CREATE TABLE语句

    -c或—complete-insert

    在每个INSERT语句的列上列名,在数据导入另一个数据库是有用

    -d或--no-data

    不写表的任何行信息,只转储表的结构

    -opt

    该选项是速记,等于指定

    -add-drop-table-add-locking

    --create-option

    --disable-keys—extended-insert

    --lock-table—quick

    --set-charset

    它可以快速进行转储操作并产生一个能很快装入MySQL服务器的转储文件

     

    语法:

    mysqldump –help

    备份文件包含的主要信息

      备份后文件包含信息MySQL及mysqldump工具版本号

      备份账户的名称

      主机信息

      备份的数据库名称

      SQL语句注释和服务器相关注释

      CREATE和INSERT语句

    8、使用mysql命令复苏数据库:

    对于备份数据库后生成的包含有建库、建表、插入数据等SQL语句的文本文件,可以通过mysql命令还远到心的数据库中,实现数据库的恢复。

    语法

    mysql –u username –p [dbname] < filename.sql

             其中:

    (1)username表示用户名。

    (2)dbname表示数据库名字。

    (3)filename.sql为数据库备份后的文件。

    注:1. mysql为DOS命令

    2.在执行该语句之前,必须在MySQL服务器中创建新数据库,如果不存在恢复数据库过程将会出错

    mysql命令是在DOS环境下的恢复数据库命令,如果已经登录了MySQL服务器,也可以使用source命令恢复数据库。

    语法:

    source  filename;             //filename为数据库备份文件。

    注:登录MySQL服务后使用

    执行该命令前,先创建并选择恢复后的目标数据库

    9、通过复制文件贯彻数据备份和恢复生机:

    MySQL服务器的数据在磁盘中是以文件形式保存的,所以可以直接复制MySQL数据库的存储目录及文件进行备份。

    10、表数据导出到文本文件:

    通过对表数据的导出和导入,可以实现MySQL数据服务器与其他数据库服务器间移动数据。

    导出操作,是指将数据从MySQL数据表复制到文本文件,数据导出的方式有很多种。

    使用SELECT …… INTO OUTFILE语句导出数据。

    语法:

     SELECT  columnlist  FROM  tablename

         [WHERE  contion]

         INTO  OUTFILE  ‘filename’  [OPTION];

    从上述语法中可以看出,该导出语句分成以下两部分:

    (1)普通的数据查询语句,主要用来实现查询所要导出到文本文件中的数据。

    (2)通过参数filename指定导出数据的目标文件

    11、文本文件导入到数据表:

    导入操作,是指将数据从文本文件加载到MySQL数据库表里。

    同样,导入数据库的方式也有多种。

    使用LOAD DATA INFILE语句实现数据的导入,

    语法:

    LOAD  DATA  INFILE  filename  INTO  TABLE  tablename  [OPTION];

    其中:

    (1)filename用来指定文本文件的路径和特征。

    (2)tablename用来指定导入表的名称。

                  注:导入数据前应确保目标表已存在!

    12、附加:

    事务管理的吩咐包蕴START TRANSACTION, COMMIT和ROLLBACK,

    中间COMMIT用于提交业务,

    ROLLBACK客户回滚事务。、

    DDL也会潜移暗化到业务的付出,eg:TRUNCATE TABLE (DDL(数据定义语言卡塔尔    用于成立和删除数据库对象等操作       CREATE 、DROP 、ALTE昂科威)

    专门的学问开启,除了STARTTRANSACTION之外,DML语句中追加、修正、删除都会敞开事务。

    UPDATE:更新   DELETE:删除    INSERT:新增     SELECT:查询

    独一索引,分化意持有索引值相近的行,进而制止重复的目录或键值。

     mysql通过 GRANT 赋予权限 ,付与root客商全局级全体权力:

    GRANT ALL ON *.* to 'root'@'%' IDENTFIED BY '123456'; //给root设置密码

     

     

     

     

    mysql的数据库事务隔绝等第是:

    Read Uncommitted(读取未提交内容):在该隔开分离品级,所有的事情都得以看见其余未提交业务的推行结果。

    本隔离等级少之又少用于实际使用,因为它的本性也不及别的等第好多少。

    读取未提交的多寡,也被叫作脏读(Dirty Read)。

    Read Committed(读取提交内容):那是许多数据库系统的暗许隔绝品级(但不是MySQL暗许的)。

    它满意了隔开的简便定义:叁个职业只能见到已经交付事务部做的转移。

    这种隔绝等第也支撑所谓的不得重复读(Nonrepeatable Read),因为相同业务的其余实例在该实例管理内部或然会有新的commit,

    因而同豆蔻梢头select恐怕回到不一致结果。

    Repeatable Read(可重读):这是MySQL的私下认可事务隔断等级,它确定保障同等业务的八个实例在现身读取数据时,会看出相似的数据行。

    但是理论上,那会以致另三个费劲的难点:幻读(Phantom Read)。

    简单来讲的说,幻读指当客商读取某风姿洒脱限量的数额行时,另二个作业又在该约束内插入了新行,

    当客商再读取该限量的数目行时,会发觉有新的“幻影” 行。

    InnoDB和Falcon存款和储蓄引擎通过多版本现身调控(MVCC,Multiversion Concurrency Control)机制消除了该问题。

    Serializable(可串行化):这是最高的割裂等级,它通过压迫事务排序,使之不容许互相冲突,进而减轻幻读难题。

    简言之,它是在种种读的数码行上加上分享锁。在此个等级,或然引致大气的超时现象和锁竞争。

    目录是关周全据库中用来存放每一条记下的意气风发种对象,首要目标是加速数据的读取速度和完整性检查;

    始建独一索引的目标不是为了抓好访问速度,而只是为着制止数据现身重复。

    独一索引能够有七个但索引列的值必须唯生龙活虎,索引列的值允许有空值。

    一经能鲜明有个别数据列将只含有相互各不相近的值,在为这些数据列创立索引的时候就相应使用首要字UNIQUE。

    唯大器晚成性索引列允许空值,而主键列不一致敬为空值。

    本文由威尼斯官方网站发布于威尼斯官方网站登录,转载请注明出处:4、创设和平运动用视图

    关键词: