首页 > 数据库 >MySQL基础知识分享(一)

MySQL基础知识分享(一)

时间:2024-07-26 22:09:55浏览次数:14  
标签:bo truncate author MySQL 基础知识 表名 TABLE 分享 id

写在前面

大家好,不知道前面的20题大家写的怎么样,前面分享的20题是SQL中查询的基础题型,这部分被称为DQL部分,是每个学习MySQL必须要学会的部分,下面就让我来介绍MySQL中的其他部分。

回顾DQL部分

先介绍一下sql语句的语法和执行顺序(序号代表顺序由1~9):

select 查询列表         (7)
from 表名              (1)
[
join type join 表2     (2)
on 连接条件。           (3)
where 筛选条件          (4)
group by 分组字段       (5)
having 分组后的筛选     (6)
order by 排序的字段     (8)
]
limit [offset] ,size;  (9)
其中:
select: 指定要查询的列或表达式,用于检索数据。
from: 指定要查询的表名,表示数据来自哪个表。
join: 将两个或多个表连接起来进行查询,有不同类型的连接(如内连接、左连接、右连接等)。
on: 指定连接条件,即指定两个表如何关联。
where: 筛选条件,用于过滤数据,只返回满足条件的行。
group by: 按指定列对结果集进行分组,通常与聚合函数一起使用(如 SUM、COUNT)。
having: 对分组后的结果应用筛选条件,过滤分组后的结果集。
order by: 指定结果集的排序方式,可以是升序(ASC)或降序(DESC)。
limit: 限制查询返回的行数,常与 offset 一起使用,表示从第几行开始取数据,取多少行。
offset: 要显示条目的起始索引(起始索引从0开始)。
size: 要显示的条目个数。

当你在编写 SQL 查询时,通常会使用这些来获取想要的数据,是MySQL中DQL的基本语法,要想熟练掌握它,需要不断通过sql习题来增强记忆,学会分析问题的思路,最后就能快速地实现需求。

DML(数据操作语言)部分

以下是数据库操作部分的语法及其示例:

插入数据:

## 方式一:insert into 表名 values(,,) ;
# 示例 :
INSERT INTO beauty
VALUES (17,'关晓彤','女',NULL,'18788888888',NULL,NULL);
## 方式二:insert into 表名 set 1,2,3;
# 示例 :
INSERT INTO beauty
SET id=18,name='张静怡',phone='19088888888';

更新数据:

## 单表更新:
update  表名  set xx=xx ;
# 示例 :
UPDATE boys SET boyName='李晨',userCP=50
WHERE id = 3;
## 多表更新:
# (92规范)示例 :
UPDATE boys bo,beauty b 
SET b.boyfriend_id = 3
WHERE bo.id = b.boyfriend_id 
AND bo.id IS NULL;
# (99规范)示例 :
UPDATE boys bo 
RIGHT JOIN beauty b 
ON bo.id = b.boyfriend_id 
SET b.boyfriend_id = 3
WHERE bo.id IS NULL;

删除数据:

## 单表删除:
delete [from](单表加上,多表放表名后面)表名 where 筛选条件;
# 示例 :
DELETE FROM beauty WHERE phone LIKE '19%';
## 多表删除:
# 方式一:使用delete
DELETE b 
FROM beauty b 
INNER JOIN boys bo ON b.boyfriend_id = bo.id
WHERE bo.boyName = '汪峰';
delete b
from beauty b , boys bo
where b.boyfriend_id = bo.id 
and bo.boyName = '汪峰';
# 方式二:使用truncate
truncate  table 表名
TRUNCATE TABLE boys WHERE userCP > 100; -- 报错,truncate只能用于截断或者说是清空表。
TRUNCATE TABLE boys;      相当于清空表

delete和truncate对比

(1)delete可以加where条件,truncate不能加。
(2)truncate删除,效率高一点。
(3)加入要删除的表中有自增长列,如果用delete删除后,再插入数据,自增长列的值从断点开始,而truncate删除后,再插入数据自增长列的值从1开始。
(4)truncate删除没有返回值,delete删除有返回值。
(5)truncate删除不能回滚,delete删除可以回滚。

DDL(数据定义语言)部分

以下是数据库定义部分的语法及其示例:

创建 create

#库:
DROP DATABASE IF EXISTS books;
CREATE DATABASE  [IF NOT EXISTS]  books;
#表:
DROP TABLE IF EXISTS books;
CREATE TABLE [IF NOT EXISTS]  books(
         id INT, 
	bName VARCHAR(20)
);

修改 alter

# 库:
RENAME DATABASE books TO 新库名;   -- 一般不修改
# 更改库的字符集
ALTER DATABASE books CHARACTER SET 'utf8';
# 表:
# 语法:
alter table 表名 add | drop | modify | change  column 列名 [列类型 约束];
add(加字段):ALTER TABLE author ADD COLUMN age INT;
drop(删字段):ALTER TABLE author DROP COLUMN age;
modify(修改字段类型):ALTER TABLE book MODIFY COLUMN pubdate TIMESTAMP;
change(修改列名):ALTER TABLE book CHANGE COLUMN publishDate pubDate DATETIME;
如果想修改表名:ALTER TABLE author RENAME TO book_author;
添加外键:ALTER TABLE table_name ADD FOREIGN KEY (column_name) REFERENCES other_table(column_name)

删除 drop

#库:
DROP DATABASE [IF EXISTS] books;
#表:
DROP TABLE [IF EXISTS] book_author;

表的复制

# 方式一: 使用like复制表结构  
CREATE TABLE 表名 LIKE author;
# 方式二: 复制结构和数据 
CREATE TABLE 表名 SELECT * FROM author;
# 使用where 0和 where 1 来实现:
CREATE TABLE 表名
SELECT id,au_name 
FROM author 
WHERE 0;  (仅仅复制表结构即字段)
CREATE TABLE 表名
SELECT id,au_name 
FROM author 
WHERE 1;      (结构加数据)      

常见数据类型

整型:         int           bigint
小数定点数:   DECIMAL类型    NUMERIC类型  
小数浮点数:    float          double
字符型较短的文本:char       varchar
字符型较长的文本:text       blob(较长的二进制数据)
日期型:         date        datetime      timestamp          
在创表时不确定的字段类型使用varchar(255)

好了,今天就先介绍这么多,以后每天还会分享更多的大数据技术基础知识!
最后附上这部分思维导图,以便大家记忆。
DML部分:

DDL部分:

标签:bo,truncate,author,MySQL,基础知识,表名,TABLE,分享,id
From: https://www.cnblogs.com/cjybigdatablog/p/18326252

相关文章

  • Ubuntu24.04 安装MySQL8.0.36 并配置Navicat远程连接
    1.更新系统和软件源sudoaptupdate&&sudoaptupgrade2.安装mysqlsudoaptinstallmysql-server#也可以指定版本如sudoaptinstallmysql-server-8.0.363.查看是否安装成功mysql-V4.启动服务#启动服务sudoservicemysqlstartsudoservicemysqlstop#......
  • python和mysql数据库
    pyhton和mysql数据库1.非查询:frompymysqlimportConnection#导入数据库模块pymysql以及Connection对象conn=Connection(#连接数据库  host='127.0.0.1',#ip地址或者是主机名  port=3306,#端口号  user='root',  password='20040130', ) cursor=c......
  • MySQL笔记3——高级数据查询语句DQL
    多表联查多表联查可以通过连接运算实现,即将多张表通过主外键关系关联在一起进行查询。下图提供了多表联查时用到的数据库表之间的关系。等值查询和非等值查询非等值查询:SELECT*FROM表1,表2等值查询:SELECT*FROM表1,表2WHERE表1.字段1=表2.字段2...其中:与单表查......
  • MySQL数据结构和索引
    一、MySQL数据结构InnoDB引擎MySQL默认引擎是InnoDB引擎,这个引擎的主要特点是支持事务和行锁,数据结构2.1二叉树(二叉查找树)二叉树是一种特殊的树,二叉树中每个节点的度都不能大于2,就是说每个节点最多只能有左右两个子节点当我们像二叉查找树储存数据的时候,是安装从大到小(或......
  • uniapp(安卓苹果app端) - 微信小程序分享提示报错“由于不支持的分享类型无法分享到微
    问题说明在uni-app(手机app端)安卓Android、苹果ios系统中,解决分享微信小程序时,页面提示:由于不支持的分享类型无法分享到微信|由于应用和小程序未绑定在同意微信开放平台账号,无法分享到微信,uniApp开发App分享微信时出现无法分享且报错提示、分享不可用、微信appid、配置......
  • MySQL第一阶段:多表查询、事务
            继续我的MySQL之旅,继续上篇的DDL、DML、DQL、以及一些约束,该到了多表查询和事务的学习总结,以及相关的案例实现,为未来的复习以及深入的理解做好知识储备。目录多表查询连接查询内连接外连接子查询事务 事务简介事务操作事务四大特征多表查询多......
  • MySQL索引、事务(数据库管理与高可用)
    一、索引的概念索引:排序的列表,对数据进行快速的查询;针对不同的产品需求,或者不同的数据库结构,会创建不同的索引;1:普通索引(默认索引)2:唯一索引(可以多个)3:主键索引(只能一个)4:组合索引(最左查询)5:全文索引oracle:B树索引将表一份为二进行查询;701--3536--701--1718--35先把......
  • 【MySQL进阶之路 | 高级篇】表级锁之S锁,X锁,意向锁
    1.从数据操作的粒度划分:表级锁,页级锁,行锁为了尽可能提高数据库的并发度,每次锁定的数据范围越小越好,理论上每次只锁定当前操作的数据的方案会得到最大的并发度,但是管理锁是很耗资源的事情(涉及获取、检查、释放锁等动作)。因此数据库系统需要在高并发响应和系统性能两方面进行......
  • 【MySQL进阶之路 | 高级篇】行锁之记录锁和间隙锁
    1.InnoDB的行锁行锁(rowlock)也称为记录锁。顾名思义,就是锁住某一行(某个记录row)。需要注意的是,MySQL服务层并没有行锁机制,行级锁只在存储引擎层实现。优点:锁定力度小,发生锁冲突概率低,可以实现的并发度高。缺点:对于锁的开销比较大,加锁会比较慢,容易出现死锁的情况。InnoDB与M......
  • MySQL 学习笔记 进阶(索引 下)
    索引 索引-分类 在InnoDB中存储引擎中,根据索引的存储形式,又可以分为以下几种: 聚集索引选取规则:如果存在主键,主键索引就是聚集索引。如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引。如果表没有主键,或没有合适的唯一索引,则InnoDB会自动生成一个rowid作为隐藏......