Mysql基础复习

        数据库的基本操作

如何创建数据库
数据库的删除操作
存储引擎的了解及其工作原理和如何选择
 1、创建数据库

创建数据库是在系统磁盘上划分一块区域用于数据的存储和管理

 mysql安装完成以后,将会在其data目录下自动创建几个必须的数据库,可以使用  show  databases语句查看。

通过执行show databases  可以看到 mysql  安装自带的数据库是:information_schema、mysql、performance_schema、sakila、test、word,其中mysql是必须的,此数据库描述了用户的访问权限。

创建mysql数据库的语法格式是:  create database database_name,其中database_name是数据库名称。数据库创建完成以后可以执行 show  create database  查看数据库的定义。

创建数据库:create  database  database_name

查看数据库:show  create  databases

查看数据库的定义:show create database  database_name

以上不在举例

2、删除数据库

删除数据库是将已存在的数据库从磁盘空间上清除,清除之后,数据库中所有的数据也将一同被删除。

mysql中删除数据库的语法是:drop database  database_name,其中database_name 为数据库名称,若要删除的数据库不存在,则删除出错。是否删除成功可执行  show  databases查看。

提示:使用 drop  database命令要非常的谨慎,因为执行此命令时,mysql不会给出任何的提醒确认信息,执行命令后,数据库中存储的所有数据表和数据将一同被删除,且不可恢复。

3、数据库的储存引擎

   数据库存储引擎是数据库底层软件组件,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是存储引擎。MySQL提供了多个不同的存储引擎,包括处理事务安全表的引擎和处理非事务安全表的引擎。在mysql中,同一个服务器中可以针对具体的要求对每一张库表使用不同的存储引擎。

MySQL 5.7 支持存储引擎:InnoDB、MyISAM、Memory、Merge、Archive、Federated、CSV、Blackhole等。

可以使用  show  engines  命令查看系统所支持的存储引擎。 

我通过navicat工具执行 show  engines命令,结果如下图:

其中support列的值:YES表示此引擎可以使用,NO表示不可以被使用,default表示该引擎是当前默认存储引擎。

简述InnoDB和MyISAM存储引擎:

InnoDB引擎

 InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,MySQL 5.5.5版本之后,InnoDB作为默认的存储引擎,InnoDB的主要特性有:

InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事物安全(ACID兼容)存储引擎。
InnoDB是为处理巨大数据量的最大性能设计。他的CPU效率可能是任何其他基于磁盘的关系数据库引擎所不能匹配的。
InnoDB存储引擎完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB将它的表和索引存在一个逻辑表空间中,表空间可以包含数个文件(或原始磁盘分区) 。这与MyISAM表不同,比如在MyISAM表中每个表被存在分离的文件中。
InnoDB支持外键完整性约束(foreign key)。存储表中的数据时,每张表的存储都按主键顺序存放,如果没有显示在表定义时指定主键,InnoDB会为每一行生成一个6B的rowid,并以此作为主键。
InnoDB被用在众多需要高性能的大型数据库站点上。  InnoDB不创建目录,使用InnoDB时,MySQL将在MySQL数据目录下创建一个名为ibdata1的10MB大小的自动扩展数据文件,以及两个名为ib_logfile0和ib_logfile1的5MB大小的日志文件。  
MyISAM引擎

MyISAM基于ISAM的存储引擎,并对其进行扩展。它是在web、数据存储和其他应用环境下最常用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事务。在MySQL5.5.5之前的版本中,MyISAM是默认的存储引擎。MyISAM主要特性有:

大文件(达63位文件长度)在支持大文件的文件系统和操作系统上被支持。
当把删除、更新及插入操作混合使用的时候,动态尺寸的行产生更少的碎片。
每个MyISAM表最大的索引数是64,这可以通过重新编译来改变。每个索引的最大的列数是16个。
blob和text列可以被索引。
null值被允许在索引列中,这个值占每个键的0~1个字节。
每个字符列可以有不同的字符集。
有varchar的表可以固定或动态记录长度。
varchar和char列可以多达64KB。
使用MyISAM引擎创建数据库,将产生3个文件。文件的名字以表的名字开始,扩展名指出文件类型:frm存储表定义,数据文件的扩展名为.MYD(MYData),索引文件的扩展名是.MYI(MYIndex)。

 

存储引擎的选择

  不同的存储引擎都有各自的特点,以适应不同的需求,下面是每种引擎可以提供的功能:

存储引擎比较
功能    InnoDB    MyISAM    Memory    Archive
存储限制    64TB    256TB    RAM    None
支持事务    YES    NO    NO    NO
支持全文索引    NO    YES    NO    NO
支持数索引    YES    YES    YES    NO
支持哈希索引    NO    NO    YES    NO
支持数据缓存    NO    N/A    YES    NO
支持外键    YES    NO    NO    NO
若要提供提交、回滚和崩溃恢复能力的事务安全(ACID兼容)能力,并要求实现并发控制,InnoDB是最好的选择。
若数据表主要用来插入和查询记录的,MyISAM是最好的选择,因为MyISAM引擎能提高较高的处理效率。
若只是临时存放数据且量不大、也不需要较高的数据安全性,可以使用Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果。
若只有insert和select操作,可选择Archive,Archive存储引擎支持搞并发的插入操作,但是本身不是事务安全的。此引擎适合存储归档数据 如记录日志信息。
                                   数据表的基本操作

一、创建数据表

创建表
主键约束
外键约束
非空约束
唯一性约束
默认约束
主键自增
二、查看数据表结构

查看表结构
查看表详情结构语句,即建表语句
三、修改表结构

修改表名
修改字段的数据类型
修改字段名
添加字段
删除字段
修改字段的排列位置
修改表的存储引擎
删除表的外键约束
四、删除数据表

删除未被关联的表
删除被其他关联的主表
一、创建数据表

1.1、表的创建:

数据表属于数据库,建表之前,应使用  use database_name  选择将要建表的数据库。

建表语法格式:

create table  <表名>(
    字段名1,数据类型 [列级别的约束条件] [默认值],
    字段名2,数据类型 [列级别的约束条件] [默认值],
    ......
 
    [表级别的约束条件]
 

使用create table 创建表时,要注意:

表名称不区分大小写,但不能使用MySQL中的关键字,如:drop 、alter、insert等。、
若创建多个列,需要逗号隔开。
命令查看数据库中所有的表:  show tables

1.2、主键约束

  主键又称主码,是表中一列或多列的组合。主键约束(primary key)要求主键列的数据唯一且不允许为空。主键能够唯一地标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询速度。主键分为两种类型:单字段主键和多字段联合主键。

单字段主键:由一个字段组成

语法格式:1、 字段名  数据类型 primary key [默认值]       2、[constraint<约束名>] primary key [字段名]

示例:id为主键

//单主键  格式1
create table user(
    id int(11) primary key,
    name varchar(20),
    phone  varchar(11)    
)
//单主键格式2
create table  student(
    id int(11),
    name varchar(20),
    phone varchar(11),
    primary key(id)
)
多字段联合主键:由多个字段组成

格式:primary  key [字段1,字段2,...,字段n]

示例:name和phone作为联合主键

create table  test(
    name varchar(20),
    phone varchar(11),
    address varchar(50),
    primary key(name,phone)
)
1.3、外键约束

 外键释义:

是表中的一个字段,可以不是本表的主键,但是对应另一个表的主键。
外键的主要作用是保证数据的一致性和完整性,定义外键后,不允许删除另一个表中的具有关联关系的行。
外键是用来在两个表的数据之间建立连接,可以是一列或多列。
一个表可以有一个或多个外键
外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每一个外键值必须等于另一个表中主键的某个值。
语法格式:

constraint   外键名   foreign   key (字段名)   references   主表名(主键列名)

语法释义:

外键名是定义外键约束的名称,一个表中不能有相同的外键名称。
字段名是子表需要添加外键约束的字段列。
主表名是被子表外键所关联的表的名称。
主键列名是是被子表外键所关联的表的主键列。
实例:

a表中字段b_id作为外键关联b表中的主键id,外键名是fk_a_b,  

CREATE TABLE `a` (
  `id` int(10) NOT NULL,
  `name` varchar(20) NOT NULL,
  `b_id` int(10) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_a_b` (`b_id`),
  CONSTRAINT `fk_a_b` FOREIGN KEY (`b_id`) REFERENCES `b` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
 
CREATE TABLE `b` (
  `id` int(10) NOT NULL,
  `name` varchar(20) NOT NULL,
  `address` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
提示:

关联是指关系型数据库中,相关表之间的关联。
是通过相容或相同的属性或属性组来表示的。
子表的外键必须关联主表的主键,且关联字段的数据类型必须匹配,若不匹配创建的时候就会报错。
1.4非空约束

非空约束指字段的值不能为空,对于非空约束的字段,在添加数据没有指定值,数据库则会报错。

语法格式:

      字段名 数据类型  not null

实例:

创建test表,并指定name字段不能为空

CREATE TABLE `test` (
  `id` int(11) NOT NULL,
  `name` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
1.5 唯一性约束

唯一性约束要求该列唯一,允许为空,但是只能出现一个空值。唯一约束可以确保一列或者多列不出现重复值

语法格式:

 字段名 数据类型  unique      定义完列直接指定唯一约束

 constraint  约束名 unique(字段名)  定义完所有列之后指定唯一约束(可以多字段使用唯一性约束,这样多字段确定一条数据,即唯一)

实例:

//指定完列直接使用唯一约束 UNIQUE
create table test1(
id int(11) PRIMARY key,
name varchar(20) UNIQUE
)
//指定完所有列再使用唯一约束  约束名为aa 
create table test2(
id int(11) PRIMARY key,
address varchar(20),
CONSTRAINT aa UNIQUE(address)
)
//指定完所有列可以给多字段使用唯一约束  下面 约束名为cc  则 test3表中name+phone 唯一
create table test3(
id int(11) PRIMARY key,
name varchar(20) NOT NULL,
phone VARCHAR(20) NOT null ,
CONSTRAINT cc UNIQUE(`name`,`phone`)
)
UNIQUE与PRIMARY KEY的区别:

一个表中可以多个字段声明为unique,但是只能有一个primary key声

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值