文章目录
- 一:简介
- 二:MySQL的数据类型
- (一)整数类型
- (二)二浮点数类型和定点数类型
- (三)日期与时间类型
- (四)字符串类型
- 1、CHAR类型和VACHAR类型
- 2、TEXT类型
- 3、ENUM类型
- 4、SET类型
- 5、二进制类型
- 三:MySQL的使用
- (一)登录及退出
- (二)库操作SQL格式
- (三)表操作SQL格式
- 1、创建表
- (1)设置表的主键
- (2)设置表的外键
- (3)设置表的非空约束
- (4)设置表的唯一性约束
- (5)设置表的属性值自增
- (6)设置表的属性的默认值
- 2、查看表的结构
- 3、修改表
- (1)修改表名
- (2)修改字段的数据类型
- (3)修改字段名
- (4)增加字段
- (5)删除字段
- (6)修改字段的排列位置
- (7)更改表的存储引擎
- (8)删除表的外键约束
- 4、删除表
- 5、查询表
- (1)查询所有字段
- (2)查询指定字段
- (3)查询指定记录
- (4)带in的关键字查询
- (5)带between and的范围查询
- (6)带like的字符匹配查询
- (7)查询空值
- (8)带and的多条件查询
- (9)带or的多条件查询
- (10)查询结果不重复
- (11)查询结果进行排序
- (12)分组查询
- (12)用limit限制查询结果的数量
- (13)使用集合函数查询
- (14)连接查询
- (15)子查询
- ①带in关键字的子查询
- ②带比较运算符的子查询
- ③带exists关键字的子查询
- ④带any关键字的子查询
- ⑤带all关键字的子查询
- (16)合并查询
- (17)为表和字段取别名
- ①为表取别名
- ②为字段取别名
- (18)使用正则表达式查询
- ①查询以特定字符或字符串开头的记录
- ②查询以特定字符或字符串结尾的记录
- ③用符号“.”来替代字符串中的任意一个字符
- ④匹配指定字符中的任意一个
- ⑤匹配指定字符以外的字符
- ⑥匹配指定字符串
- ⑦使用“ * ”和“ + ”来匹配多个字符
- ⑧使用{M}或者{M,N}来指定字符串连续出现的次数
- 6、插入数据
- (1)为表的所有字段插入数据
- (2)为表的指定字段插入数据
- (3)同时插入多条数据
- (4)将查询结果插入到表中
- 7、更新数据
- 8、删除数据
- 四:MySQL运算符
- (一)算术运算符
- (二)逻辑运算符
- (三)比较运算符
一:简介
- 数据:
在计算机系统中,各种字母、数字符号的组合、语音、图形、图像等统称为数据,数据经过加工后就成为信息。 - 数据库:
数据库(DataBase,DB)是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。简单来说,数据库就是数据的仓库,用于存储数据。主要作用是,便于对数据的存储和管理 重复的使用。
数据库的发展史:
- 计算机:文件系统将数据全部存储在文件(磁盘)里,成为我们今天的数据库。
- MySQL所管理的数据库:把数据存在文件当中。
- 数据库管理系统:
数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。
MySQL / SQL server就是我们常用的数据库管理系统,主要作用是,用来管理数据库中的数据。 - 数据库系统:
数据库系统(Database Systems),是由数据库及其管理软件组成的系统。简单来说,就是:数据库 + 数据库管理系统
MySQL是怎么管理数据的: 主要是通过指定关系 ,制定相关的表。
- 关系型数据库管理方式:使用二维表进行存储。
- 关系型数据库的特点:
- 安全(因为存储在磁盘中,不会说突然断电数据就没有了)
- 容易理解(建立在关系模型上)
- 但不节省空间(因为建立在关系模型上,就要遵循某些规则,好比数据中某字段值即使为空仍要分配空间)
- 二维表:
- 行 → 元组;
- 列 → 属性;
- 阈值→ 属性的取值范围;
- 关系 → 二维表维护的数据;
二:MySQL的数据类型
数据类型:其中数据类型是数据的一种属性,其可以决定数据的存储格式、有效范围和相应的限制。
MySQL的数据类型包括整数类型、浮点数类型、日期和时间类型、字符串类型和二进制数据类型。
(一)整数类型
整数类型是数据库中最基本的数据类型。标准SQL中支持(INTEGER)和(SMALLINT)这两种整数类型。MySQL数据库除了支持这两种类型以外,还扩展支持了(TINYINT)、(MEDIUMINT)和(BIGINT)。他们之间的相关数据比较如下图所示:
MySQL支持数据类型的名称后面指定该类型的显示宽度。其基本形式如下:
数据类型(显示宽度)
例如:tinyint(4)、smallint(6)、mediumint(9)、int(11)、bigint(20)等
整数类型还有一个AUTO_INCREMENT属性。该属性可以使字段成为自增字段。具有该属性的字段,在插入新的记录时,该字段的值都会在前一条记录的基础上加1。
(二)二浮点数类型和定点数类型
MySQL中使用浮点数类型和定点数类型来表示小数。浮点数类型包括单精度浮点数(FLOAT型)和双精度浮点数(DOUBLE型)。定点数类型就是(DECIMAL型)。他们之间的相关数据比较如下图所示:
从上面表中可以看到,DECIMAL型的取值范围与DOUBLE相同。但是,DECIMAL的有效取值范围由M和D决定。而且,DECIMAL型的字节数是M+2。也就是说,定点数的存储空间是根据其精度决定的。在MySQL中,定点数以字符串形式存储。因此,其精度比浮点数要高。而且,浮点数会出现误差,这是浮点数一直存在的缺陷。如果要对数据的精度要求比较高,还是选择定点数(DECIMAL)比较安全。
- MySQL中可以指定浮点数和定点数的精度。其基本形式如下:
数据类型(M,D)
(三)日期与时间类型
日期与时间类型是为了方便在数据库中存储日期和时间而设计的。MySQL有多种表示日期和时间的数据类型。其中,(YEAR)类型表示时间;(DATE)类型表示日期;(TIME)类型表示时间;(DATETIME)和(TIMESTAMP)表示日期和时间。他们之间的相关数据比较如下图所示:
从上表中可以看到,每种日期与时间类型都有一个有效范围。如果插入的值超过了这个范围,系统会报错,并将零值插入到数据库中。可以使用CURRENT_TIME和NOW()来转换为当前系统日期和时间。
(四)字符串类型
字符串类型是在数据库中存储字符串的数据类型。字符串类型包括CHAR、VARCHAR、BLOB、TEXT、ENUM和SET。
1、CHAR类型和VACHAR类型
- CHAR类型和VARCHAR类型都是在创建表时指定了最大长度,其基本形式如下:
字符串类型(M)
。其两者的区别为:
- CHAR类型的长度是固定的,在创建表的时候就指定了。其长度可以是0~255的任意值。例如,CHAR(100)就是指定CHAR类型的长度为100。
- VARCHAR类型的长度是可变的,在创建表时指定了最大长度。定义时,其最大值可以取0~65535之间的任意值。指定VARCHAR类型的最大值以后,其长度可以在0到最大长度之间。例如,VARCHAR(100)的最大长度是100。但是,不是每条记录都要占用100个字节。而是在这个最大值范围内,使用多少分配多少。 VARCHAR类型实际占用的空间为字符串的实际长度加1。这样,即可有效节约系统的空间。
- CHAR类型和VARCHAR类型的选取原则:尽可能选择小的,选择动态变化的;但是在数据量已知的情况下选择char, 因为不用计算;char(int) 20 这个数据类型所占的存储空间就确定了;而varchar(int) 20 存储空间在1 ~ 20 之间变换;多了一步计算的环节,当你把一个字符串存进去的时候,会先进行计算占用多少个字节,然后再去开辟空间。
2、TEXT类型
TEXT类型是一种特殊的字符串类型。TEXT只能保存字符数据,如新闻的内容等。TEXT类型包括TINYTEXT、TEXT、MEDIUMYEXT和LONGTEXT。他们之间的相关数据比较如下图所示:
3、ENUM类型
ENUM类型又称为枚举类型。在创建表时,ENUM类型的取值范围就以列表的形式指定了。其基本形式如下:属性名 ENUM('值1','值2',...,'值n')
其中,属性名参数指字段的名称;“值n”参数表示列表中的第n个值,这些值末尾的空格将会被系统直接删除。ENUM类型的值只能取列表中的一个元素。其取值列表中最多能有65535个值。列表中的每一个值都有一个顺序排列的编号,MySQL中存入的是这个编号,而不是列表中的值。
4、SET类型
在创建表时,SET类型的取值范围就以列表的形式指定了。其基本形式如下:属性名 SET('值1','值2',...,'值n')
其中,属性名参数指字段的名称;“值n”参数表示列表中的第n个值,这些值末尾的空格将会被系统直接删除。其基本形式与ENUM类型一样。SET类型的值可以取列表中的一个元素或者多个元素的组合。取多个元素时,不同元素之间用逗号隔开。SET类型的值最多只能是有64个元素构成的组合。
5、二进制类型
二进制类型是在数据库中存储二进制数据的数据类型。二进制类型包括BINARY、VARBINARY、BIT、TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。他们之间的相关数据的对比如下图所示:
其中BLOB类型是一种特殊的二进制类型。BLOB类型与TEXT类型很类似。不同点在于BLOB类型用于存储二进制数据,BLOB类型数据是根据其二进制编码进行比较和排序。而TEXT类型是文本模拟进行比较和排序的。BLOB类型主要用来存储图片、PDF文档等二进制文件。通常情况下,可以将图片、PDF文档都可以存储在文件系统中,然后在数据库中存储这些文件的路径。这种方式存储比直接存储在数据库中简单,但是访问速度比存储在数据库中慢。
三:MySQL的使用
操作数据库:SQL语句
SQL 语句主要可以划分为以下 3 个类别:
- DDL(Data Definition Languages)语句:
数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter等。 - DML(Data Manipulation Language)语句:
数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字主要包括 insert、delete、update 和select 等。 - DCL(Data Control Language)语句:
数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括 grant、revoke 等。
(一)登录及退出
- 连接前服务端必须要启动
- 登录:
mysql -u XXX -p XXX
mysql:代表客户端命令
-u 后面跟用户名(user:)
-p 后面跟用户密码 - 退出用户端登录: exit
(二)库操作SQL格式
- 创建数据库
create database database_name;
create database if not exists database_name; - 查看数据库
show databases; - 使用数据库
use database_name;
use school;
如果不使用这条sql,在操作表的时候必须
使用数据库名.表名,否则将无法操作表。 - 查看数据库下存在表
show tables; - 删除数据库
drop database database_name;
DROP database IF EXISTS database_name;
(三)表操作SQL格式
1、创建表
create table table_name(
属性名1 数据类型 [完整性约束],
属性名2 数据类型 [完整性约束],
属性名3 数据类型 [完整性约束],
);
create table if not exists table_name;
表名可以用数据库名.表名表示
完整性约束条件
(1)设置表的主键
- 单字段
- 多字段
(2)设置表的外键
(3)设置表的非空约束
(4)设置表的唯一性约束
(5)设置表的属性值自增
(6)设置表的属性的默认值
2、查看表的结构
- 1、
desc table_name; 查看表内的值
- 2、
show create table table_name; 查看创建表时的完整语句
3、修改表
(1)修改表名
(2)修改字段的数据类型
(3)修改字段名
(4)增加字段
(5)删除字段
(6)修改字段的排列位置
(7)更改表的存储引擎
(8)删除表的外键约束
4、删除表
- 1、删除没有被关联的普通表
- 2、删除被其他表关联的父表
最简单直接的办法就是,先删除子表,再删除父表。但是这样子可能会影响其他数据;另一种办法就是,先删除子表的外键约束,然后再删除父表。
5、查询表
- select的基本语法形式如下:
(1)查询所有字段
- 列出所有字段
- 使用 " * " 查询所有字段
(2)查询指定字段
(3)查询指定记录
(4)带in的关键字查询
(5)带between and的范围查询
(6)带like的字符匹配查询
示例:select * from Student where Sname like ‘%n%’;
(7)查询空值
示例:select * from Student where Sname is not null;
(8)带and的多条件查询
(9)带or的多条件查询
(10)查询结果不重复
(11)查询结果进行排序
(12)分组查询
WITH ROLLUP 关键字会在所有记录的最后加上一条记录,该记录是上面所有记录的总和。
(12)用limit限制查询结果的数量
2.
(13)使用集合函数查询
(14)连接查询
1.内连接查询
2.外连接查询
3.复合条件查询
(15)子查询
①带in关键字的子查询
②带比较运算符的子查询
③带exists关键字的子查询
④带any关键字的子查询
⑤带all关键字的子查询
(16)合并查询
(17)为表和字段取别名
①为表取别名
②为字段取别名
(18)使用正则表达式查询
①查询以特定字符或字符串开头的记录
②查询以特定字符或字符串结尾的记录
③用符号“.”来替代字符串中的任意一个字符
④匹配指定字符中的任意一个
⑤匹配指定字符以外的字符
⑥匹配指定字符串
⑦使用“ * ”和“ + ”来匹配多个字符
⑧使用{M}或者{M,N}来指定字符串连续出现的次数
6、插入数据
(1)为表的所有字段插入数据
(2)为表的指定字段插入数据
(3)同时插入多条数据
(4)将查询结果插入到表中
7、更新数据
8、删除数据
四:MySQL运算符
MySQL的运算符和Java语言很多运算符的含义是一样的,但也有区别,运算符多用在SQL语句当中,对SQL查询做各种条件过滤的。
(一)算术运算符
(二)逻辑运算符
NOT逻辑非 AND逻辑与 OR逻辑或
(三)比较运算符