快速入门 MySQL

前言

欢迎你来阅读我的这篇文章,这是我浓缩了 《MySQL 必知必会》 上的内容所编写的一篇快速入门文章,注意在学习该文章的时候一定要搭配实践,不然的话单看是没有效果的,有时间我会给这篇文章加上实践的,如果访问量够大那么我这几天就加上

请动动你发财的手点点关注点点赞吧,谢谢了

数据类型

MySQL 中数据字段的类型对数据库的优化很重要,错误的数据类型会严重影响应用的功能和性能

数值类型

MySQL 支持所有标准SQL数值数据类型

除了BITBOLLEAN以外其他的数值类型都有有符号和无符号两种状态
默认都是有符号,如果不需要存储负值可以使用 UNSIGNED 关键字,这样可表示的数值增大一倍
有符号的数值类型可以表示正数和负数,而无符号的数值类型只能表示正数

数据类型有符号范围无符号范围说明
BIT位字段,1~64位
TINYINT-128~1270~255整数值
SMALLINT-32768~327670~65535整数值
MEDIUMINT-8388608~83886070~16777215整数值
INT 或 INTEGER-2147483648~21474836470~4294967295整数值
BIGINT-9223372036854775808~92233720368547758070~18446744073709551615整数值
REAL4字节的浮点值
FLOAT单精度浮点数
DOUBLE双精度浮点数
DEC 或 DECIMAL精度可变的浮点数
BOOL 或 BOOLEANTRUE 或 FLASETRUE 或 FLASE布尔标志

串类型

最常用的数据类型就是串类型,串类型有两种基本的类型,分别为定长串和变长串

定长串存储长度固定的字符串,长度是在创建表的时候指定的
变长串存储长度可变的字符串,有些变长串是完全变长,有些具有最大的定值长度无法超过定值

数据库处理定长串的速度比处理变长串的速度快得多

数据类型说明
CHAR1~255个字符的定长串,它的长度要在创建时指定,否则MySQL将假定为 CHAR(1)
VARCHAR长度可变,但是最多不超过255字节,如果在创建时指定为 VARCHAR(n) 则可以存储0到n个字符的变长串(n<=255)
TINYTEXT最大长度为 255B 的变长文本
MEDIUMTEXT最大长度为 16KB 的变长文本
TEXT最大长度为 64KB 的变长文本
LONGTEXT最大长度为 4GB 的变长文本

不管是何种类型的串类型,串值都必须在引号内(单双引号都可以,通常单引号更好)

如果数值是计算中使用的数值,则应该存储在数值数据类型中,如果是作为字符串使用,则应该保存在串数据类型列中

日期和时间类型

MySQL中使用特殊的类型来存储日期和时间

数据类型说明
DATE表示从 1000-01-01 ~ 9999-12-31 的日期,格式为 YYYY-MM-DD
TIME格式为 HH:MM:SS
DATETIMEDATE和TIME的组合 格式为 YYYY-MM-DD HH:MM:SS
TIMESTAMPDATE和TIME的组合,比DATETIME小一些,表示从 1970-01-01 00:00:01 ~ 2038-01-19 03:14:07 的时间,格式为 YYYY-MM-DD
YEAR用两位数字表示,范围是70(1970年)~69(2069年),用四位数字表示,范围是1910年到2155年

二进制数据类型

二进制数据类型可以存储任何数据,如图像、多媒体、压缩文件等等

数据类型最大长度
TINYBLOB255 Byte
BLOB64 KB
MEDIUMBLOB16 MB
LONGBLOB4 GB

小结

数据类型已经全部总结了,如果有错误或者有遗漏的可以在下方评论区提出来
表中数据类型的搭配对于表的性能有很大的影响,在设计表的时候应该慎重选择数据类型

数据库

创建数据库

在登录MySQL服务器之后可以使用CREATE DATABASE创建数据库

CREATE DATABASE 数据库名字;

如果数据库已经存在执行该语句将导致错误

选择数据库

最初登录到MySQL服务器之后没有数据库打开供我们使用,而在执行其他操作之前我们必须要选择一个数据库,此时我们可以使用 USE 语句选择数据库

USE 数据库名字;

执行成功将输出

Database changed

删除数据库

在MySQL中要删除已创建的数据库可以使用DROP DATABASE语句

-- 删除数据库
DROP DATABASE 数据库名字;
-- 如果数据库存在就删除
DROP DATABASE IF EXISTS 数据库名字;

IF EXISTS是一个可选的子句,表示如果数据库存在就删除,避免因为数据库不存在而产生错误

注意!在执行任何删除操作时一定要三思而后行,不要等到数据被删除后再追悔莫及

关于创建、更新、删除表的基本操作

创建表

MySQL中创建表有两种方法

  • 使用MySQL语句创建
  • 使用MySQL管理工具创建,但是其本质上还是MySQL语句
    我们这里使用MySQL语句CREATE TABLE创建表
  • 表的名字要跟在 CREATE TABLE 后面
  • 列的名字和定义要使用 “,” 分开
    示例
CREATE TABLE users
(
  user_id VARCHAR(10) NOT NULL,
  user_name VARCHAR(12) NOT NULL,
  user_email VARCHAR(50) NULL DEFAULT 'zjh_34@qq.com',
  user_age TINYINT UNSIGNED NULL,
  user_image MEDIUMBLOB NULL,
  user_create_date DATA NULL,
  PRIMARY KEY (user_id)
) ENGINE=InnoDB;
NULL 和 NOT NULL

为什么在数据类型后面还跟了NOT NULLNULL呢?
NOT NULL表示的意思是这个字段的值不能为NULL
NULL的意思相反,表示这个字段的值可以为NULL

默认值

user_email后面的DEFAULT 'zjh_34@qq.com'的意思是是什么呢?看到这个单词你应该就能猜出来了吧
不要自我怀疑,这个子句就是设置默认值的,这个子句设置了user_email的默认值为zjh_34@qq.com

主键

可以通过PRIMARY KEY语句设置主键PRIMARY KEY不只能设置一个主键,也可以设置多个主键,使用方式如下

PRIMARY KEY (字段名1,字段名2,字段名...)
数据库引擎

这个容我偷偷懒晚些写😁

更新表

更新表可以使用ALTER TABLE语句,按照常理来说我们的表在设计时应该考虑好,在设计好之后不应有大规模的改动
来,举个添加列的栗子给你看看

ALTER TABLE users
ADD user_city VARCHAR(40);

在这个栗子里我们给前面创建的users表添加了一个名为user_city的列
既然可以添加列,那么我们肯定也能删除列
删除我们刚才添加的列可以这样做

ALTER TABLE users
DROP COLUMN user_city;
注意!使用ALTER TABLE语句的时候要极为注意,如果增加了不需要的列可能会无法删除它们,如果删除了不应该删除的列,可能会丢失列中的所有数据

定义外键,晚些写

重命名表

重命名表可以使用RENAME TABLE语句
举个栗子

RENAME TABLE 表名 TO 新表名

也可以通过下面这种方式重命名多个表

RENAME TABLE 表名1 TO 新表名1,
表名2 TO 新表名2,
...;

删除表

删除表可以使用DROP TABLE语句,这个语句是删除整张表,并非它的内容,这个语句非常简单,看栗子吧

DROP TABLE 表名;

这个语句删除了一个表(如果这个表存在的话),删除表没有确认,不能撤销,在执行这条语句后将永久删除该表

小结

学习了创建、更新、重命名、删除表语句
CREATE TABLE用来创建新表
ALTER TABLE用来改变表列
RENAME TABLE用来重命名表
DROP TABLE用来删除表

数据

检索数据

最经常使用的检索数据的SQL语句就是SELECT语句了,在这里我将会讲一些常用的SELECT语句的用法

检索单个列

我们从一个简单的检索单列数据的SQL语句开始

SELECT user_name
FROM users;

这个SQL语句的意思是从users表中检索出名为user_name的列
输出如下

+-------------+
| user_name   |
+-------------+
| SLow        |
| Finish      |
| Do not back |
+-------------+
检索多个列

如果想要检索多个列的数据也是很简单的,请看栗子

SELECT user_name,user_email
FROM users;

这个栗子我们检索了user_nameuser_email这两列,列名之间用逗号(,)分隔,输出如下

+-------------+-----------------+
| user_name   | user_email      |
+-------------+-----------------+
| SLow        | zjh_345@qq.com  |
| Finish      | zjh_3456@qq.com |
| Do not back | zjh_34@qq.com   |
+-------------+-----------------+
检索所有列

我们如果想要检索所有的列的时候不必一个一个输入列名,可以使用在列名的位置使用通配符(*)来达到

SELECT *
FROM users;

输出如下

+---------+-------------+-----------------+----------+------------------------+------------------+
| user_id | user_name   | user_email      | user_age | user_image             | user_create_date |
+---------+-------------+-----------------+----------+------------------------+------------------+
| c34v32  | SLow        | zjh_345@qq.com  |       18 | NULL                   | NULL             |
| j34x54  | Finish      | zjh_3456@qq.com |       23 | NULL                   | NULL             |
| z34x67  | Do not back | zjh_34@qq.com   |       23 | NULL                   | NULL             |
+---------+-------------+-----------------+----------+------------------------+------------------+

过滤数据

过滤数据我们可以使用WHERE子句,先看栗子

SELECT *
FROM users
WHERE user_email = 'zjh_34@qq.com';

这个语句检索所有列,但是只返回user_email等于zjh_34@qq.com的行,输出如下

+---------+-------------+---------------+----------+------------------------+------------------+
| user_id | user_name   | user_email    | user_age | user_image             | user_create_date |
+---------+-------------+---------------+----------+------------------------+------------------+
| z34x67  | Do not back | zjh_34@qq.com |       23 | NULL                   | NULL             |
+---------+-------------+---------------+----------+------------------------+------------------+
WHERE子句的操作符
操作符说明
=等于
<>不等于
!=不等于
<小于
<=小于等于
>大于
>=大于等于
BETWEEN介于(在指定的两个值之间)
范围值检查

需要检查某个范围的值时,我们可以使用BETWEEN操作符,其语法与其他的操作符不同,因为它需要两个值
下面这个栗子说明如何使用BETWEEN操作符,它会检索年龄在18到27之间的所有用户

SELECT *
FROM users
WHERE user_age BETWEEN 18 AND 27;

在使用BETWEEN必须要指定两个值,检索范围的最小值和最大值,这两个值必须使用AND关键字分隔

空值检查

SELECT有一个特殊的WHERE子句可以用来检查值为NULL的列,其语法如下

SELECT *
FROM users
WHERE user_email IS NULL;

这条语句将返回没有邮箱地址的所有行

插入数据

INSERT是SQL中比较重要的语句,它的作用是插入(或添加)行到表中

插入单行数据

下面的栗子插入了新的一行到了表中

INSERT INTO users 
VALUES(
  'j34x54',
  'Finish',
  'zjh_3456@qq.com',
  23,
  NULL,
  NULL
);

这便向表中插入了新的一行,当然还有一种更安全的方法,请看栗子

INSERT INTO users(
user_id,
user_name,
user_email,
user_age,
user_image,
user_create_date
)
VALUES(
  'f34d34',
  'Echo.',
  'zjh_34531@qq.com',
  24,
  NULL,
  NULL
);

这个栗子完成了和前一个INSERT语句相同的工作,但是在表名的后面的括号里面明确的给出了列名,应为提供了列名所以VALUES必须以其指定的次序匹配指定的列名,它的有点事表的结构更改,此INSERT语句仍然能够正确工作

插入多行数据

INSERT可以插入一行到一个表中,但是如果想要插入多个行怎么办?
可以使用一种方法,那就是使用多条INSERT语句

INSERT INTO users(
user_id,
user_name,
user_email,
user_age,
user_image,
user_create_date)
VALUES(
  'f34d34',
  'Echo.',
  'zjh_34531@qq.com',
  24,
  NULL,
  NULL
);
INSERT INTO users(
user_id,
user_name,
user_email,
user_age,
user_image,
user_create_date)
VALUES(
  'j34x54',
  'Finish',
  'zjh_3456@qq.com',
  23,
  NULL,
  NULL
);

上一种方法看起来可能繁琐了些,你可以使用下面这种方法,请看栗子

INSERT INTO users(
user_id,
user_name,
user_email,
user_age,
user_image,
user_create_date
)
VALUES(
  'f34d34',
  'Echo.',
  'zjh_34531@qq.com',
  24,
  NULL,
  NULL
),
(
  'j34x54',
  'Finish',
  'zjh_3456@qq.com',
  23,
  NULL,
  NULL
);

虽然第二种方法比第一种简洁一点,但是第一种插入语句的速度比第二中插入语句的速度快

更新数据

更新(修改)表中的数据可以使用UPDATE语句

注意,在使用UPDATE的时候一定要注意细心,应为稍不注意可能就会更新(修改)表中的所有行

UPDATE很容易使用,来,上栗子!

UPDATE users
SET user_id = 'o11n4514'
WHERE user_id = 'c34v32';

UPDATE后面跟的是要更新(修改)的表的名字,在这个栗子中要更新的是user_idc34v32的用户的user_id使用SET子句将其设置成指定值
那么该如何修改多个列呢?还是看栗子

UPDATE users
SET user_name = 'Ethan',
  user_email = 'zjh3442@qq.com'
WHERE user_id = 'j34x54';

这个栗子中更新user_idj34x54user_emailuser_id

删除数据

从表中删除数据可以使用DELETE语句,看栗子

DELETE FROM users
WHERE user_id = 'z34x67';

DELETE FROM指定删除数据的表名,使用WHERE过滤要删除的行
那么该如何删除所有数据呢?
你可以在不删除表的情况下,删除表中所有的行。这意味着表结构、属性、索引将保持不变
在删除记录时要格外小心!因为您不能重来

DELETE FROM user;

结语

这篇MySQL学习笔记是我浓缩了我这几天学到的MySQL知识写出来了,当然还不是很完善,可能有些地方比较重要但是我漏写了,你可以在下面的评论区提出来,我补上,下次我的学校放月假了我会更新一篇SQL基础知识,在里面讲解一些SQL中的概念,比如什么是字段?什么是数据库?之类的。好了,这篇笔记到此结束,听一首歌吧

感兴趣的可以访问和收藏我的博客,蟹蟹了 博客地址

博客原文地址:https://zjhzzy.github.io/2024/04/17/MySQL-Study-notes/

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值