300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > MySQL数据库快速入门到精通(超详细保姆级 建议收藏)这可能是目前最适合你的教程

MySQL数据库快速入门到精通(超详细保姆级 建议收藏)这可能是目前最适合你的教程

时间:2019-08-10 00:34:36

相关推荐

MySQL数据库快速入门到精通(超详细保姆级 建议收藏)这可能是目前最适合你的教程

前言

此文章旨在为需要掌握快速开发和复习MySQL的同学所准备,您完全可以把此文章当作参考文档来使用,本文将尽量精简,使您快速的理解和掌握语法。

关于MySQL

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

如果您在阅读此文档前,还未掌握MySQL的安装与配置,请您务必观看此文章:MySQL下载安装详细配置--超详细保姆级,附常见问题解决方法。_神兽汤姆猫的博客-CSDN博客

MySQL数据库的构成

数据库对象

MySQL的连接

此处博主发现大部分教程都使用了“全世界最棒的语言PHP”进行教学,但对于本文的初衷来讲,并不符合本文的初衷,本文将使用行业热门软件Navicat Premium为基础进行教学和快速入门。如果您未拥有此软件可以联系博主。

创建和管理数据库

创建数据库

创建用户数据库需要使用到SQL语句CREATE DATABASE语句。

CREATE DATABASE [IF NOT EXISTS] <数据库名>[选项];

例:创建名称为Book的数据库,语句及实现效果如下:

CREATE DATABASE IF NOT EXISTS Book;

查看已有的数据库

对于已经存在的数据库,我们使用SHOW DATABASE 命令来显示服务器中所有可使用数据库的信息。

SHOW DATABASES;

例:我们查询所有可使用数据库的信息,代码和效果如下所示:

SHOW DATABASES;

打开数据库

一个MySQL服务器中有多个数据库,对于用户来讲需要指定连接其中一个的数据库,或数据库1切换到数据库2,就需要利用SQL语句中的USE命令来实现。

USE <需要打开\指定\切换的数据库>;

例:我们打开数据库Book,代码和效果如下:

USE book;

注:对于SQL语句来讲,大小写效果等同,按自己习惯即可。

修改数据库

此操作我们主要是修改数据库的参数。

ALTER DATABASE [数据库名][选项];

例:如果需要练习此语法,可使用如下例子:

ALTER DATABASE bookDEFAULT CHARACTER SET =gbkDEFAULT COLLATE =gbk_chinese_ci;

删除数据库

无用的数据库会占用我们的磁盘空间和系统资源,此时我们需要删除数据库语句。

DROP DATABASE [IF EXISTS] <数据库名>;

例:我们删除创建的book数据库:

DROP DATABASE IF EXISTS book;

数据库备份与恢复

备份与恢复是MySQL的重要组成部分,是为了防止数据库因意外而损坏。

我们需要注意的是备份是十分耗费时间与资源的操作,不可频繁操作,所以我们应根据使用情况确定适当的备份周期。

备份类型

备份数据

因本文是快速入门,故使用软件进行备份:

表的数据类型

注意:

如数据超出数据类型允许的取值范围,将会报错。在使用过程中,如计算量过大考虑将数据对象设为FLOAT或REAL数据类型,否则会产生误差。如使用字符数据,其中的值超过规定的长度,会自动截取。

数据表用于存储数据库中的所有数据,是数据库中最重要的对象。是组成数据库的基本元素,用于存储实体集和实体间联系的数据。

一个表即为一个关系,表看作为我们的办公软件Excel,就是行与列的组合,行代表一条记录,列代表记录的一个字段。

表的特点:

一个表即为一个实体,该实体具有唯一的名字表由行于列组合而成,每一行为一条记录也代表该表中的一个实例,每一列(字段/域)代表具有相同属性的列值行值在同表中具有唯一性,由主键约束决定。列值名在同表中具有唯一性行列顺序可任意排列,最多定义1024列。

创建和管理数据表基本操作

创建表

使用CREATE TABLE语句创建表

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] <表名>[(<字段名即列名> <数据类型> [完整性约束条件][,....])][表选项];

其中表选项则用于描述存储引擎,字符集等选项:

例:我们创建一个学生表Student:

CREATE DATABASE Educational;USE Educational;CREATE TABLE student(# 学号ID CHAR(9) PRIMARY KEY,# 姓名name VARCHAR(10),# 性别gender CHAR(6),# 出生日期birthdate date);

效果如下所示:

此时我们还需创建课程表course:

CREATE TABLE course(# 课程号courseID CHAR(5) PRIMARY key,# 课程名coursename VARCHAR(36),# 课程简介Syllabus text,# 课时hours INT,# 学分credit TINYINT,# 开课学期semester VARCHAR(8));

如下所示:

我们还需要创建一个成绩表Score,将学生表Student与课程表course相关联,如下

CREATE TABLE Score(# 学号ID CHAR(9) REFERENCES student(ID),# 课程号courseID CHAR(5) REFERENCES course(courseID),# 成绩Results DECIMAL(4,1) CHECK(results BETWEEN 0 AND 100));

效果如下:

查看表信息

查看数据库中所有表信息

SHOW TABLES;

查看表结构

DESC <表名> [字段/列名];

例:

DESC Score;

修改表结构

我们在创建完后表之后,后期可能根据需要改变表本身定义的结构。故需要ALTER TABLE 语句修改表结构

ALTER TABLE <表名>{# 为指定的表添加一个新的字段/列,数据类型由用户指定,添加不需要关键字COLUME,添加需要数据类型和长度。[ADD <新字段/列名> <数据类型>[<完整性约束条件>][,...]]# 为指定的字段添加索引。[ADD INDEX[索引名](索引字段,...)]# 对指定表中字段/列的数据类型或者完整性约束条件进行修改。如该列定义了约束,在修改时会进行限制,如需必须修改,则需先删除该列的约束在进行修改。[MODIEF COLUMN <字段/列名> <新数据类型>[<完整性约束条件>]]# 删除表中不需要的字段/列或者完整性约束名,删除列需要添加关键字COLUME,因默认情况下为删除约束。删除不需数据类型和长度,只需指定列名即可。[DROP COLUMN <字段/列名>[<完整性约束名>][,...]]# 删除表中不需要的索引。[DROP INDEX <索引名>]# 对表进行更名操作,表名更改后原名称不存在[RENAME[AS] <新的表名>]};

如需实操,请看此例:

# 例1:在student表添加爱好(hobby)字段/列,数据类型为TEXTalter table studentadd hobby text;# 例2:将course表中的学分(credit)字段/列的数据类型修改为smalintalter table couresmodify credit smalint;# 例3:删除student表中爱好(hobby)字段/列alter table studentdorp column hobby;# 例4:将course表名修改为csalter table couresrename as cs;

删除表

DROP [TEMPORARY] TABLE [IF EXISTS] <表名> [,<表名> .....];# TEMPORARY意为暂时

如需实操请看此例:

# 删除student表drop table student;

对表数据的基本操作

我们前面只是创建了表,但表中却没有数据,此时我们就需要进行添加数据,更新数据,删除数据的操作。需要注意的是在添加数据时,对于不同的数据类型我们插入的数据格式也不一样。

添加数据

INSERT INTO <表名> [<字段名>[,...]]VALUES( <常量> [,...]);

例:对student表添加数据

INSERT INTO student VALUES('1','汤姆猫','男','2000-01-01');INSERT INTO student VALUES('2','风火轮','男','1998-11-03');INSERT INTO student VALUES('3','闪光弹','女','2000-08-21');INSERT INTO student VALUES('4','降世拳','女','-04-11');INSERT INTO student VALUES('5','流星腿','女','-09-23');INSERT INTO student VALUES('6','闪闪光','女','-02-02');INSERT INTO student VALUES('7','汤汤水','女','1999-03-29');

效果如下:

其他表添加数据同理。

更新数据

UPDATE <表名>SET <字段/列名> = <表达式> [,...][WHERE <条件>];

如需实操请看此例:

# 将student表中的汤姆猫的出生日期改为:2001-02-03update studentset birthdate ='2001-02-03'where name = '汤姆猫';

删除数据

DELETE FROM <表名>[WHERE <条件>];

如需实操请看此例:

# 删除student表汤姆猫的记录delete from studentwhere name = '汤姆猫'

如果需要删除表中所有的记录,请执行下列语句

TRUNCATE TABLE <表名>;

如需实操请看此例:

# 删除student表truncate table student;

创建与管理索引基础操作*

数据查询是操作数据库最麻烦的操作。如果表中的数据很多,我们搜索数据需要极长的时间,这会造成服务器的资源浪费,故为了提高查询数据的能力,我们就需要索引。

关于索引

索引是一个列表,它包含了某一个表中一列或若干列的集合及其记录在数据表中存储位置的物理地址。

索引是依赖表而建立的,提供了数据库中编排表数据的内部方法。

表的存储由两部分组成:

表的数据页面表的索引页面,索引则存在于此页面

索引页面比数据页面小很多。可以理解为索引就是目录。实际步骤如下:

索引只是提供了一种快速访问指定记录的方法而已。索引可以极大的提高系统的性能,具体则体现在如下几点:

加快了数据的检索速度通过创建唯一性索引可以确保每一行数据的唯一性加速了表与表之间的连接使用分组和排序子句检索查询数据时,减少了查询过程中排序与分组的时间

对于建立一个索引我们也是有一定的原则的,具体如下:

对表中的主键字段/列建立索引对表中的外键字段/列建立索引对常用来查询数据记录的字段建立索引对常用来作为排序基准的字段建立索引对在查询中用来连接表的字段建立索引对查询中极少涉及的字段/列与重复值较多的字段/列建立索引

索引的分类:

创建索引

有三种语句方法进行创建

# CREATE INDEX语句,在一个已存在的表上创建索引## UNIQUE、FULLTEXT、SPATIAL选项指定其创建索引的类型。如为填写则默认创建的为普通索引CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX <索引名>[USING index_type]# ASC | DESC指定索引列的排序方式升序还是降序,默认为ASC升序ON <表名> (索引字段[ASC | DESC][,....]);

如需实操请看此例:

# 为student表中的学号ID创建唯一索引,排序降序USE Educational;create unique index istudenton student(ID desc);

# 为成绩表Score中的学号ID与课程号courseID创建复合索引# 此处使用ALTER TABLE语句alter table scoreadd index iscore(ID,courseID);

# 新建表Book,并为其内容摘要synopsis创建全文索引create table book(isbn char(13) primary key,bookname char(80) not null,# 内容摘要synopsis text not null,# 单价univalent decimal(6,2),# 出版日期publicationDate date not null,fulltext index ibook(synopsis))engine = myisam;

# 创建表library,并为其的作者author字段创建哈希索引create table library(author varchar(30) not null,# 出版社press varchar(30) not null,key using hash(author))engine = memory;

查看索引

SHOW CREATE TABLE <表名>;

如需实操请看此例:

# 查看表book的索引信息show create table book;

删除索引

索引不需要时请将其删除。

# DROP INDEX语句DROP INDEX <索引名> ON <表名>;#DROP INDEX语句实操:删除book表的ibook索引drop index ibook on book;# ALTER TABLE语句# ALTER TABLE语句实操:删除表score中的iscore索引alter create scoredrop index iscore;

约束待更新ing....

数据查询

查询是数据库中最常用最重要的功能。

简单查询

简单查询是按照一定的条件在单一的表上进行数据查询,包括查询结果的排序和利用查询结果生成新表。

SELECT语句结构

此语句十分难以理解。

# SELECT子句指定查询结果中需要返回的值SELECT <子句1># FROM 子句指定从其中检索行的表或视图FROM <子句2># WHERE表达式指定查询的搜索条件[WHERE <表达式1>]# GROUP BY子句指定查询结果的分组条件[GROUP BY <子句3>]# HAVING表达式指定分组或者集合的查询条件[HAVING <表达式2>]# ORDER BY子句指定查询结果的排序方法[ORDER BY <子句4>]# LIMIT子句限制被select语句返回的行数[LIMIT <子句5>]# UNION操作符将多个select语句查询结果组合为一个结果集,该结果集包含联合查询中所有查询的全部行[UNION <操作符>]

SELECT子语句

# 默认选项为ALL,用于指定表示结果集的所有行,可显示重复行# DISTINCT指定在结果集显示唯一行,空值被认为相等,用于消除取值重复的行# ALL与DISTINCT不可同时使用SELECT[ ALL | DISTINCT] <目标表达式> [,<目标表达式>][,...]FROM <表或视图名> [,<表或视图名>][,...][LIMIT n1[,n2]];# LIMIT n1表示返回最前面的n1行数据,n1表示返回的行数# LIMIT n1,n2表示从n1行开始,返回n2行数据,从0行开始,n1,n2必须是非负的整型常量才可以##目标表达式为结果集选择的要查询的特定表中的例,它可以是星号(*)、表达式、变量、列表等。星号(*)用于返回表或视图的所有列,列表用“表名”“列名”表示。

持续更新...

如果您认真阅读至此,您现在已经掌握了MySQL的语法与使用,且随着您认真练习使用次数的增加,您对MySQL的掌握我相信不止于此,如果您对此语言或其他有进阶的要求,请移步至我的博客进行其余的修炼计划。

感谢您认真观看完毕此文章,如果此文章对您有帮助的话,还请您点赞收藏评论,这对我有很大的帮助。

MySQL数据库快速入门到精通(超详细保姆级 建议收藏)这可能是目前最适合你的教程 从基础语法到实例演示。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。