文正知识分享第05期 培养SQL基础知识素养
作者|文正庚云(ID:)
此摘要是对之前发布的 SQL 的补充。
在进入正题之前,我想先讲一下其他的知识点,稍微思考一下。
在学习某个技能点或者新的知识点时,可以尝试建立一个知识排序系统,如下:
输入:可以向葫芦学习,自己练习。
分析:有自己独立的分析和思考。
输出:输出是什么,与期望进行比较。
备注:记录收获过程(手写或电子文档形式)。
此流程图制作上比较粗糙,应该作为整理基础知识的参考。
如上所述,学习新的知识点。 善于总结,可以利用流程图或思维导图构建知识体系。
01
—
SQL 和数据库
基础知识素养
一般来说,在日常工作交流中,大家描述的SQL都是标准SQL(SQL),并不是特指某个数据库厂商(DBMS)的专有语言。
02
—
什么是 SQL?
SQL一定知道它会这样描述:
SQL(发音为 SQL or)是 Query(结构化查询语言)的缩写。 SQL 是一种专业用于与数据库通信和交互的语言。
与其他语言(例如英语或 Java、C、PHP 等编程语言)不同,SQL 中只有几个单词,这是故意的。 设计SQL的目的是为了方便完成一项任务,提供一种简单有效的方式从数据库中读写数据。
用一句话来概括:SQL就是Query(结构化查询语言)。
维基百科是这样描述的:
全称是Query(Structured Query Language),是一种特定用途的编程语言,一般简称SQL。
用于管理关系数据库管理系统(RDBMS)。 它是一种使用关系模型的数据库应用语言。 它是 IBM 在 20 世纪 70 年代开发的,作为 IBM 数据库 R 的原型关系语言,用于实现数据库中的信息检索。
20世纪80年代初,美国国家标准协会(ANSI)开始定制SQL标准。 最早的 ANSI 始于 1986 年,称为 SQL-86。 它于1987年成为国际标准化组织(ISO)标准。尽管SQL并非完全按照Codd的关系模型设计,但它仍然成为使用最广泛的数据库语言。 此后,该标准经历了一系列修订,增加了大量新功能。 尽管存在此标准,但大多数 SQL 代码并未完全跨平台跨不同数据库系统。
用我自己的经验总结一下:它实际上是一种结构化查询语言,将数据定期存储在特定的容器中。
SQL有什么优点?
SQL 不是特定数据库供应商的专有语言。 大多数流行的 DBMS 都支持 SQL,因此学习标准 SQL 将使您能够使用大多数数据库。
SQL 简单易学。 它的句子是由描述性很强的英语单词组成的,而且这些单词的数量并不多。
SQL看起来很简单(入门),但它实际上是一种功能强大的语言,通过灵活运用其语言元素,可以执行非常复杂和高级的数据库操作。
SQL扩展描述:许多DBMS供应商通过添加语句或指令来扩展SQL,以便为执行特定操作提供附加功能或简化方法。 虽然这个扩展使用起来很方便,但是一般是针对个体DBMS的,而且很少有两个厂商同时支持这个扩展。 举两个例子,比如可以使用limit关键字来实现分页,而MySQL的分页则使用limit关键字。
03
—
什么是数据库?
数据库
数据库(Database):保存有组织的数据的容器,通常是一个文件或一组文件。
Tips:通常所说的数据库是指关系型数据库(RDBMS)。
日常工作沟通中要注意混乱。 人们通常使用数据库一词来表示所使用的数据软件。 这种表达并不完全正确,因此造成了很多混乱。 准确地说,数据库软件是指数据库管理系统(DBMS)。 数据库是由 DBMS 创建和操作的容器。 具体是什么以及它的形式在不同的数据库中是不同的。 这种差异体现在各大数据库厂商都在标准SQL的基础上进行了自己的扩展。
简单说明
在 MySQL 中创建数据库语法: . 在数据库中创建数据库的语法是user。 你没看错,是基于用户来描述和管理的。 如果使用的话,会提示数据库已加载。
表面
表:特定类型数据库的结构化列表。
表名
表名:表名是唯一的(不可重复)。 它实际上是数据库名和表名的组合。 数据库名称理解为更容易让用户接受。 有些数据库使用数据库所有者的名称作为唯一名称的一部分,例如大梦数据库。 相同的数据不能使用相同的表名,但不同的数据库可以使用相同的表名。
模型
架构:有关数据库和表的布局和属性的信息。
列表
Column():表中的一个字段。 所有表均由一列或多列组成。
数据分解:将数据正确分解为多列尤为重要。 例如:城市、州、邮政编码始终是彼此独立的列。 通过分解这些数据,可以使用特定列对数据进行排序和过滤(例如查找特定州或城市的所有客户)。 如果城市和州合并为一列,则按州排序或过滤将会很困难。
当然,您可以根据需要尽可能多或尽可能少地分解数据。 例如,通常可以将街道名称和门牌号一起存储在地址中。 这可以在没有特殊要求的情况下完成。 如果当天需求发生变化,要根据门牌号进行排序或过滤,最好将门牌号和街道名称分开。
数据类型
数据类型:允许哪种数据类型。 表中的每一列都有一个相应的数据类型,它限制(或允许)该列中存储哪种类型的数据。
好的
行:表中的一条或多条记录。
首要的关键
主键(key):一列(或多列),其值唯一标识表中的每一行。
定义主键:可能并不总是需要主键。 为了便于管理,大多数数据设计者都会确保他们创建的每个表都有一个主键。
外键
外键(key):用于保证参照完整性,通常存在于两个或多个表中。 如果有两张表:主表和子表,并且子表中有主表的外键约束; 您想同时删除两个表; MySQL提示需要先删除约束才可以彻底删除。 也有例外,例如当设置了cascade()时。
不管你读了多少理论知识,最好自己去实践一下,效果来得更快。
04
—
挺身而出,通过实践获得真知
选择
1. 选择:选择一个流行且社区活跃的 DBMS 供应商发布的数据库软件来开始使用。
2.安装:云服务器或本地机或虚拟机模拟环境。
3、初学者:建议使用各大厂商提供的GUI字符命令界面进行交互。
推荐
我个人推荐学习MySQL(),循序渐进的学习,深入浅出的讲解。 为什么推荐学习MySQL作为入门首选? 如上所述,它很受欢迎并且拥有活跃的社区。 也就是说,MySQL资源丰富,官方文档全面,更新频繁。
关于CRUD:增删改查
一般来说,CRUD是指对数据库表中的行记录进行添加()、删除()、查询()、修改()等操作。
各大DBMS厂商数据库官方文档地址整合:
其他主流数据库厂商(DBMS)-官方文档地址
05
—
DBMS初体验
MySQL:初体验
1、部署MySQL;
2.检查(启动和关闭服务);
3、修改密码和权限(为第5步做准备);
4. 字符命令界面进行交互;
5.工具:MySQL,(通用数据库管理器)或;
6、基本操作(CRUD:、、、);
7.参考官方文档&官方完整Demo示例。
部署.0.x
.0.x (zip) 简易安装教程
1、解压免安装版MySQL:unzip mysql-8.0.x-.zip
2.切换到MySQL解压目录:cd mysql-8.0.x-
3.添加MySQL配置文件:my.ini
4、初始化MySQL:bin\ --- 或 bin\ --- --
5、注册MySQL服务:bin\ --(将MySQL服务注册到,可以使用net命令进行管理)
6、启动MySQL服务:net start 或 sc start
7、登录MySQL字符管理界面:mysql -uroot -p
注:版本选择:带有GA( )标记的版本为稳定版本。 最新稳定版本是2023年1月17日发布的MySQL 8.0.32。 x代表使用.0特定版本。 打开CMD或以管理员身份运行。 如果没有,安装服务时会提示拒绝权限,如下所示。
D:\mysql-8.0.32-\bin> --
/ 的 !
在环境中新建my.ini并进行如下设置,指定基本安装目录和数据存储目录:
[mysqld]
basedir=D:\\mysql-8.0.32-winx64
datadir=D:\\mysql-8.0.32-winx64\\data
登录命令行字符界面
在平台上打开CMD,或者(win + x 打开终端(管理员))
参数功能:
•-u:指定用户为root。
•-p:回车后输入密码。 如果直接输入密码并回车即可登录。
•-P:指定端口号(port),默认为3306。
平台修改my.ini指定MySQL端口,Linux平台修改f指定端口。
mysql -uroot -p -P 3306
Linux 发行版打开终端()
mysql -uroot -p -P 3306
进入:
select 1\G
分析:
登录MySQL字符操作界面,输入1\G, 1; 或 1\g,您将得到输出: 1。此时,MySQL 不需要访问表或索引,直接获取结果。 通过使用执行计划(后面可以学习)可以看出type=NULL是最高效的。
输出:
***************************1.row***************************
1: 1
1 row inset (0.00 sec)
提示:也支持1; 或1\g,输出结果为:1。
笔记:SQL CRUD
创建数据库(用户)和表时,最好使用统一大小写、驼峰式命名、下划线,不要混搭。 我个人的建议是:要么纯大写,要么纯小写,或者用下划线分隔。 用拼音命名库名、表名、字段名时(最好不要缩写),如果缩写也请写注释。 例如,地标名称北京()、上海()、广州()、深圳(),使用全拼音是可以的。 即使你查字典,也很可能是这样命名的。 最好和你的合作团队达成共识。
当然,当你看到我演示的SQL语句时,关键字都是大写的,库名、表名、字段名都是小写的。
评论使用
/** MySQL基础知识扫盲 **/
-- MySQL基础知识扫盲
创建数据库
创建管理用户研究(以前称为数据库)。 注意:执行更新操作时,请始终牢记数据是无价的,并指定条件。 尽量避免给自己带来不必要的工作麻烦。
CREATE DATABASE study;
切换用户
USE study;
建表语句
分别在study用户下创建表:girl、books。
CREATE TABLE study.girl(
id INT PRIMARY KEY,
girl_name VARCHAR(64),
girl_age VARCHAR(64),
cup_size VARCHAR(64),
stu_num VARCHAR(64)
)
CREATE TABLE study.books(
id VARCHAR(32) NOT NULL PRIMARY KEY,
book_names VARCHAR(64) NOT NULL,
isbn VARCHAR(64) NOT NULL,
author VARCHAR(16) NOT NULL
);
第一表妹:使用CRUD语句&启用显式事务(MySQL&默认启用自动提交)。
显式启动事务
BEGIN; -- start transaction;
查询:标准写法,指定字段名
SELECT sg.id,sg.girl_name,sg.girl_age,sg.cup_size,sg.stu_num FROM study.girl sg;
查询:懒写法
SELECT * FROM study.girl sg;
插入一条数据:标准写法,指定字段名
INSERT INTO study.girl(id,girl_name,girl_age,cup_size,stu_num) VALUES(1001,'梦梦','16','B','tolovemm16');
插入一条数据:懒写法
INSERT INTO study.girl VALUES(1001,'梦梦','16','B','tolovemm16');
删除数据:指定条件
DELETE FROM study.girl sg WHERE sg.id=1001;
修改数据:指定条件
UPDATE study.girl(id,girl_name,girl_age,cup_size,stu_num) sg SET sg.stu_num='toloveC16' WHERE sg.id=1001; UPDATE study.girl sg SET sg.cup_size='C' WHERE sg.id=1001;
回滚操作
ROLLBACK;
提交事务
COMMIT;
第二表书籍:
-- 插入
INSERT INTO study.books VALUES('1001','books','2023-3-15-miji','张三');
-- 修改
UPDATE study.books b SET b.book_names='绝世武功秘籍'WHERE b.id='1001';
-- 查询
SELECT * FROM study.books;
-- 不用带上用户名也能查询,切换用户操作:use study
SELECT * FROM books;
-- 删除全表数据内容
DELETE FROM study.books;
-- 删除全表数据内容:TRUNCATE [TABLE] tbl_name
TRUNCATE TABLE study.books;
-- 删除表结构与内容,注意:无法回滚
DROP TABLE study.books;
MySQL官方完整Demo示例
最后附上官方的示例数据库,非常完整的-db数据库示例。 包含:视图、函数、触发器和存储过程,当然还有外键的使用。
-db 数据库包含三个文件,方便访问和使用:
1.-.sql:数据库表结构;
2.-data.sql:数据库示例模拟数据;
3..mwb:数据库物理模型,可以在MySQL中打开查看。
对于简单的测试学习,可以使用world-db:
world-db数据库包含三个表:city,,。
MySQL官方文档(5.6、5.7、8.0)集成:
提取码:bx44
:初体验
初次使用,建议掌握内置字符命令操作工具SQL plus。
其次,掌握第三方管理工具PLSQL,便于管理。 它有 30 天的免费试用期,并且是一款付费软件。
个人认为有必要了解一下内置的SQL客户端管理工具SQL,它是免费使用的。
1.SQL+
2.PLSQL
3.SQL
下面将演示如何在数据库中建立用户、表、查询数据、添加、修改、删除操作。
1.创建用户
创建数据库test并创建中指用户进行管理
常规(是拐点,分为CDB和PDB)建表用法:
create user test identified by 123456;
新版本(带c,默认是CDB模式),创建新用户
create user c##test identified by 123456;
2、授权
授予用户测试权限,
grant resource,connect to test;
3. 创建表
创建表girl并指定用户为test
create table test.girl(
ID VARCHAR2(32) not null,
GIRL_NAME VARCHAR2(64),
GIRL_SEX VARCHAR2(2)
)
4、索引
添加主键索引
alter table test.girl add primary key(ID);
5.查询、添加、修改、删除
查询表妹子
select * from test.girl;
添加新数据
insert into test.girl values('1001','梦梦','女');
改变数据
update test.girl t set t.ID='1002';
删除数据
删除表中的所有数据,但不删除表结构。 使用drop删除表结构和数据。
delete from test.girl;
:初体验
主要熟悉内置的SQL shell字符命令工具和客户端管理工具的使用。
1.SQL shell
2.
你可以在我的个人公众号历史文章中找到入门教程。
演示示例
SQL必知演示示例
官网地址:
涵盖 DBMS 示例:DB2、MySQL、、
SQL表结构示例下载
亲自整理了一些资料进行整合、打包。
提取码:cx3p
参考:
1. 必须了解并理解 SQL 第五版。
结尾
—
不问收获,但问努力
当我静下来的时候,我才发现,原来还有很多事情是我不知道的。
一分耕耘一分收获。
多总结,你会发现你的知识宝库变得越来越丰富。
最后,以上总结仅供参考!
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。