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(增删改查)操作,敬请期待!

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

相关推荐
一个没有本领的人22 分钟前
Ubuntu24.04挂载磁盘
开发语言·数据库·ubuntu
一名数据库爱好者1 小时前
OceanBase 闪回查询
数据库·oceanbase·dba
尘浮生2 小时前
Jav项目实战II基于微信小程序的助农扶贫的设计与实现(开发文档+数据库+源码)
java·开发语言·数据库·微信小程序·小程序·汽车·旅游
花姐夫Jun2 小时前
node.js学习笔记-Window下MongoDB数据库安装(二)
数据库·学习·mongodb·node.js
DarkAthena2 小时前
基于语法树的SQL自动改写工具开发系列(2)-使用PYTHON进行简单SQL改写的开发实战
数据库·python·sql
久恙5022 小时前
一文学会docker中搭建kali
运维·数据库·学习·网络安全·docker·容器
GOTXX3 小时前
【MySQL】ubantu 系统 MySQL的安装与免密码登录的配置
linux·数据库·mysql·adb·ubantu
旧故新长3 小时前
SQLite 和 MySQL语法区别
mysql·sqlite
jonyleek3 小时前
商业智能BI如何零编码对接低代码数据模型?
数据库·低代码·信息可视化·数据分析·数据可视化·软件需求
ac-er88884 小时前
ThinkPHP 模型如何更新数据
数据库·oracle·php