MySQL数据库入门知识点整理

数据库基本操作

1、创建数据库语句

create Database database_name

数据库名称有以下几点要求

  • 不能与已存在的数据库名称相同;
  • 由字母、数字、下划线、@、$和#符号组成;
  • 不能以数字及$符号开头;
  • 标识符不能使用MySQL的保留字;
  • 不能包含空格和特殊字符;
  • 长度不能超过128位;

2、查看数据库

SHOW DATABASE

此命令会显示MySQL中所有的数据库;

3、选择数据库

USE database_name

4、删除数据库

DROP DATABASE database_name

MySQL数据库存储引擎

存储引擎指定了表的类型,即如何存储和索引数据、是否支持事务等,同时存储引擎也决定了表在计算机中的存储方式。

SHOW ENGINES

此命令可以查看MySQL所支持的存储引擎;

MySQL5.5支持9种存储引擎:FEDERATED、MRG_MYISAM、MyISAM、BLACKHOLE、CSV、MEMORY、ARCHIVE和PERFORMANCE_SCHEMA

MySQL数据库数据类型

MySQL数据库管理系统提供了整数类型、浮点数类型、定点数类型和位类型、日期和时间类型、字符串类型。

整数类型

MySQL支持的整数类型有TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)、BIGINT;所占字节从左到右依次为1bit、2bit、3bit、4bit、8bit;

浮点数类型、定点数类型和位类型

MySQl数据库管理系统除了支持标准SQL中所有的浮点数类型、定点数类型外,还进行了相应的扩展,扩展后增加了位类型。

浮点数类型:FLOAT、DOUBLE;所占字节依次为4bit、8bit;

在具体使用MySQL数据库时,如果需要存储小数数据,则可以选择FLOAT类型和DOUBLE类型,具体选择两种类型中的哪一个,则需要判断存储小数数据需要精确到的小数位数,当需要精确到小数点后10位以上,就需要选择DOUBLE类型;

定点数类型:DEC和DECIMAL;该数据类型取值范围与DOUBLE类型相同;

在具体使用MySQL数据库时,如果需要存储小数数据,除了可以选择FLOAT和DOUBLE类型外,还可以选择DEC和DECIMAL类型,当要求小数数据精确度非常高时,则可以选择DEC和DECIMAL类型;

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

位类型:BIT;

日期和时间类型

MySQL数据库管理系统支持的时间和日期类型:DATE、DATETIME、TIMESTAMP、TIME和YEAR;

在具体应用中,各种日期和时间类型应用场合如下:

  • 如果要表示年月日,一般会使用DATE类型;
  • 如果要表示年月日时分秒,一般会使用DATETIME类型;
  • 如果需要经常插入或更新日期为当前系统时间,一般会使用TIMESTAMP类型;
  • 如果要表示时分秒,一般会使用TIME类型;
  • 如果要表示年份,一般会使用YEAR类型;

字符串类型

MySQL数据库管理系统支持四种系列的字符串类型的数据,分别是CHAR系列、TEXT系列、BINARY系列及BLOB系列。

CHAR系列有两种:CHAR及VARCHAR。CAHR最大存储长度为255字节,VARCHAR最大存储长度为65535字节。

在具体应用中,如果需要存储少量字符串,则可以选择CHAR和VARCHAR,至于选择两者中的哪一个,则需要判断所存储字符串长度是否经常变化,如果经常发生变化,则可以选择VARCHAR类型,否则选择CHAR类型;

TEXT系列有四种:TINYTEXT、TEXT、MEDIUMTEXT及LONGTEXT。

在具体应用中,如果需要存储大量字符串(存储文章内容的纯文本),则可以选择TEXT系列字符串类型。至于选择这些类型的哪一个,则需要判断所存储字符串长度,根据存储字符串长度来决定是选择允许长度最小的TINYTEXT字符串类型,还是选择允许长度最大的LONGTEXT字符串类型。

BINARY系列有两种:BINARY及VARBINARY。

与CHAR系列字符串类型相似,不同的是BINARY系列可以存储二进制数据(例如图片、音乐或者视频文件)而CHAR系列只能存储字符数据。

在具体应用中,如果需要存储少量二进制数据,则可以选择BINARY系列字符串类型,至于是BINARY系列中的选择哪一个,则需要判断所存储二进制数据长度是否经常变化,如果经常发生变化,则选择VARBINARY类型,否则选择BINARY类型。

BLOB系列有四种:TINYBLOB、BLOB、MEDIUMBLOB及LONGBLOB。

与TEXT系列字符串类型相似,不同的是,BLOB系列可以存储二进制数据(例如图片、音乐或者视频文件),而TEXT系列只能存储字符数据。

在具体应用中,如果需要存储大量的二进制数据(存储电影等视频文件),则可以选择BLOB系列字符串型。至于选择这些类型中的哪一个,则需要判断所存储二进制数据的长度,根据存储二进制数据的长度来决定是选择允许长度最小的TINYBLOB字符串类型,还是选择允许长度最大的LONGBLOB字符串类型。

表的操作

表是包含数据库中所有数据的数据库对象。表中的数据库对象包含列【Columns】、索引[Indexes]和触发器【Triggers】。

  • 列【Colnmns】:也称属性列,在具体创建表时,必须指定列的名字和数据类型。
  • 索引【Indexes】:是指根据指定的数据库表列建立起来的顺序,提供了快速访问数据的途径且可监督表的数据,使其索引所指向的列中的数据不重复。
  • 触发器【Triggers】:是指用户定义的事务命令的集合,当对一个表中的数据进行插入、更新或删除时这组命令就会自动执行,可以用来确保数据的完整性和安全性。

创建表

语法形式

CREATE TABLE table_name(属性名 数据类型,属性名 数据类型, ...)

表明紧跟在关键字CREATE TABLE之后,表的具体内容定义在圆括号之中,各列之间用逗号(英文)隔开。表名的命名规则与数据库命名规则一样。

查看表

DESCRIBE table_name
SHOW CREATE TABLE table_name

删除表

DROP TABLE table_name

修改表名

ALTER TABLE old_table_name RENAME [TO] new_table_name

增加字段

在表的最后一个位置添加字段

ALTER TABLE table_name ADD 属性名 数据类型

在表的第一个位置增加字段

ALTER TABLE table_name ADD 属性名 数据类型 FIRST

在表的指定字段之后增加字段

ALTER TABLE table_name ADD 属性名 数据类型 AFTER 属性名

删除字段

ALTER TABLE table_name DROP 属性

修改字段

修改字段的数据类型

ALTER TABLE table_name MODIFY 要修改的属性名 修改之后的数据类型

修改字段的名字

ALTER TABLE table_name CHANGE 旧属性名 新属性名 旧数据类型 

同时修改字段的名字和数据类型

ALTER TABLE table_name CHANGE 旧属性名 新属性名 新数据类型

修改字段的顺序

ALTER TABLE table_name MODIFY 属性名1 数据类型 FIRST|AFTER 属性名2

操作表的约束

MySQL支持以下完整性约束

  • NOT NULL: 约束字段不能为空;
  • DEFAULT: 设置字段的默认值;
  • UNQUE KEY【UK】:约束字段的值时唯一;
  • PRIMARY KEY【PK】:约束字段为表的主键,可以作为该表的记录的唯一标识;
  • AUTO_INCREMENT:约束字段的值为自动增加;
  • FOREIGM KEY【FK】:约束字段为表的外键;

设置非空约束

当数据库表中的某个字段上的内容不希望设置为NULL时,则可以使用NK约束进行设置。即NK约束在创建数据库表时为某些字段加上“NOT NULL”约束条件,保证所有记录中该字段都有值。如果用户插入的记录中,该字段为空值,则数据库管理系统会报错。

语法形式如下

CREATE TABLE table_name ( 属性名 数据类型 NOT NULL, ...)

设置字段的默认值

当为数据库表中插入一条新纪录时,如果没有为某个字段赋值,那么数据库系统自动给为这个字段插入默认值。

语法形式如下

CREATE TABLE table_name ( 属性名 数据类型 DEFAULT 默认值, ...)

设置唯一约束

当数据库表中的某个字段上的内容不允许重复时,则可以使用UK约束进行设置。即UK约束在创建数据库表时为某些字段加上“UNIQUE”约束条件,保证所有记录中该字段上的值不重复。

语法形式如下:

CREATE TABLE table_name ( 属性名 数据类型 UNIQUE, ...)

设置主键约束

当想用数据库表中的某个字段来唯一标识所有记录时,则可以使用PK约束进行设置。即PK约束在创建数据库表时为某些字段加上“PRIMARY KEY”约束条件,则该字段可以唯一地标示所有记录。

在数据库表中之所以设置主键,是为了数据库管理系统快速地查找到表中的记录。在具体设置主键约束时,必须要满足主键字段的值是唯一、非空的。由于主键可以是单一字段,也可以是多个字段,因此分为单字段主键和多字段主键。

单字段主键

语法形式如下

CREATE TABLE table_name ( 属性名 数据类型 PRIMARY KEY, ...)

多字段主键

语法形式如下

CREATE TABLE table_name ( 属性名 数据类型, ... CONSTRAINT 约束名 PRIMARY KEY(属性名,...))

设置字段值自动增加

AUTO_INCREMENT是MySQL唯一扩展的完整性约束,当为数据库表中插入新纪录时,字段上的值会自动生成唯一的ID。在具体设置AUTO_INCREMENT约束时,一个数据库表中只能由一个字段使用该越是,该字段的数据类型必须是整数类型。由于设置AUTO_INCREMENT约束后的字段会生成唯一的ID,所以该字段也经常会设置成PK主键。

语法形式如下

CREATE TABLE table_name ( 属性名 数据类型 AUTO_INCREMENT, ...)

设置外键约束

外键约束保证多个表(通常为两个表)之间的参照完整性,即构建于两个表的两个字段之间的参照关系。

设置外键约束的两个表之间会具有父子关系,即子表中国某个字段的取值范围由父表所决定。

在具体设置FK约束时,设置FK约束的字段必须依赖于数据库中已经存在的父表的主键,同时外键可以为NULL。

语法形式如下

CREATE TABLE table_name ( 
属性名 数据类型, 
... 
CONSTRAINT 外键约束名 FOREIGN KEY(属性名【子表中外键的字段名】)
REFERENCES 表名(属性名【父表中设置主键约束的字段名】)
)

原创文章,作者:ZERO,如若转载,请注明出处:https://www.edu24.cn/course/mysql-introduction.html

Like (0)
Donate 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ZEROZERO
Previous 2020年7月3日
Next 2020年7月9日

相关推荐

  • CSS布局之圣杯与双飞翼布局

    所谓圣杯布局和双飞翼布局其实解决的问题是相同的,都是解决左右两栏固定宽度,中间部分自适应,其中某部分内容比其他内容高的时候,保证三者元素等高。他俩的区别就是:圣杯用padding。…

    2019年6月18日
    1.8K
  • JavaScript 事件委托详解

    基本概念 事件委托,通俗地来讲,就是把一个元素响应事件(click、keydown……)的函数委托到另一个元素; 一般来讲,会把一个或者一组元素的事件委托到…

    2021年3月8日
    1.0K
  • css晦涩难懂的点都在这啦

    CSS大家肯定都是会的但是每个人所撑握的情况都不一样,特别是已经工作几年的前辈(这里指的是我司)很多CSS玩法都不知道,可能他们已经习惯了用组件, 但是面试的时候又不可避免问,所以…

    2021年1月20日
    1.3K
  • Java自学之继承

    在面向对象的设计过程中,类是基本的逻辑单位。但是对于这些基本的逻辑单位需要考虑到重用的设计问题,所以在面向对象的设计里提供有继承,并利用这一特点实现类的可重用性定义。 类继承定义 …

    2020年12月3日
    1.3K
  • 一维数组结构数据转换树形结构数据JS方法

    在写小程序项目时,自定义了一个组织机构树形展示组件,后端接口返回的组织机构数据是一维数组。需要在前端转换成树形结构的数据,并且添加一些节点的树形,比如是否为叶子节点,节点是否展开等…

    2022年11月10日
    382
  • Java自学之类结构扩展

    面向对象中的核心组成是类与接口,在项目中会利用【包】进行一组相关类的管理,这样适合于程序代码的部分更新,也更加符合面向对象封装性的概念,同时合理地使用封装也可以方便地实现实例化对象…

    2020年12月10日
    1.2K
  • css布局基础总结

    前端css布局知识繁杂,实现方式多种多样。想写出高效、合理的布局,必须以深厚的css基础为前提。为了方便记忆和复习,将css布局要点记录如下。内容较多,应用方面说的不太详细,但都是…

    2018年9月13日
    2.2K
  • Spring Boot的常用注解

    未来的框架趋势是“约定大于配置”,代码的封装会更加严密。开发人员会将更多的精力放在代码的整体优化和业务逻辑上,所以注解式编程会被更加广泛地使用。那么什么是注解?Spring Boo…

    2024年8月29日
    298
  • flex布局详解

    往往在移动端开发过程中,弹性布局是非常实用的一种手段。往往你并不需要去反复的使用媒体查询的。整整的响应式布局是使界面能够自动的根据屏幕进行变化,做到完美的弹性布局,在必要的时候,去…

    2018年9月10日
    2.2K

发表回复

Please Login to Comment