文章目录
前言
SQL 是用于访问和处理数据库的标准的计算机语言。
SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。
关系型数据库包括:MySQL、SQL Server、Access、Oracle、Sybase、DB2 等等。这些数据库都是可以用SQL语言来去编写。
非关系型数据库:Redise、Hbase、NOSQL等等。这些数据库他们使用的是类SQL语言去编写的
SQL 面向数据库执行查询
SQL 可从数据库取回数据
SQL 可在数据库中插入新的记录
SQL 可更新数据库中的数据
SQL 可从数据库删除记录
SQL 可创建新数据库
SQL 可在数据库中创建新表
SQL 可在数据库中创建存储过程
SQL 可在数据库中创建视图
SQL 可以设置表、存储过程和视图的权限
一、什么是数据库?
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。
我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:
1.数据以表格的形式出现
2.每行为各种记录名称
3.每列为记录名称所对应的数据域
4.许多的行和列组成一张表单
5.若干的表单组成database
1.数据库的位置和地位
2.数据库种类
二、MySQL数据库
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
data = pd.read_csv(
'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())
该处使用的url网络请求的数据。
三、RDBMS 术语
在我们开始学习MySQL 数据库前,让我们先了解下RDBMS的一些术语:
数据库: 数据库是一些关联表的集合。
数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
外键:外键用于关联两个表。
复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
MySQL 为关系型数据库(Relational Database Management System), 这种所谓的"关系型"可以理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成, 如图所示:
这是SQL server 的图
MySQL安装教程:链接: mysql8.0.25安装配置教程(windows 64位)最详细—聚精会神搞学习
四、SQL语言
SQL
1.什么是SQL ?
Structured Query Languange:结构cmd化查询语言
其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。
2.SQL通用语法
SQL语句可以单行或多行书写,以分号结尾。
可使用空格和缩进来增强语句的可读性。
MySQL数据库的SQL 语言不区分大小写,关键字建议使用大写。
- 3种 注释
- 单行注释: – 注释内容 或 # 注释内容(mysql特有)
- 多行注释: /* 注释 */
- /*! … */
5.退出命令
quit;
exit;
ctrl + Z
3.SQL分类
-
1.DDL(Data Definition Language)数据定义语言 用来定义数据库对象:数据库、表、列等。关键字:create,drop,alter,show,use等
-
2.DML(Data Manipulatio Language)数据操作语言 用来对数据库中表的数据进行增删改。关键字:insert,delete,update 等
-
3.DQL(Data Query Language)数据库查询语言 用来查询数据库中表的记录(数据)。关键字:select,where 等
-
4.DCL(Data Control Language)数据控制语言(了解) 用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANY,REVOKE 等。
DDL:操作数据库表
1. 操作数据库:CRUD
1.C(Create):创建
-
创建数据库: 数据库是不区分大小写,ABC001 和 abc001是一样的; 命令也不区分大小写;
-
创建数据库的时候,名字的命名,只能是a-z,0-9,_
-
组成,不能出现特殊字符,最好也不要用纯粹的0-9来命令,建议使用a-z,更具具体的事物去命名;
create database 数据库名称
mysql> create database abc001; -- 创建数据库
mysql> show databases;-- 显示数据库
+--------------------+
| Database |
+--------------------+
| information_schema |
| abc001 |
| mysql |
| performance_schema |
| sys |
+--------------------+
mysql> create database `001`; -- 创建和删除纯0-9的数据库
Query OK, 1 row affected (0.00 sec)
mysql> drop database abc005;-- 删除数据库
Query OK, 0 rows affected (0.00 sec)
- 创建数据库,判断不存在,再创建:
create database if not exists 数据库名称;
- 创建数据库,并指定字符集
create database 数据库名称 character set 字符集名;
- 练习:创建db3数据库,判断是否存在,并指定字符集为gbk
create database if not exists db3 character set gbk;
mysql> create database abc003 character set gbk;
Query OK, 1 row affected (0.00 sec)
2.R(Retrieve):查询
- 查询所有数据库的名称:
show databases;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| abc001
- 查询某个数据库的字符集:查询某个数据库的创建语句
show create database 数据库名称;
mysql> show create database abc001;
+----------+-----------------------------------------------------------------------------------------+
| Database | Create Database |
+----------+-----------------------------------------------------------------------------------------+
| abc001 | CREATE DATABASE `abc001` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */ |
+----------+-----------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
3.U(Update):修改
- 修改数据库的字符集
alter database 数据库名称 character set 字符集名称:
mysql> alter database abc001 character set gbk;
Query OK, 1 row affected (0.00 sec)
mysql> show create database abc001;
+----------+----------------------------------------------------------------+
| Database | Create Database |
+----------+----------------------------------------------------------------+
| abc001 | CREATE DATABASE `abc001` /*!40100 DEFAULT CHARACTER SET gbk */ |
+----------+----------------------------------------------------------------+
1 row in set (0.00 sec)
4.D(Delete):删除
- 删除数据库
drop database 数据库名称;
mysql> drop database `123`;
Query OK, 0 rows affected (0.01 sec)
- 判断数据库存在,存在再删除
drop database if exists 数据库名称;
5:使用数据库
- 查询当前正在使用的数据库名称
select database();
use 数据库名; 进如数据库
mysql> use jnng;
Database changed
mysql> select database();
+------------+
| database() |
+------------+
| jnng |
+------------+
1 row in set (0.00 sec)
- 使用数据库
use 数据库名称;