一、Mysql概述

MySQL原来隶属于MySQL公司,总部位于瑞典

2008.1.16MySQL被SUN公司收购

2009年SUN公司被Oracle公司收购

常见的软件版本

  • GA(general Availability) :官方推崇广泛使用的版本
  • RC(release Candidate):候选版本,最接近正式版的版本
  • Aipha和Bean都属于测试版本,其中Alpha是指内侧版本,Bean指公测版本

MySQL的官方网站网址(http://mysql.com)

  1. TyPical:默认的安装类型
  2. Complete:完全的安装类型
  3. Custome:自定义的安装类型
  4. Detailed Configuration :详细配置
  5. Standard Configuration:标准配置

经常会修改的MySQL配置文件

  • dafault-character-set:客户端字符集
  • character-set-server:服务端字符集
  • port:客户端和服务端的端口号
  • default-storage-engin:MySQL软件的存储引擎

注意:如果修改了MySQL的配置文件。则必须重新启动MySQL服务,修改的内容才能生效

在DOS窗口中,输入net start命令,可以查看Windows系统已经启动的服务

二、MySQL数据库基本操作

(一)数据库和数据库对象

数据库是存储数据库对象的容器

数据库可以分为系统数据库和用户数据库

1.系统数据库

安装完MySQL服务器后,会附带的一些数据库

  • information_schema:主要存储系统中的一些数据库对象信息。如用户表信息,列信息,权限信息,字符集信息,和分区信息等。
  • performance_schema:主要存储数据库服务器性能参数。
  • mysql:主要存储系统的用户权限信息
  • test:该数据库为MySQL数据库管理系统自动创建的测试数据库,任何用户都可以使用。
2.用户数据库

用户根据实际需求创建的数据库

(二)数据库相关操作

1.创建数据库的语法形式
  1. CREATE DATABASE DATABASE_NAME;
  2. 首字母不能是$和数字
  3. 不允许是MQSlq保留字
  4. 不允许有空格和特殊字符
2.查看数据库
  1. SHOW DATABASES;
3.选择数据库
  1. USE DATABASE_NAME;
4.删除数据库
  1. DROP DATABASE DATABASE_NAME;

三、MySQL数据库中存储引擎和数据类型

(一)认识存储引擎

1.MySQL所支持的存储引擎
  1. #方法一
  2. show engines
  3. #方法二
  4. SHOW VARIABLES LIKE 'HAVE%'
2.操作默认存储引擎
  • 查询默认存储引擎
  1. #查询默认存储引擎
  2. SHOW VARIABLES LIKE 'stronge_engine%'
  • 选择存储引擎

    • MYISAM存储引擎:由于该存储引擎不支持事务,也不支持外键,所以访问速度比较快,因此对事务完整性没有要求并以访问为主的应用适合用该存储引擎
    • InnoDB存储引擎:支持具有提交、回滚和崩溃恢复能力的事务安装,所以比MYISAM存储引擎占用更多的磁盘空间,因此需要频繁的更新删除操作,同时还对事务的完整性要求比较高,需要实现并发控制,此时适合使用该存储 引擎
    • MEMORY存储引擎:该存储引擎使用内存来存储数据,因此该存储引擎的数据访问速度快,但是安全没有保障。如果应用中设计数据较小,需要进行快速访问,适合使用该存储引擎。

(二)数据类型

1.整数类型
整数类型 TINYINT SMALLINT MEDIUMINT INT和INTEGER BIGINT
字节 1 2 3 4 8
2.浮点数类型、定点数类型和位类型
  • 浮点数类型
浮点数类型 FLOAT DOUBLE
字节 4 8
  • 定点数类型
定点数类型 字节
DEC(M,D)和(DECIMAL(M,D) m+2

FLOAT和DOUBLE数据类型存储数据时存储的是近似值,而DECIMAL存储的是字符串,因此提供了更高的精度,在需要表示金额等货币类型是有选择DECIMAL数据类型。

  • 位类型
位类型 字节
BIT(M) 1~8
3.日期和时间类型
日期和时间类型 字节 最小值 最大值
DATE 4 1000-01-01 9999-12-31
DATETIME 8 1000-01-01 00:00:00 9999-12-31 23:59:59
TIMESTAMP 4 19700101080001 2038年的某个时刻
TIME 3 -835:59:59 835:59:59
YEAR 1 1901 2155
4.字符串类型
  • char系列字符串类型
char系列字符串类型 字节 描述
CHAR(M) M M为0~255之间的整数
varchar(M) m m为0~65535之间的整数
  • text系列的字符串类型
TEXT系列字符串类型 字节 描述
TINYTEXT 0~255 值的长度为+2个字节
TEXT 0~65535 值的长度为+2个字节
MEDIUMTEXT 0~167772150 值的长度为+3个字节
LONGTEXT 0~4294967295 值的长度为+4个字节
  • BINARY系列字符串类型
BINARY系列字符串类型 字节 描述
BINARY(M) M 允许长度为0~M
VARBINARY(M) M 允许长度为0~M
  • BLOB系列字符串类型

四、表的操作

表是包含数据库中所有数据的数据库对象

1.表的基本概念

表中的数据库对象包括列、索引、触发器

  • 列(Columns):也成属性列,在具体创建表时,必须指定列的名字和数据类型
  • 索引(Indexes):是指根据指定的数据库表列建立起来的顺序,提供了快速访问数据的途径且可监督表的数据,使其索引所指向的列中的数据不重复。
  • 触发器(Triggers):是指用户定义的事务的集合,当对一个表中的数据插入、更新或删除时,这组命令就会自动的执行,可以用来确保数据的完整性和安全性。
2.创建表
  1. CREATE TABLE TABLE_NAME(
  2. 属性名 数据类型,
  3. 属性名 数据类型,
  4. 属性名 数据类型,
  5. 属性名 数据类型
  6. )
3.查看表结构
  1. #查看表定义
  2. DESCRIBE TABLE_NAME
  3. #查看表详细定义
  4. DESCRIBE CREATE TABLE TABLE_NAME;
4.删除表
  1. DROP TABLE TABLE_NAME
5.修改表
  1. #修改表名
  2. ALTER TABLE old_table_name RENAME [TO] new_table_name
  3. #在表的最后一个位置增加字段
  4. ALTER TABLE table_name ADD 属性名 属性类型
  5. #在表的最后一个位置增加字段
  6. ALTER TABLE table_name ADD 属性名 属性类型 FIRST;
  7. #在表的指定字段之后增加字段
  8. ALTER TABLE table_name ADD 属性名 属性类型 AFTER 属性名
6.删除字段
  1. #删除字段
  2. ALTER TABLE table_name DROP 属性名
7.修改字段
  1. #修改字段的数据类型
  2. ALTER TABLE table_name MODIFY 属性名 数据类型
  3. #修改字段的名字
  4. ALTER TABLE table_name CHANGE 旧属性名 新属性名 旧数据类型
  5. #同时修改字段的名字和属性
  6. ALTER TABLE table_name CHANGE 旧属性名 新属性名 新数据类型
  7. #修改字段顺序
  8. ALTER TABLE table_name MODIFY 属性名1 数据类型 FIRST|AFTER 属性名2
8.操作表的约束
  • 完整性约束
完整性约束关键字 含义
NOT NULL 约束字段的值不能为空
DEFAULT 设置字段的默认值
UNIQUE KEY(UK) 约束字段的值是唯一的
PRIMARY KEY (PK) 约束字段为表的主键,可以作为该表记录的唯一标识
AUTO_INCREMENT 约束字段的值为自动增加
FOREIGN KEY (FK) 约束字段为表的外键

约束可分为:单列约束,每个约束只约束一列数据;多列约束,每个约束可以约束多列数据

  • 设置非空约束(NOT NULL,NK)

    1. CREATE TABLE table_name(
    2. 属性名 数据类型 NOT NULL,
    3. ....
    4. );
  • 设置字段的默认值(DEFAULT)

  1. CREATE TABLE table_name(
  2. 属性名 数据类型 DEFAULT 默认值,
  3. ....
  4. );
  • 设置唯一约束(UNIQUE,UK)
  1. CREATE TABLE table_name(
  2. 属性名 数据类型 UNIQUE I,
  3. ....
  4. );
  • 设置主键约束(PRIMARY KEY,PK)
  1. #单字段主键
  2. CREATE TABLE table_name(
  3. 属性名 数据类型 PRIMARY KEY,
  4. ....
  5. );
  6. #多字段主键
  7. CREATE TABLE table_name(
  8. 属性名 数据类型
  9. ....
  10. [CONSTRAINT 约束名] PRIMARY KEY (属性名,属性名。。。)
  11. );
  • 设置字段值自动增加(AUTO_INCREMENT)
  1. CREATE TABLE table_name(
  2. 属性名 数据类型 AUTO_INCRMENT,
  3. ....
  4. );
  • 设置外键约束(FOREIGN KEY ,FK)
  1. CREATE TABLE table_name(
  2. 属性名 数据类型,
  3. 属性名 数据类型
  4. ....
  5. CONSTRANT 外键约束名 FOREIGN KEY(属性名 1) REFERENCES 表名 (属性名2
  6. );

五、索引的操作

(一)索引的概述

1.索引是创建在数据库表对象上的,由表中的一个字段或多个字段生成的键组成,这些键存储在数据结构(B-树或哈希表)中,通过MySQL可以快速有效的查找出与键值相关联的字段。

2.根据索引的存储类型,可以将索引分为B型树索引和哈希索引

3.InnoDB和MyISAM存储引擎支持BTREE类型索引,MEMORY存储引擎支持HASH类型索引,默认为前者索引

  • MySQL支持6中索引:普通索引、唯一索引、全文索引、单列索引、多列索引、空间索引
1.适合创建索引的情况
  • 经常被查询的字段,即在WHERE子句中出现的字段
  • 在分组的字段,即在GROUP BY子句中出现的字段
  • 存在依赖关系的字表和父表之间联合查询,即主键或外键字段。
  • 设置唯一约束的字段
2.不适合创建索引的情况
  • 在查询中很少被使用的字段
  • 拥有许多重复值的字段
(二)创建和查看索引
1.创建和查看普通索引

普通索引:就是在创建索引时,不附加任何条件,该类型的索引可以创建在任何数据类型的字段上。

  • 创建表时创建普通索引
  1. CREATE TABLE table_name(
  2. 属性名 数据类型,
  3. 属性名 数据类型,
  4. ... ...
  5. 属性名 数据类型,
  6. INDEX|KEY [索引名](属性名 1 [(长度)] [ASC|DESC]
  7. )
  8. INDEXKEY参数用来指定字段为索引
  9. 索引名参与用来指定所创建索引名
  10. ’属性名 1‘参数用来指定索引所关联的字段的名称,
  11. 长度用来指定索引的长度

MySQL所支持的存储引擎对每个表至少支持16个索引,总索引长度至少为256字节。

  • 在已经存在的表上创建索引
  1. CREATE INDEX 索引名
  2. ON 表名 (属性名 [(长度)] [ASC|DESC])
  • 通过sql语句ALTER TABLE创建普通索引
  1. ALTER TABLE table_name
  2. ADD INDEX|KEY 索引名 (属性名 [(长度)] [ASC|DESC])
2.创建和查看唯一索引

唯一索引:在创建索引时,限制索引的之必须是唯一的。通过该类型的索引可以更快速的查询某条记录、

在MySQL中,根据创建索引的方式,可以分为自动索引和手动索引两种。

​ 自动索引:在数据库表里设置完整性约束时,该表会被系统自动创建索引

​ 手动索引:手动在表上创建索引

当设置表中的某个字段设置主键或是唯一完整性约束时,系统就会自动创建关联该字段的唯一索引。

  • 创建表时创建唯一索引
  1. CREATE TABLE table_name(
  2. 属性名 数据类型,
  3. 属性名 数据类型,
  4. ... ...
  5. 属性名 数据类型,
  6. UNIQUE INDEX|KEY [索引名](属性名 1 [(长度)] [ASC|DESC]
  7. )
  • 在已经存在的表上创建唯一索引
  1. CREATE UNIQUE INDEX 索引名
  2. ON 表名 (属性名 [(长度)] [ASC|DESC])
  • 通过SQL语句ALTER TABLE创建唯一索引
  1. ALTER TABLE table_name
  2. ADD UNIQUE INDEX|KEY 索引名 (属性名 [(长度)] [ASC|DESC])
3.创建和查看全文索引

全文索引主要关联在数据类型为CHAR/VARCHAR和TEXT的字段上,以便能够更加快速的查询数据量较大的字符串类型的字段。

只能在MyISAM的数据库表上创建全文索引

在默认情况下,全文索引的搜索执行方式为不区分大小写,如果全文索引所关联的字段为二进制数据类型,则区分大小写的搜索方式执行。

  • 创建表时创建全文索引
  1. CREATE TABLE table_name(
  2. 属性名 数据类型,
  3. 属性名 数据类型,
  4. ... ...
  5. 属性名 数据类型,
  6. FULLTEXT INDEX|KEY [索引名](属性名 1 [(长度)] [ASC|DESC]
  7. )
  • 在已经存在的表上创建全文索引
  1. CREATE FULLTEXT INDEX 索引名
  2. ON 表名 (属性名 [(长度)] [ASC|DESC])
  • 通过SQL语句ALTER TABLE创建全文索引
  1. ALTER TABLE table_name
  2. ADD FULLTEXT INDEX|KEY 索引名 (属性名 [(长度)] [ASC|DESC])
4.创建和查看多列索引

多列索引:在创建索引时,所关联的字段不是一个字段,虽然可以通过所关联的字段进行查询,但是只有查询条件中使用了所关联字段红的第一个字段,多列索引才会被使用

  • 创建表时创建多列索引
  1. CREATE TABLE table_name(
  2. 属性名 数据类型,
  3. 属性名 数据类型,
  4. ... ...
  5. 属性名 数据类型,
  6. INDEX|KEY [索引名](属性名 1 [(长度)] [ASC|DESC],
  7. ... ...
  8. (属性名 1 [(长度)] [ASC|DESC]
  9. )
  • 在已经存在的表上创建多列索引
  1. CREATE INDEX 索引名
  2. ON 表名 (属性名 [(长度)] [ASC|DESC])
  3. ... ...
  4. (属性名 [(长度)] [ASC|DESC])
  • 通过SQL语句ALTER TABLE 创建多列索引
  1. ALTER TABLE table_name
  2. ADD FULLTEXT INDEX|KEY 索引名 (属性名 [(长度)] [ASC|DESC])
  3. ... ...
  4. (属性名 [(长度)] [ASC|DESC])
(三)、删除索引

删除索引:就是删除表中已经创建的索引,是由于这些索引会降低表的更新速度,影响数据库的性能。

1.删除索引的语法形式
  1. DROP INDEX index_name
  2. ON table_name

Mysql基础知识--概述和索引的更多相关文章

  1. mysql基础知识语法汇总整理(一)

    mysql基础知识语法汇总整理(二)   连接数据库操作 /*连接mysql*/ mysql -h 地址 -P 端口 -u 用户名 -p 密码 例如: mysql -u root -p **** /* ...

  2. Magento 架构基础知识概述

    Megento 架构基础知识概述 Magento整合了面向对象的基于PHP的应用程序的核心架构原则.这些一般原则的综合讨论既有在线的,也有印刷形式.以下讨论主要关注这些主题如何直接应用于Magento ...

  3. mysql基础知识语法汇总整理(二)

    mysql基础知识语法汇总整理(一) insert /*insert*/ insert into 表名(字段列表) values(值列表); --蠕虫复制 (优点:快速复制数据,测试服务器压力) in ...

  4. MySQL 基础知识梳理

    MySQL 的安装方式有多种,但是对于不同场景,会有最适合该场景的 MySQL 安装方式,下面就介绍一下 MySQL 常见的安装方法,包括 rpm 安装,yum 安装,通用二进制安装以及源码编译安装, ...

  5. MySQL基础知识:创建MySQL数据库和表

    虚构一个微型在线书店的数据库和数据,作为后续MySQL脚本的执行源,方便后续MySQL和SQL的练习. 在虚构这个库的过程中,主要涉及的是如何使用命令行管理 MySQL数据库对象:数据库.表.索引.外 ...

  6. MySQL基础(四)——索引

    MySQL基础(四)--索引

  7. mysql基础知识大全

    前言:本文主要为mysql基础知识的大总结,mysql的基础知识很多,这里作简单概括性的介绍,具体的细节还是需要自行搜索.当然本文还有很多遗漏的地方,后续会慢慢补充完善. 数据库和数据库软件 数据库是 ...

  8. MySQL基础知识:启动管理和账号管理

    整理.记录常用的MySQL基础知识:时间久了,很多就忘记了. 操作系统环境为MacOS Catalina, MySQL版本为: 8.0.13 MySQL Community Server - GPL. ...

  9. MySQL基础知识:Character Set和Collation

    A character set is a set of symbols and encodings. A collation is a set of rules for comparing chara ...

随机推荐

  1. CF1225B2 TV Subscriptions (Hard Version)

    CF1225B2 TV Subscriptions (Hard Version) 洛谷评测传送门 题目描述 The only difference between easy and hard vers ...

  2. 从应用到内核,分析top命令显示的进程名包含中括号"[]"的含义

    背景 在执行top/ps命令的时候,在COMMAND一列,我们会发现,有些进程名被[]括起来了,例如 PID PPID USER STAT VSZ %VSZ %CPU COMMAND 1542 928 ...

  3. MySQL如果频繁的修改一个表的数据,那么这么表会被锁死。造成假死现象。

    MySQL如果频繁的修改一个表的数据,那么这么表会被锁死.造成假死现象. 比如用Navicat等连接工具操作,Navicat会直接未响应,只能强制关闭软件,但是重启后依然无效. 解决办法: 首先执行: ...

  4. jQuery 源码解析(六) $.each和$.map的区别

    $.each主要是用来遍历数组或对象的,例如: var arr=[11,12,13,14]; $.each(arr,function(element,index){ //遍历arr数组 console ...

  5. 在Visual Studio 中使用 <AutoGenerateBindingRedirects> 来解决引用的程序集版本冲突问题

    问题: https://stackoverflow.com/questions/42836248/using-autogeneratebindingredirects-in-visual-studio ...

  6. 【java提高】---patchca生成验证码

    Java使用patchca生成验证码        Patchca是Piotr Piastucki写的一个java验证码开源库,打包成jar文件发布,patchca使用简单但功能强大. 本例实现了自定 ...

  7. 简单ALV得演示(用到了ALV可编辑及保存后修改数据库)

    *&---------------------------------------------------------------------* *& Report YPMRP010_ ...

  8. Asp.Net或WebAPI获取表单数据流(批量文件上传)

    //Web或WebAPI获取表单数据流(批量文件上传)        public JsonResult UploadFile()        {            //HttpPostedFi ...

  9. 《深入理解Java虚拟机》并发(第12~13章)笔记

    volatile关键字的作用 所有变量的可见性--仅仅是修改后的值的可见性,不保证并发修改时新值和预期一致.即只保证读,不保证写. 禁止指令重排序--修饰的变量,读写不会指令重排.如变量isReady ...

  10. C#中将long浮点数格式化为{H:min:s.ms}格式的字符串的方法

    场景 表示时间的数据格式为浮点数,如下: 需要将其格式化为{H:min:s.ms}格式的字符串,效果如下: 注: 博客主页:https://blog.csdn.net/badao_liumang_qi ...