结构化查询语言(Structured Query Language)简称 SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
我会讲以下内容:
- SQL 语言概述
- 数据库的安装 MySQL 安装
- SQL 语言基础知识
- 模式、基本表、视图
- 单表查询,多表查询
适合人群:SQL 语言初学者
一、SQL 概述
关系数据库标准语言 SQL(结构化查询语言)。 结构化查询语言(Structured Query Language)简称 SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
SQL 语言的精巧:仅有 9 个命令动词,后扩充至 10 个。
二、SQL 语言的特点
1.综合统一
集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功能于一体。可以独立完成数据库生命周期中的全部活动:
- 定义关系模式,插入数据,建立数据库;
- 对数据库中的数据进行查询和更新;
- 数据库重构和维护
- 数据库安全性、完整性控制等
用户数据库投入运行后,可根据需要随时逐步修改模式,不影响数据的运行。数据操作符统一
2.高度非过程化
- 非关系数据模型的数据操纵语言“面向过程”,必须指定存取路径
- SQL 只要提出“做什么”,无须了解存取路径。
- 存取路径的选择以及 SQL 的操作过程由系统自动完成。
3.面向集合的操作方式
- 非关系数据模型采用面向记录的操作方式,操作对象是一条记录
- SQL 采用集合操作方式:
① 操作对象、查找结果可以是元组的集合 ②一次插入、删除、更新操作的对象可以是元组的集合
4.以同一种语法结构提供多种使用方式
- SQL 是独立的语言 能够独立地用于联机交互的使用方式
- SQL 又是嵌入式语言 SQL 能够嵌入到高级语言(例如 C,C++,Java)程序中,供程序员设计程序时使用
5.语言简单,易学易用
语言简洁,易学易用。尽管 SQL 的功能很强,但语言十分简洁,核心功能只用了 9 个动词。SQL 的语法接近英语口语,所以,用户很容易学习和使用。
SQL 语言的动词
SQL 功 能 | 动 词 |
---|---|
数 据 查 询 | SELECT |
数 据 定 义 | CREATE,DROP,ALTER |
数 据 操 纵 | INSERT,UPDATE,DELETE |
数 据 控 制 | GRANT,REVOKE
三、SQL 语言基本概念
1.SQL 支持关系数据库三级模式结构
##### 2.结构化查询语言包含 6 个部分:
- 数据查询语言(DQL:Data Query Language):其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字 SELECT 是 DQL(也是所有 SQL)用得最多的动词,其他 DQL 常用的保留字有 WHERE,ORDER BY,GROUP BY 和 HAVING。这些 DQL 保留字常与其它类型的 SQL 语句一起使用。
- 数据操作语言(DML:Data Manipulation Language):其语句包括动词 INSERT、UPDATE 和 DELETE。它们分别用于添加、修改和删除。
- 事务控制语言(TCL):它的语句能确保被 DML 语句影响的表的所有行及时得以更新。包括 COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。
- 数据控制语言(DCL):它的语句通过 GRANT 或 REVOKE 实现权限控制,确定单个用户和用户组对数据库对象的访问。某些 RDBMS 可用 GRANT 或 REVOKE 控制对表单个列的访问
- 数据定义语言(DDL):其语句包括动词 CREATE,ALTER 和 DROP。在数据库中创建新表或修改、删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。
- 指针控制语言(CCL):它的语句,像 DECLARE CURSOR,FETCH INTO 和 UPDATE WHERE CURRENT 用于对一个或多个表单独行的操作。
查询和更新指令构成了 SQL 的 DML 部分:
SELECT - 从数据库表中获取数据UPDATE - 更新数据库表中的数据DELETE - 从数据库表中删除数据INSERT INTO - 向数据库表中插入数据SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。
SQL 中最重要的 DDL 语句:
CREATE DATABASE - 创建新数据库ALTER DATABASE - 修改数据库CREATE TABLE - 创建新表ALTER TABLE - 变更(改变)数据库表DROP TABLE - 删除表CREATE INDEX - 创建索引(搜索键)DROP INDEX - 删除索引
3.数据库中常用的概念
- 模式:基本表的集合定义为 SQL 模式。一个 SQL 模式(即"数据库模式")由模式名和模式拥有者的用户名或账号来确定,并包含模式中每一个元素(基本表、视图、索引等)的定义。
- 表
- 索引
- 视图
视图与表的异同:
- 表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改。
- 视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些 SQL 语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。
- 表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。 联系:视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。
视图可以在以下几个方面使程序与数据独立:
- 如果应用建立在数据库表上,当数据库表发生变化时,可以在表上建立视图,通过视图屏蔽表的变化,从而应用程序可以不动。
- 如果应用建立在数据库表上,当应用发生变化时,可以在表上建立视图,通过视图屏蔽应用的变化,从而使数据库表不动。
- 如果应用建立在视图上,当数据库表发生变化时,可以在表上修改视图,通过视图屏蔽表的变化,从而应用程序可以不动。
- 如果应用建立在视图上,当应用发生变化时,可以在表上修改视图,通过视图屏蔽应用的变化,从而数据库可以不动。
## 首先给出的简单安装方式,文末给出标准的安装方式。第一步下载我的压缩包链接:https://pan.baidu.com/s/1EE40dU0j2U1d-bAfj7TeVA
提取码:n25c
复制这段内容后打开百度网盘手机 App,操作更方便哦第二步解压到D 盘
都放进来看图。第三步打开MySQL 文件夹
,就是D 盘
的那个 第四步管理员身份运行环境变量.bat
完事了。输入mysql -uroot -p
试一下密码不用输入,直接跳过。
安装完成
问题解决:
如果不行的话,任务管理(ctrl+alt+del)找一下服务
根目录找到 my.ini删除第二行
[mysqld]# skip-grant-tables# 如果不输入密码报错,删除上一句的“#”然后参考前面修改密码。# 设置 3306 端口port=3306# 设置 mysql 的安装目录basedir=D:\\Mysql\\mysql-8.0.19-winx64# 设置 mysql 数据库的数据的存放目录datadir=D:\\Mysql\\mysql-8.0.19-winx64\\data# 允许最大连接数max_connections=200# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统max_connect_errors=10# 服务端使用的字符集默认为 UTF8character-set-server=utf8# 创建新表时将使用的默认存储引擎default-storage-engine=INNODB# 默认使用“mysql_native_password”插件认证default_authentication_plugin=mysql_native_password[mysql]# 设置 mysql 客户端默认字符集default-character-set=utf8[client]# 设置 mysql 客户端连接服务端时默认使用的端口port=3306default-character-set=utf8
再试一试
如果出现的 vcruntime140.dll 缺失
是因为没有 VC++的支持去官网下载一个https://support.microsoft.com/zh-cn/help/2977003/the-latest-supported-visual-c-downloads
如果 mysql 服务不能正常运行,打开后直接停止。
大概率是 data 初始化失败,即没有完成操作就关闭了.bat请删除 mysql 根目录下的 data 文件夹,然后手动在运行 cmd 运行以下代码。
mysqld --initialize-insecure --user=mysqlmysqld -install
workbench 的安装
workbench 是 mysql 官方的数据库管理软件,相对来说功能很全。
下载链接是这个 https://dev.mysql.com/downloads/file/?id=492434直接点击就可以下载,因为下载比较忙,可以拷贝到迅雷下载
修改密码
最后最后,因为我的配置是跳过了密码所以直接回车就可以,但是如果需要的话,参考一下改密码。1.运行 cmd,输入mysql -u root -p
出现 password: 直接回车可以进入。
2 进入 mysql 数据库:
use mysql
提示Database changed
3 给 root 用户设置新密码:
update user set password=password("123456") where user="root";
别忘了标点
提示:Query OK, 1 rows affected (0.04 sec)Rows matched: 1 Changed: 1 Warnings: 0
4.刷新数据库
flush privileges;
提示:Query OK, 0 rows affected (0.01 sec)
5 退出 mysql:
exit
然后:
根目录找到 my.ini删除第二行
问题通解
如果问题还没有解决,那打开日志文件。在数据根目录下的 data 里面,有一个.err
文件打开它,你就知道真正不能运行的原因是什么。
mysql-8.0.19-winx64\data\计算机名.err
环境变量.bat
@echo offset My_PATH=D:\MySQL\mysql-8.0.19-winx64\bin goto start = 上面的 path 改成自己 mysql 的安装目录下的 bin 的路径 :starts