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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ZEROZERO
上一篇 2020年7月3日
下一篇 2020年7月9日

相关推荐

  • MyBatis配置之typeHandler类型处理器

    typeHandler类型处理器作用 MyBatis在预处理语句(PreparedStatement)中设置一个参数时,或者从结果集(ResultSet)中取出一个值时,都会用注册…

    2022年4月20日
    1.2K
  • servlet学习之获取表单数据(IDEA2020.2篇)

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

    2020年9月8日
    1.5K
  • Java自学之泛型

    在Java语言中,为了方便接收参数类型的统一,提供了核心类Object,利用此类对象可以接收所有类型的数据(包括基本数据类型和引用数据类型)。但是由于其所描述的数据范围过大,所以在…

    2020年12月8日
    1.3K
  • 日常开发 26 个常见的 JavaScript 代码优化方案

    1、NULL、Undefined、”【空】检查 我们在创建新变量赋予一个存在的变量值的时候,并不希望赋予null或undefined,我们可以采用以下简洁的赋值方式。 …

    2021年2月22日
    1.3K
  • 网页布局之三栏网页宽度自适应布局

    在工作中经常遇到网页布局错乱的问题,往往引发的这种问题都是因为不同设备不同分辨率而导致。归根结底,是因为前端工程师经验不足,代码写得不够完好。以下是我总结及从网络搜集的一些网页布局…

    2018年10月8日
    3.0K
  • 如何使用IDEA2020.2新建servlet工程

    最近自学java时,发现IDEA更新到2020.2版本时,在新建工程时,有了明显的改动。由于小编刚学到servlet,IDEA这一突然间的改动,导致小编不会新建servlet工程了…

    2020年8月17日
    6.0K
  • 初识Spring Boot

    什么是Spring Boot Spring Boot是由Pivotal Software公司于2013年研发的全新Java开发框架。其设计目的是用来简化新Spring应用的初始搭建…

    2024年6月16日
    493
  • Webpack入门,预处理器

    一个Web工程通常会包含HTML、JS、CSS、图片、字体等多种类型的静态资源,且这些资源之间都存在着某种联系。对于Webpack来说,所有这些静态资源都是模块,开发者可以像加载一…

    2022年11月21日
    692
  • JAVA学习路线之夯实基础

    第一章 开发环境 JDK(Java SE Development Kit),Java标准版开发包,提供编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行环…

    2020年1月14日
    1.7K
  • MySQL数据库入门之数据的操作知识点整理

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

    2020年7月14日
    1.5K

发表回复

登录后才能评论