初始SQL及基本功能的实现——在b站学习SQL(一)

发布于:2022-11-13 ⋅ 阅读:(967) ⋅ 点赞:(0)

软件:mySQL

前言:内容为学习b站课程《【数据库】SQL 3小时快速入门》时的笔记,视频课程传送门:【数据库】SQL 3小时快速入门 #数据库教程 #SQL教程 #MySQL教程 #database#Python连接数据库_哔哩哔哩_bilibili课程主要内容是讲解SQL的安装、介绍、以及基本语言的使用。

资料库简介

资料库(database):存放数据资料的地方。

 

 安装部分跳过。

直接从打开mySQL开始~

 一、基础知识

1.1 tables and keys

 以该表格为例,每一行代表一笔资料,每一列代表一个属性。

设置成主键(primary key)的数值可以唯一地表示每一笔资料,也就是说,表格中的‘2’就指的第二行资料,且只能表示第二行资料,不能去代表第四行(即使是一模一样的数据),同理,‘4’也只能指第四行。

 

对于多表格的信息查询问题——如何获取每个员工所在的部门?

 答:新增foreign key属性对应部门表格的primary key(‘branch_id’)

 

 此外,foreign key不仅可以对应其他的表格,还可以对应自身表格的内容,如表格中的sup_id列。

 注意!primary key具有唯一性,但是当primary有两列或者多列的时候,只要他们的组合值不出现重复即可认为是唯一的。比如【206,400】和【208,400】虽然400出现了两次,但是他们还是可以唯一地表示两个不同的total_sales值。

此外,我们还可以将同一个属性同时设置为primary key和foreign key,也就是说,上图表格中的emp_id同时可以作为Works_with表格的primary key和foreign key(client_id同理)。

二、SQL基础语句

2.1创建资料库

CREATE DATABASE sql_tutorial;

点击右上角的图示即可收起/打开左边的Navigator,下面、右边同理。

第一步:创建资料库(名称为“sql_tutorial;”)

CREATE DATABASE sql_tutorial;

注意这里的分号一定要用英文输入。

选中代码块点击上方闪电图标即可执行。

 执行后发现output窗口有成功运行的提示,但是这个时候它并不会展示创建好的资料库。还需要输入代码:

SHOW DATABASES;

执行后(此时只需选中SHOW行执行即可)

注意这时候如果选中两行一起执行则会报错,提示如下

即资料库无法重复create,即使关闭了页面再打开也是一样,后台会保存创建的资料库。

若想删除创建的资料库,则可以执行下面的语句。 

DROP DATABASE sql_tutorial;

2.2 创建表格

CREATE DATABASE `sql_tutorial`;
SHOW DATABASES;
USE `sql_tutorial`;

通常对于使用的资料库需要用到 USE 关键字。(注:一般资料库名称会用一对反引号括起来防止和关键字混淆,反引号为英文输入状态下的esc键下方的“~`”键)

因为在创建表格的时候需要确定资料库的形态,下面列出基础的六种资料形态(可以定义大部分的状况):

 其中,DECIMAL(m,n)中有两个参数,m指小数的数字个数(2.33对应m=3)n指小数的小数部分位数(2.33对应n=2)。

VARCHAR(n)中的参数n指存放字符串的最大位数(长度)。

下面,以下图中表格为例,写代码创建它!

代码如下:

CREATE TABLE `student`(
    `student_id` INT PRIMARY KEY,
    `name` VARCHAR(20),
    `major` VARCHAR(20)
    );
    
DESCRIBE `student`;

 

DESCRIBE 可以理解为SHOW或者print。

DROP TABLE `student`;

删除表格则可用于上条代码。

ALTER TABLE `student` ADD gpa DECIMAL(3,2)
ALTER TABLE `student` DROP COLUMN gpa;

添加新属性gap/删除gpa属性

2.3 储存资料(insert)

还是按照上述的表格例子,写代码输入资料内容:

添加第一行内容:

INSERT INTO `student` VALUES(1,'小白','历史');

查找(搜寻表格里的全部资料):

SELECT * FROM `student`;

 2.4限制、约束

在创建表格的时候可以给表格的属性添加一些限制:

比如,‘name’属性后的‘NOT NULL’代表这个属性对应的值不可以是空值;

‘major’属性后的‘UNIQUE’代表这个属性对应的值不可以重复。 

'DEFAULT' ‘历史’ 表示该属性的预设值为‘历史’,也就是说当我们没有输入的时候默认为历史。

2.5 修改、删除资料

首先,将SQL的预设更新方式关闭

SET SQL_SAFE_UPDATES = 0

 

 代码含义:将student表格中的‘英语’更新成‘英语文学’

类似地,删除资料代码如上所示。

2.6 取得资料

获取student表格中的name和major两列资料:

如果 想要对表格数据进行排序则可输入以下代码:

即将表格数据按score排序,输出结果如下:

默认是升序排列(ASC),如需降序排列则可使用关键字(DESC):

 此外,还可根据多个属性进行排序

 如果只需要回传前3行数据,则可以输入:

LIMIT 3;

 在获取资料时同样可以使用WHERE语句:

其中'<>'表示的是 ≠

这个语句是筛选包括‘历史’,‘英语’,‘生物’的资料。(下面5/6行代码等价)

2.7 创建公司资料库

首先创建employee表格:

 

接着是branch表格

 创建好两个表格,就可以指定他们的primary key了

 接着创建剩下的表格:

 

 获取资料:

 

2.8 聚合函数

 即employee中有sup_id属性的资料数目。

 

 

 

2.9 万用字源

 这里的‘%’类似于excel中的通配符‘*’。

 ‘_____12%’ 有五个_,代表前面有5个字元,后边的%则可以是任意位。

 UNION 联集的使用(将select的结果合并起来)

 注意,使用union时,联合的两个搜索属性数目要一致,而且类型也要一致(即字符串只能对应字符串不能对应数字),不然会报错。

如果需要修改属性的名字,使用AS关键字即可,例如:

 

 除此之外,连接表格可以使用JOIN关键字。

 

 这里加上‘employee’. 说明‘emp_id’是来自employee表格的属性。

LEFT JOIN & RIGHT JOIN

JOIN左边的‘employee’就是左边的表格,JOIN右边的‘branch’就是右边的表格。

LEFT JOIN的意思就是左边的表格不管条件(ON语句)有没有成立,它都会回传所有的资料给我们,右边的表格则只回传条件成立的资料。

 

 RIGHT JOIN 的意思则是右边的表格不管条件(ON语句)有没有成立,它都会回传所有的资料给我们,左边的表格则只回传条件成立的资料。

 2.10 subquery子查询

 即嵌套查询,括号里查询返回emp_id。

当子查询返回多个值的时候,将‘=’改成‘IN’即可,如:

 2.11  ON DELETE

这个语句中的ON DELETE SET NULL意思就是当对应过去的值不存在(被删除)的时候,设为NULL。

 

ON DELETE CASCADE则是当对应过去的值不存在(被删除)的时候,将该行直接一起删掉。 

primary key不可设为NULL!

3 通过python连接到mySQL

首先安装包mysql-connector-python

安装好后,引入包,创建连接

 localhost代表位置,即安装在本机

创建资料库:

 

 

 

 

注意,改变资料的命令需要写connection.commit()

 

 

 


网站公告

今日签到

点亮在社区的每一天
去签到