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日

相关推荐

  • Spring Boot的常用注解

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

    2024年8月29日
    261
  • MyBatis之MyBatis-Generator标签配置及意义

    DTD 标签 <generatorConfiguration/>: 根标签,所有的配置都必须在该标签内配置;没有属性 <properties/>: 主要引用外部的pro…

    2019年12月27日
    1.7K
  • Webpack入门,CSS Modules

    CSS Modules是近年来比较流行的一种开发模式,其理念就是把CSS模块化,让CSS也拥有模块的特点,具体如下: 使用CSS Modules时不需要额外安装模块,只要开启css…

    2022年11月28日
    673
  • MySQL数据库入门之数据的操作知识点整理

    插入数据记录 插入一条完整数据记录 在上述语句中,参数table_name表示所要插入完整记录的表名,参数fieldn表示表中全部的字段名字,参数valuen表示所要插入的数值,最…

    2020年7月14日
    1.3K
  • Angular 4.x ngModel 双向绑定原理揭秘

    一直以来都没有去深入探究Angular,只是熟练运用。真要被问起来,很多关于angular的理论知识都回答不上来。感觉上学背书的能力已经丧失的差不多了。只能以这样的方式搜集整理出来。

    2019年7月2日
    1.8K
  • servlet学习之获取表单数据(IDEA2020.2篇)

    首先,创建一个servlet工程。 如果你不会用IDEA2020.2创建servlet工程,请打开下面链接浏览网站博文。 https://www.edu24.cn/course/j…

    2020年9月8日
    1.3K
  • Java自学之类与对象

    定义 类是由成员属性和方法组成。成员属性主要定义类的一个具体信息,实际上一个成员属性就是一个变量,而方法是一些操作的行为。类的定义基础语法如下。 一个类定义完成后并不能够被直接使用…

    2020年11月25日
    1.1K
  • css布局基础总结

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

    2018年9月13日
    2.2K
  • JavaScript中call、apply及bind的深度解析

    函数原型链中的 apply,call 和 bind 方法是 JavaScript 中相当重要的概念,与 this 关键字密切相关,相当一部分人对它们的理解还是比较浅显,所谓js基础…

    2019年8月5日
    1.5K
  • vue3.0项目如何配置路径别名

    vue更新到3.0以后,在项目中已经深度集成了webpack,使用vue create命令新建项目之后,已经没有webpack配置文件了,这对于像小编这样没有系统学习过前端的同学来…

    2020年8月22日
    3.9K

发表回复

Please Login to Comment