考前复习必备MySQL数据库(关系型数据库管理系统)

你们好,我是魔王哪吒,话很少说,今天带来的是一篇《考前复习必备MySQL数据库(关系型数据库管理系统)》文章,欢迎你们喜欢。
复制代码

前言

MySQL是一个关系型数据库管理系统,在web应用方面,MySQL是最好的关系型数据库管理系统应用软件之一。php

MySQL是一种关系型数据库管理系统,关系型数据库将数据保存在不一样的表中,而不是将全部数据放在一个大仓库内,这样增长了速度和提升了灵活性。mysql

MySQL所使用的sql语言是用于访问数据库的最经常使用标准化语言,因为其体积小,速度快,整体拥有成本低,开放源码,通常中小型网站的开发选择MySQL做为网站数据库。web

应用环境

和其余的大型数据库例如OracleDB2SQL Server等相比,MySQL也有本身的不足,可是这也没有减小它受欢迎的程度,对于通常的我的使用者和中小型企业来讲,MySQL提供的功能是绰绰有余。正则表达式

Linux做为操做系统,ApacheNginx做为Web服务器,MySQL做为数据库,PHP/Perl/Python做为服务器端脚本解释器。sql

应用架构

单点(Single),适合小规模应用 复制(Replication),适合中小规模应用 集群(Cluster),适合大规模应用数据库

索引功能

从理论上来讲,彻底能够为数据表里的每一个字段分别建一个索引,但MySQL把同一个数据表里的索引总数限制为16个。windows

  1. InnoDB 数据表的索引
  2. 限制

索引类别

  1. 普通索引,普通索引(由关键字 KEYINDEX 定义的索引)的任务是加快对数据的访问速度。
  2. 索引,普通索引容许被索引的数据列包含重复的值。
  3. 主索引,必须为主键字段建立一个索引,这个索引就是所谓的“主索引”。
  4. 外键索引,若是为某个外键字段定义了一个外键约束条件,MySQL就会定义一个内部索引来帮助本身以最有效率的方式去管理和使用外键约束条件。
  5. 复合索引,索引能够覆盖多个数据列,如像 INDEX (columnA, columnB) 索引。这种索引的特色是 MySQL 能够有选择地使用一个这样的索引。

初学基础

链接MySQL,格式:api

mysql -h 主机地址 -u 用户名 -p 用户密码
复制代码

链接到本机上的MySQL,首先打开DOS窗口,进入目录mysqlbin,输入mysql -uroot -p,回车后提示你输密码。安全

链接远程主机上的MySQL,远程主机的IP,和用户名root,密码。服务器

命令:mysql -h远程主机ip -uroot -p密码

退出mysql命名:exit回车,可是注意,想要成功链接到远程主机,须要在远程主机打开mysql远程访问权限。

mysql和sqlite的区别

mysqlweb世界中使用最普遍的数据库服务器。mysql是为服务器端设计的数据库,能承受高并发访问,同时占用的内存也远远大于SQLite

SQLite的特色是轻量级,可嵌入,但不能承受高并发访问,适合桌面和移动应用。

把数据库默认的编码所有改成UTF-8

MySQL的配置文件默认存放在/etc/my.cnf或者/etc/mysql/my.cnf

代码以下:

[client]
default-character-set = utf8

[mysqld]
default-storage-engine = INNODB
character-set-server = utf8
collation-server = utf8_general_ci
复制代码

重启mysql后,能够经过mysql的客户端命令行检查编码。

$ mysql -u root -p

复习必备

MySQL数据库管理方法,掌握数据库的初始化,建立,查看,和删除方法。学习数据表管理方法,掌握数据表的建立,查看,修改和删除方法。

用户帐户的管理,用户的建立,与删除,用户权限的授予与回收,用户密码的设置与更改方法。

目录复习

为了方便查看学习,我作了思惟导图,以下图所示:

mysql数据库管理

数据库进行初始化

初始化数据库,在安装好mysql数据库后,不要直接启动,须要对数据库进行初始化。

初始化的过程

  1. 建立元数据表
  2. 数据目录
  3. 建立root用户

mysql提供数据库命令:

mysql --initialize进行初始化

  • windows+r组合键,能够打开“运行”窗口,在该窗口输入cmdenter键,打开命令行。
  • 使用cd命令进入mysql目录。
  • 执行bin\mysqld --initialize命令,进行初始化。

初始化完成后,能够启动数据库,启动数据库有两种方式。

  1. 利用windows服务器管理界面启动;
  2. 利用mysql命令启动。

利用mysql命令方式启动数据库:

  1. windows+r组合键,打开窗口,进入命令行;
  2. 使用cd命令进入mysql目录;
  3. 输入bin\mysqld,启动mysql服务。

启动数据库

使用bin\mysql -u root -p命令进入mysql操做环境中。

服务图片,开启数据库:

建立数据库

咱们来建立一个数据库,create database语句。

语法格式以下:

create database [db_name];

建立一个名为web的数据库:

create database web;

在数据库建立好后,mysqldata目录下会自动生成一个名为web的目录,该数据库的数据会存储于该目录下。

mysql中能够支持运行多个数据库,因此咱们能够建立多个数据库。

查看数据库

数据库建立好后,使用show语句查看当前mysql中有哪些数据库。

show databases;

删除数据库

使用drop语句删除数据库,语法格式以下:

drop database db_name;

删除建立的web数据库,命令以下:

drop database web

删除数据库是一个不可逆的操做。

mysql数据表管理

建立数据表使用create table语句,语法格式以下。

user 数据库名;
create table 表名 (字段名 类型(长度),字段名 类型(长度));
复制代码

建立表语句:

  1. 明确数据表的结构;
  2. 名字段的名称;
  3. 类型;
  4. 长度等。

查看数据表

查看表分:

  1. 查看数据库中包含哪些表
  2. 查看某个表的具体结构

使用的语句有show语句和describe语句。

  • 使用show语句能够查看数据库中有哪些表。

show tables

  • 使用describe语句能够查看某个表的具体结构,查看组成表的各字段的信息。

describe 库名.表名;

使用describe语句能够查看表的各个字段名称,类型,长度,是否非空,是否有主键,默认值以及备注等信息。

修改数据表

能够修改表名,字段名,字段类型等表结构,可以使用alter语句来实现修改操做。

修改表名

修改表名的语句:

alter table 旧表名 rename 新表名;

修改数据表student改变为student1

alter table student rename student1

修改字段名

修改字段名的语法格式以下:

alter table 表名 change 旧属性名 新属性名 新数据类型;

alter table student1 change name s_anme varchar(50);

修改字段类型

修改字段类型的语法格式:

alter table 表名 modify 属性名 数据类型;

alter table student1 modify name varchar(32);

增长字段

增长字段的语法格式以下:

alter table 表名 add 属性名 数据类型;

alter table student1 add sex char(1);

删除字段

删除字段语句:

alter table 表名 drop 属性名;

示例:

alter table student1 drop sex;

删除数据表

使用drop语句删除数据库中的表。

use 数据库名;
drop 表名;
复制代码

或者是

drop table 数据库名.表名;
复制代码

删除某个数据中的某个表:

use test;
drop table student;
复制代码

或者是

drop table test.student;
复制代码

mysql用户管理

mysql提供了一套完善的数据库用户以及权限管理系统。

建立和删除用户

  1. 建立用户

使用create语句建立用户:

create user 'username'@'host' idendified by 'password';

username表示为建立的用户名,host指定该用户在哪一个主机上能够登陆。

create user 'test1'@'localhost' idendified by '1234';

create user 'test3'@'122.xxx' idendified by '1234';

用户删除

使用drop语句能够删除用户,语法格式:

drop user 'username'@'host';

示例以下:

drop user 'test1'@'localhost';

授予与回收用户权限

授予用户权限

grant语句能够对用户进行受权:

grant privileges on dbname.tablename TO 'username'@'host';

  1. privileges表示要授予用户的操做权限。

grant select, insert on mysql.test TO 'test1'@'%';

表示受权用户test1在全部登陆主机均对mysql库的test表拥有selectinsert权限。

grant all on *.* TO 'test2'@'localhost';

表示受权用户test2在本地主机数据库的全部库的全部表拥有全部权限。

回收用户权限

使用revoke语句能够对权限进行回收。

revoke privileges on databasename.tablename from 'username'@'host';

示例:

revoke select on *.* from 'test2'@'localhost';

设置与更改用户密码

使用mysql所提供的密码设置与更改语句,语法格式:

set password for 'username'@'host' = password('newpassword');

  1. username表示要设置或更改密码的用户名;
  2. host指定该用户的登陆主机;
  3. newpassword表示要设置或更改的密码。

示例:

set password for 'test1'@'localhost' = password('12345');

什么是数据库

数据库是按照数据结构来组织,存储和管理数据的仓库。每一个数据库都有一个或多个不一样的api用于建立,访问,管理,搜索,复制所保存的数据。

将数据存储在文件中,可是在文件中读写数据速度相对较慢。

术语

  1. 数据库是一些关联表的集合。
  2. 数据表是数据的矩阵。
  3. 列,一列包含了相同类型的数据。
  4. 行,一行是一组相关的数据。
  5. 冗余,存储两倍数据,冗余下降了性能,但提升了数据的安全性。
  6. 主键,是惟一的,一个数据表中只能包含一个主键。
  7. 外键,用于关联两个表。
  8. 复合键,将多个列做为一个索引键,通常用于复合索引。
  9. 索引,使用索引能够快速访问数据库中的特定信息。
  10. 参照完整性,参照的完整性要求关系中不容许引用不存在的实体。

一个关系型数据库由一个或数个表格组成:表头,行,列,键,值。

表头为每一列的名称,列为具备相同数据类型的数据的集合,行为每一行用来描述某条记录的具体信息,值为行的具体信息,每一个值必须与该列的数据类型相同,键的值在当前列中具备惟一性。

MySQL 下载地址为: MySQL 下载 https://dev.mysql.com/downloads/mysql/

安装 MySQL https://dev.mysql.com/downloads/repo/yum/

Mysql安装成功后,默认的root用户密码为空,可使用如下命令来建立root用户的密码:

[root@host]# mysqladmin -u root password "new_password";

登陆Mysql

命令行:mysql -h 主机名 -u 用户名 -p

运行mysql服务:

mysql -h localhost -u root -p

MySQL PHP 语法

PHP Mysqli函数格式以下:

mysqli_function(value,value,...);

mysqli_connect($connect);
mysqli_query($connect,"SQL 语句");
mysqli_fetch_array()
mysqli_close()
复制代码

使用 PHP 脚本链接 MySQL

mysqli_connect() 函数来链接数据库

语法:

mysqli_connect(host,username,password,dbname,port,socket);

参数说明:

  1. host为主机或ip地址;
  2. usernamemysql用户名;
  3. passwordmysql密码;
  4. dbname为默认使用的数据库;
  5. port尝试链接到mysql服务器的端口号;

语法:

bool mysqli_close ( mysqli $link )

链接mysql服务器:

<?php
$dbhost = 'localhost';  // mysql服务器主机地址
$dbuser = 'root';            // mysql用户名
$dbpass = '123456';          // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
    die('Could not connect: ' . mysqli_error());
}
echo '数据库链接成功!';
mysqli_close($conn);
?>
复制代码

mysql建立数据库

使用create命令建立数据库,语法:

create database 数据库名;

使用php脚本建立数据库

语法:mysqli_query(connection,query,resultmode);

  1. connection为要使用的mysql链接;
  2. query为查询字符串;
  3. resultmode一个常量,值MYSQLI_USE_RESULTMYSQLI_STORE_RESULT

使用PHP来建立一个数据库

代码:

<?php
$dbhost = 'localhost';  // mysql服务器主机地址
$dbuser = 'root';            // mysql用户名
$dbpass = '123456';          // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('链接错误: ' . mysqli_error($conn));
}
echo '链接成功<br />';
$sql = 'create database web';
$retval = mysqli_query($conn,$sql );
if(! $retval )
{
    die('建立数据库失败: ' . mysqli_error($conn));
}
echo "数据库 web 建立成功\n";
mysqli_close($conn);
?>
复制代码

drop命令删除数据库

drop命令格式:

drop database <数据库名>;

使用php脚本删除数据库

语法

mysqli_query(connection,query,resultmode);

使用PHP mysqli_query函数来删除数据库:

删除数据库:

<?php
$dbhost = 'localhost:3306';  // mysql服务器主机地址
$dbuser = 'root';            // mysql用户名
$dbpass = '123456';          // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
    die('链接失败: ' . mysqli_error($conn));
}
echo '链接成功<br />';
$sql = 'DROP DATABASE web';
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
    die('删除数据库失败: ' . mysqli_error($conn));
}
echo "数据库 web 删除成功\n";
mysqli_close($conn);
?>
复制代码

使用PHP脚本选择MySQL数据库

使用函数mysqli_select_db来获取一个数据库

语法:

mysqli_select_db(connection,dbname);

示例:

mysqli_select_db函数来选取一个数据库:

选择数据库

<?php
$dbhost = 'localhost:3306';  // mysql服务器主机地址
$dbuser = 'root';            // mysql用户名
$dbpass = '123456';          // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
    die('链接失败: ' . mysqli_error($conn));
}
echo '链接成功';
mysqli_select_db($conn, 'web' );
mysqli_close($conn);
?>
复制代码

MySQL 数据类型

mysql支持多种类型,分三类:

  1. 数值;
  2. 日期/时间;
  3. 字符串类型。

MySQL 5.0 以上的版本

一、一个汉字占多少长度与编码有关:

UTF-8:一个汉字=3个字节

GBK:一个汉字=2个字节

二、varchar(n) 表示 n 个字符,不管汉字和英文,Mysql 都能存入 n 个字符,仅是实际字节长度有所区别

三、MySQL 检查长度,可用 SQL 语言来查看

MySQL 建立数据表

  1. 表名
  2. 表字段名
  3. 定义每一个表字段

语法:

建立mysql数据表的sql语法。

CREATE TABLE table_name (column_name column_type);

在数据库中建立数据表:

create table if not exists `table_tb` (
    `table_id` int unsigned auto_increment,
    `table_title` varchar(100) not null,
    `table_author` varchar(40) not null,
    `table_date` date,
    primary key (`table_id`)
)engine=InnoDB default charset = utf8;
复制代码

注意:在auto_increment定义列为自增的属性,通常用于主键,数值会自动加1,。engine设置存储引擎,charset设置编码。

建立数据表

代码:

<?php
$dbhost = 'localhost:3306';  // mysql服务器主机地址
$dbuser = 'root';            // mysql用户名
$dbpass = '123456';          // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
    die('链接失败: ' . mysqli_error($conn));
}
echo '链接成功<br />';
$sql = "create table table_tbl( ".
        "table_id int not null auto_increment, ".
        "table_title varchar(100) not null, ".
        "table_author varchar(40) not null, ".
        "submission_date DATE, ".
        "primary key ( runoob_id ))ENGINE=InnoDB DEFAULT CHARSET=utf8; ";
mysqli_select_db( $conn, 'RUNOOB' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
    die('数据表建立失败: ' . mysqli_error($conn));
}
echo "数据表建立成功\n";
mysqli_close($conn);
?>
复制代码

MySQL 字段属性应该尽可能设置为 NOT NULL

首先,考虑空值“”和null的概念:

  1. 空值是不占用空间的
  2. mysqlnull实际上是占用空间的

MySQL删除数据表

语法,删除mysql数据表的语法:

drop table table_name;

使用PHP脚本删除数据表

语法:

mysqli_query(connection,query,resultmode);

使用了PHP脚本删除数据表:

<?php
$dbhost = 'localhost:3306';  // mysql服务器主机地址
$dbuser = 'root';            // mysql用户名
$dbpass = '123456';          // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('链接失败: ' . mysqli_error($conn));
}
echo '链接成功<br />';
$sql = "drop table table_tb1";
mysqli_select_db( $conn, 'web' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
  die('数据表删除失败: ' . mysqli_error($conn));
}
echo "数据表删除成功\n";
mysqli_close($conn);
?>
复制代码

MySQL 插入数据

mysql数据表插入数据通用insert into语法:

insert into table_name(field1,field2,...fieldN)
    values
    (value1,value2,...valueN);
复制代码

添加数据

代码:

<?php
$dbhost = 'localhost:3306';  // mysql服务器主机地址
$dbuser = 'root';            // mysql用户名
$dbpass = '123456';          // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('链接失败: ' . mysqli_error($conn));
}
echo '链接成功<br />';
// 设置编码,防止中文乱码
mysqli_query($conn , "set names utf8");
 
$table_title = '学习';
$table_author = 'web';
$submission_date = '2018-03-06';
 
$sql = "insert into table_tbl ".
        "(table_title,table_author, submission_date) ".
        "values ".
        "('$table_title','$table_author','$submission_date')";
 
mysqli_select_db( $conn, 'web' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
  die('没法插入数据: ' . mysqli_error($conn));
}
echo "数据插入成功\n";
mysqli_close($conn);
?>
复制代码

INSERT 插入多条数据

INSERT INTO table_name (field1, field2,...fieldN) VALUES (valueA1,valueA2,...valueAN),(valueB1,valueB2,...valueBN),(valueC1,valueC2,...valueCN)......;

SQL基本语法

学习sql语句和mysql基本数据类型,学习掌握数据插入,修改,删除的sql语句,查询语句,以及各种特定的查询语句。

学会数据库事务的概念,特性以及使用方法。

sql的目录也整理一个思惟导图:

sql语句简介

结构化查询语言简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

sql 语句就是对数据库进行操做的一种语言。

sql分三种类型:

  1. DDL语句,数据定义语句,定义了不一样数据库,表,列,索引等数据库对象。
  2. DML语句,数据操做语句,用于添加,删除,更新和查询数据库记录,并检查数据完整性。
  3. DCL语句,数据控制语句,定义数据库,表,字段,用户的访问权限和安全级别。

mysql基本数据类型

mysql提供了多种数据类型,包括数值类型,字符串类型,日期和时间类型。

  1. 数值类型
  2. 字符串类型
  3. 日期和时间类型

数值类型

mysql的数值类型:

  1. 整数类型
  2. 浮点数类型
  3. 定点数类型

整数类型:

  1. tinyint
  2. small int
  3. medium int
  4. int
  5. big int

浮点数类型:

  1. float
  2. double

定点数类型:

  1. decimal

整数类型的划分是根据存储空间的大小和表示范围的大小来划分

浮点类型是用来表示实数的一种方法,根据位数和精度,浮点类型分单精浮点数(8位精度)和双精浮点数(16位精度)。

字符串类型

提供了多种字符串类型:

  1. char
  2. varchar
  3. binary
  4. varbinary
  5. blob
  6. text
  7. enum
  8. set

char与varchar

  1. char定义固定长度字符串
  2. varchar定义可变长度字符串

char的长度固定为建立表时声明的长度,其取值范围为0到255,当保存char值时,在右边填充空格以达到指定的长度。

当检索到char值时,其尾部的空格会被删除,因此在存储时,通常字符串右边不能有空格。若是字符串右边有空格,在查询出来后会被删除。

varchar的长度能够指定为0到6535,varchar值在保存时只保存须要的字符串,并另外加一个字节来记录长。

binaryvarbinary

binaryvarbinary用来存储二进制字符串。没有字符集,而且会排序和比较基于列值字节的数值。

text与blob

textblob是以对象类型保存的文本与二进制。

text视为足够大的varchar,将blob视为足够大的varbinary,但textblobvarcharvarbinary的不一样之处:

  1. 当保存或检索blobtext的值时不删除尾部空格。
  2. 在比较时,会用空格对text进行扩充以适应比较的对象。
  3. 对于blobtext的索引,必须制定索引前缀的长度。
  4. blobtext不能有默认值。

对弈textblob对象的最大字符串长度由其类型肯定。

text分为tinytext,text,mediumtextlongtext四种类型。

blog分为tinyblobblobmediumbloblongblob四种类型。

enum

enum表示枚举类型,它的取值范围须要在建立表时经过枚举方式显式制定。enum是忽略大小写的。enum只容许从值集合中选取单个值,不能一次选取多个值。

set

set是一个集合对象,能够包含0到64个成员,其所占存储空间的大小是因集合成员数量的不一样而有所不一样的。

日期和事件类型

提供了多种日期和时间类型:

  1. year
  2. time
  3. date
  4. datetime
  5. timestamp

日期格式,year,YYYY;time,HH:MM:SS;date,YYYY-MM-DD;datetime,YYYY-MM-DD HH:MM:SS,timestamp,YYYY-MM-DD HH:MM:SS。

数据插入

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

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

mysql中,insert语句,能够一次性插入多条记录,语法格式以下。

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

数据修改

经过update命令进行修改:

update 表名 set 列名 = 新值 whert 列名 = 某值;

update 表1,表2,...set 表1.列1,表2.列2,...where 条件;

数据删除

可使用delete命令进行删除:

delete from 表名 where 列名=值;

delete命令能够一次删除多个表的数据:

delete 表1,表2,... from 表1,表2,...where 条件;

数据查询

最基本的select语句的语法格式:

select 字段 from 表名 where 条件;

条件查询

条件查询的语句:

select 字段 from 表名 where 条件;

联合查询

union操做符

union操做符用于合并两个或多个select语句的结果集。

代码:

select 条件 from 表1
union
select 条件 from 表2;
复制代码

unionunion all的主要区别

  1. union all用于将结果集直接合并在一块儿。
  2. union用于将union all后的解构进行一次distinct,以删除重复结果记录。

不重复查询

语法格式以下:

select distinct 字段 from 表名;

模糊查询

语法格式:

select 字段 from 表名 where 字段 like 值;

%的使用,用来匹配0个或多个字符,能够匹配任意类型和长度的字符,对长度没有限制。

“_”的使用,用来匹配任意单个字符,经常使用来限制表达式的字符长度。

排序查询

使用order by关键字来排序:

select 字段 from 表名 where 条件 order by field1 desc/asc, field2 desc/asc, ...;

排序方式:desc表示降序排列,asc表示升序排序。默认值为asc

order by后面能够跟多个不一样的排序字段。

限制查询

使用limit关键字进行限制查询,格式:

select 字段 limit 起始偏移量,行数;

聚合

聚合语句格式:

select 字段 op_name from 表名 where 条件 group by filed1, filed2, ... with rollup having 条件;

op_name表示要进行的聚合操做,就是聚合函数。

聚合函数:

  1. sum函数求和
  2. count函数记录数
  3. max函数最大值
  4. min函数最小值
  5. groupby表示要进行分类聚合的字段
  6. with rollup表示是否对分类聚合后的结果进行在汇总
  7. having表示对分类后的结果进行条件过滤

链接

内链接

内链接查询是指全部查询的结果都可以在链接的表中有对应记录。在默认状况下是内链接,能够不写join关键字,或者写inner join

join分三类:

  1. inner join:获取两个表中字段匹配关系的记录。
  2. left join:获取左表全部记录,即便右表没有对应匹配的记录。
  3. right join:用于获取右表全部记录,即便左表没有对应匹配的记录。

左链接和右链接

左链接是指以左边的表的数据为基准,去匹配右边的表的数据。

  1. 若是匹配到相应数据,则显示匹配结果
  2. 若是匹配不到相应数据,就显示为null

左链接的关键字:left join。 右链接的关键字:right join

右链接反之。

事务

事务概述:事务,通常是指要作的或所作的事情。在计算机术语中是指访问并可能更新数据库中各类数据项的一个程序执行单元。

事务由事务开始和事务结束之间执行的全体操做组成。

事务就是一组由sql语句组成的业务逻辑,只有事务内的全部sql语句都成功执行,整个事务才算成功,不然就是失败。

事务的四大特性

  1. 原子性
  2. 一致性
  3. 隔离性
  4. 持久性

事务提交

默认状况下,sql语句是自动提交的,每条sql语句在执行完毕后会 自动提交事务,要想统一提交事务,须要先关闭mysql的自动提交功能。

查看数据库是否开启自动提交:

show variables like 'autocommit';

使用命令关闭自动提交:

set autocommit=0;

命令手动进行事务提交:

commit

事务回滚

事务中已执行成功的语句结果应该回退至未执行状态,称为事务回滚。

事务回滚:

rollback

事务隔离级别

事务的并发读问题

  1. 脏读:读取到另外一个事务未提交数据;
  2. 不可重复读:两次读取不一致;
  3. 幻读(虚读):读到另外一事务已提交数据。

开始事务

事务以begin transaction开始:

格式:

begin transaction <事务名称> |@ <事务变量名称>

语法说明以下:

@<事务变量名称>由用户定义的变量,必须用char,varchar,nchar或nvarchar数据类型来声明该变量。

begin transaction语句的执行。

提交事务

commit表示提交事务,即提交事务的全部操做。

撤销事务

rollback表示撤销事务,即在事务运行的过程当中发生了某种故障,事务不能继续执行,系统将事务中对数据库的全部已完成的操做所有撤销,回滚到事务开始时的状态。

语法格式:

rollback[transaction]

MySQL 正则表达式

  1. ^匹配输入字符串的开始位置。
  2. $匹配输入字符串的结束位置。
  3. [...]字符集合。匹配所包含的任意一个字符。
  4. [^...]负值字符集合。匹配未包含的任意字符。
  5. *匹配前面的子表达式零次或屡次。
  6. +匹配前面的子表达式一次或屡次。
  7. {n}n 是一个非负整数。匹配肯定的 n 次。
  8. {n,m}m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。

sql语句

sql语句:

select lastname from persons

  1. select从数据库表中获取数据
  2. update更新数据库表中的数据
  3. delete从数据库表中删除数据
  4. insert into向数据库表中那个插入数据

DDL语句

  • create database建立新数据库
  • alter database修改数据库
  • create table建立新表
  • drop table删除表
  • alter table变动数据库表
  • create index建立索引
  • drop index删除索引

语句

SELECT 语句用于从表中选取数据。

SELECT 列名称 FROM 表名称

SELECT * FROM 表名称

SELECT LastName,FirstName FROM Persons

SQL SELECT DISTINCT 语句

在表中,可能会包含重复值。关键词 DISTINCT 用于返回惟一不一样的值。

语法:

SELECT DISTINCT 列名称 FROM 表名称

WHERE 子句用于规定选择的标准。

SELECT 列名称 FROM 表名称 WHERE 列 运算符 值

操做符 描述
= 等于
<> 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式

若是第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。

若是第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

ORDER BY 语句用于对结果集进行排序。

INSERT INTO 语句

INSERT INTO 表名称 VALUES (值1, 值2,....)

INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

Update 语句用于修改表中的数据。

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

DELETE 语句用于删除表中的行。

DELETE FROM 表名称 WHERE 列名称 = 值

总结

数据库的发展历程:

  1. 网状型数据库
  2. 层次型数据库
  3. 关系数据库
  4. 面向对象数据库

关系数据库:

  1. 桌面数据库
  2. 客户/服务器数据库

数据表是存储数据的逻辑单元。

数据表中,一行称为一条记录,一列称为一个字段。

主键:惟一标识此条记录。

后记

扫码关注公众号,订阅更多精彩内容。

相关文章
相关标签/搜索