MySQL数据库与表的基本操作 + 表的基本CRUD(增删改查)操作

文章目录


前言

本人是一个普通程序猿!分享一点自己的见解,如果有错误的地方欢迎各位大佬莅临指导,如果你也对编程感兴趣的话,互关一下,以后互相学习,共同进步。这篇文章能够帮助到你的话,劳请大家点赞转发支持一下!


一、库的基本操作

显示当前所有数据库

sql 复制代码
SHOW DATABASES;

创建数据库

大写字母为语法关键字,[]为可选项即可写可不写,

sql 复制代码
CREATE DATABASE [IF NOT EXISTS] 库名  [CHARACTER SET 字符集名];

1️⃣IF NOT EXISTS 的作用是如果数据库种已经有使用这个库名的,就不创建(不会报错),没有则成功创建。
2️⃣CHARACTER SET 字符集名,使用你指定的字符集。(当我们创建数据库没有指定字符集时,系统使用默认字符集:utf8。MySQL的utf8编码不是真正的utf8,MySQL的utf8中没有包含某些复杂的中文字符。MySQL真正的utf8是使用utf8mb4,建议大家都使用utf8mb4)

语句1执行时,不存在名为csdn的数据库,创建了名为csdn并且指定字符集为utf8mb4的数据库,语句1执行成功。
语句2执行时,存在名为csdn的数据库,因此并没有再创建一个名为csdn的数据库,语句2执行成功。


使用数据库

sql 复制代码
USE 库名;

使用数据库也可以理解为选中数据库,先选中这个数据库,才能开始对这个数据库中的数据进行操作。


删除数据库

sql 复制代码
DROP DATABASE [IF EXISTS] 库名;

IF EXISTS 的作用是如果数据库中存在这个库名的,就删除,没有则不删除(不会报错)。

语句1执行成功,成功删除了csdn这个数据库。
语句2执行成功,此时并不存在csdn这个数据库,就不删除了。
语句3执行失败并报错,语句3中没有 IF EXISTS 关键字,因此如果不存在要删除的库就会报错。

删库是一个高危操作,如果是在公司中,删库操作很容易带来许多不可逆的巨大损失,因此在删库之前要深思熟虑,三思而后行。


二、表的基本操作

  • 表是存在于数据库中,因此一定要先 选中一个数据库(USE 库名;) ,然后在这个数据库里操作表。

创建表

sql 复制代码
CREATE TABLE 表名 (字段名 字段类型,字段名 字段类型,...);

()中是你指定表中存在的字段名,以及字段类型。
字段名在前字段类型在后,中间用空格隔开;各字段之间用 ' , ' 隔开


查看库中所有表

sql 复制代码
SHOW TABLES;

查看表结构

sql 复制代码
DESC 表名;

删除表

sql 复制代码
DROP TABLE [IF EXISTS] 表名;
  • IF EXISTS 的作用是如果库中存在这个表,就删除,没有则不删除(不会报错)。

语句1执行成功,删除了student表
语句2执行成功,没有student表,不进行删除。

删表也是一个高危操作,如果是在公司中,删表操作也很容易带来许多不可逆的巨大损失,因此在删表之前要深思熟虑,三思而后行。


三、表的增删改查(基础)

如果不指定字符集,mysql默认字符集为utf8,但是这个utf8中不包含复杂的中文字符;此时当插入文字时,就会报错。

咱们针对student这个表进行增删改查操作。

student表有三个字段

字段 类型
name(名字) VARCHAR(size)
age(年龄) INT
number(学号) INT

新增数据(Create)

全列插入

sql 复制代码
INSERT INTO 表名 VALUES (数据,数据,...);
  • 全列插入,也可以理解为全字段插入数据,即 给每个字段都要输入数据,且数量必须和定义表的列的数量及顺序一致

单行数据插入

多行数据插入
每行数据之间用 ' , '隔开

以下sql语句同时插入了三行数据

指定列插入

sql 复制代码
INSERT INTO 表名 (字段名,字段名,...) VALUES (数据,数据,...);
  • 指定列插入,也可以理解为指定一些字段插入数据,即 给指定的字段输入数据,且数量必须和指定列的数量及顺序一致

单行数据插入

多行数据插入
每行数据之间用 ' , '隔开

以下sql语句同时插入了三行数据


查询数据(Retrieve)

  • 以下多种查询,可以综合应用达到理想查询效果。

全列查询

sql 复制代码
SELECT * FROM 表名;
  • 全列查询即,将每一行数据的每个字段都查询出来。

通常情况下不建议使用 * 进行全列查询

全列查询 * 要慎用

1️⃣全列查询,在表中数据量级很大时,那么这一个查询操作需要传输的数据量就很大,就可能会影响整个程序的性能,甚至是程序安全。

2️⃣全列查询可能会影响到 索引 的使用。


指定列查询

sql 复制代码
SELECT 字段名,字段名,... FROM 表名;
  • 指定列查询即,将每一行数据的指定字段查询出来。

指定列的顺序不需要按定义表的顺序来


查询字段为表达式

sql 复制代码
SELECT 表达式,字段名,... FROM 表名;
  • 查询字段为表达式即,将表达式作为查询字段,mysql会查询出表达式中需要的数据并完成表达式的计算。

表达式不包含字段

表达式包含一个字段

表达式包含多个字段

  • NULL + 任何类型的数据 = NULL

指定列的别名

sql 复制代码
SELECT 字段名 [AS] 别名,字段名 [AS] 别名,字段名, ... FROM 表名;
  • 为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称。

一条查询语句中,可以同时存在取别名的字段与不取别名的字段。


去重:DISTINCT

  • 使用DISTINCT关键字对某列数据进行去重
sql 复制代码
SELECT DISTINCT 字段,[字段,...] FROM 表名;

普通查询

去重查询




以上三条去重语句的查询,有两个要 注意 的点

1️⃣ DISTINCT要在所有字段的最前面

2️⃣ 如果DISTINCT关键字后面有多个字段时,则会对多个字段进行综合去重,只有多个字段值都对应相等的才会被去重


排序:ORDER BY

  • 根据某个字段的大小对返回的查询结果的顺序进行排序。
sql 复制代码
SELECT ... FROM 表名 ORDER BY 字段名 [ASC|DESC];

ASC 为升序(从小到大),默认为 ASC。
DESC 为降序(从大到小)。
没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序。
NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面。

普通排序

使用表达式及别名排序

对多个字段进行排序
对多个字段进行排序时,排序优先级随书写顺序。


条件查询:WHERE

比较运算符

运算符 说明
>, >=, <, <= 大于,大于等于,小于,小于等于
= 等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=> 等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE
!=或<> 不等于
BETWEEN a0 AND a1 范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE
IN (option, ...) 如果是 option 中的任意一个,返回 TRUE
IS NULL 是 NULL
IS NOT NULL 不是 NULL
LIKE 模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符

逻辑运算符

运算符 说明
AND 多个条件必须都为 TRUE,结果才是 TRUE
OR 任意一个条件为 TRUE, 结果为 TRUE
NOT 逻辑取反(TRUE为 FALSE,FALSE为TRUE)

注意
WHERE条件可以使用表达式,但不能使用别名。

AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分

sql 复制代码
SELECT ... FROM 表名 WHERE BOOLEAN表达式

使用例子:


分页查询:LIMIT

sql 复制代码
SELECT ... FROM 表名 [...] LIMIT n [OFFSET s];

**上述语句表示,只查询n条数据,从第s条数据开始查询,(第一个数据为第0条)。

\]中可有可无,如果无则默认从第0条数据开始查询**


修改数据(Update)

sql 复制代码
UPDATE 表名 SET 字段 = 修改后数据 [其他查询语句WHERE等];

实现效果:将无名氏的年龄修改为30。


删除数据(Delete)

删除某行数据

sql 复制代码
DELETE FROM 表名 where等查询条件;


删除表中所有数据

删除表中数据后,表依然存在,只是其中没有数据了。


总结

以上就是今天要讲的内容,本文分享了数据库,表的基本操作,以及对表中数据的CRUD(增删改查)操作,后续还会带来对表中数据的进阶CRUD(增删改查)操作,敬请期待!

路漫漫不止修身,也养性。

相关推荐
nongcunqq1 小时前
abap 操作 excel
java·数据库·excel
rain bye bye1 小时前
calibre LVS 跑不起来 就将setup 的LVS Option connect下的 connect all nets by name 打开。
服务器·数据库·lvs
冻咸鱼2 小时前
MySQL的配置
mysql·配置
阿里云大数据AI技术3 小时前
云栖实录|MaxCompute全新升级:AI时代的原生数据仓库
大数据·数据库·云原生
不剪发的Tony老师3 小时前
Valentina Studio:一款跨平台的数据库管理工具
数据库·sql
weixin_307779133 小时前
在 Microsoft Azure 上部署 ClickHouse 数据仓库:托管服务与自行部署的全面指南
开发语言·数据库·数据仓库·云计算·azure
六元七角八分4 小时前
pom.xml
xml·数据库
虚行4 小时前
Mysql 数据同步中间件 对比
数据库·mysql·中间件
奥尔特星云大使4 小时前
mysql读写分离中间件Atlas安装部署及使用
数据库·mysql·中间件·读写分离·atlas
牛马baby4 小时前
【mysql】in 用到索引了吗?
数据库·mysql·in