sql技能学习与项目实战
2024-10-10 11:30:17 0 举报
AI智能生成
sql速成笔记
作者其他创作
大纲/内容
进阶的创建公司资料库
创建并连接多个表格
用外键连接两个表
在创建的时候,就直接连接(第二个表连接第一个表)
foreign key (`manager_id`) references `employee`(`emp_id`) on delete set null
foreign key(`emp_id`) references `employee`(`emp_id`) on delete cascade,
子主题
在创建很多个表以后,用alter table,add foreign key来连接
子主题
新增公司资料
要考虑先后顺序,如果先建好外键的话
可以先把共有的列,用null填充,然后全部录入完以后,再update,set,where更改这一列
update `employee`
set `name`='green' where `emp_id`=206;
set `name`='green' where `emp_id`=206;
update `employee`
set `salary`=4000 where `emp_id`=206;
set `salary`=4000 where `emp_id`=206;
如果需要修改的是数值(数字),那么不需要加''
查找公司资料
查找、排序、只需前三名
select * from `employee` order by `salary` desc limit 1;
查找,只要特定属性
查找,避免重复(一个样子的只需一个)
不加去重的时候
加上distinct的时候,就会去重
聚合函数
select count
select count(*) from `baioge`
表格里面一共有几笔资料(有多少行)
select count(`attribute`) from `baioge`
有sup_id(某个属性)的,一共有多少行
count+where条件筛选
子主题
数学计算
总和select sum
平均数select avg
最大的 select max
最小的 select min
通用字元(模糊搜索)
%代表多个字元,可以用在结尾,开头,中间
以335结尾,where`phone` like '%335'
以254开头
中间有354
子主题
_代表一个字元,如果是2个_就代表两个字元__
联集union(把两个搜寻的结果合并在一起)
一个属性
把union加在两个搜寻的中间
如果用union的话,搜寻的属性数量、属性类型,都要是一样的(这样会报错)
两个属性
两列
可以发现,呈现结果与搜寻的第一个属性名称一样
搜寻结果的属性名称可以修改,用as
一列
子主题
join 连接(连接两个表格在一起)
需求:取得所有部门的经理的名字
对策:连接branch和employee两个表
连接以后的属性数量
用*连接了以后,属性的数量就是两个表格的简单相加
这个表格有7列,那个表格有3列,所以连接以后就会有10列
不用连接所有的属性
如果有这几个表格里面,都有名称相同的属性怎么办
表格名称.属性
以某个表格为主,进行连接
left join不管条件成立不成立,都会回传左边的信息,右边有空缺的,就会用null
以左边的数据为标准,做表格
right join
多重查询,
就是两个select和where罢了
就是两个select和where罢了
如果子查询的结果只有一个,就可以用=
先算括号里面的,然后再算大的查询
如果子查询结果不止一个,就用in
子主题
在一个查询结果里面,嵌入另一个查询的结果
on delete(如果数据被删除)
on delete set null(对应不到,就填充成null)
就是员工离职了、员工id空缺,那么manage_id就会空着,于是就设置成null
如果一个属性,同时是主键和外键的话,那么就不能被设置成null
on delete cascade(对应不到,就删掉组数据)
将Python连接到数据库
mysql-connector-python
面向实际需求
提取老表的属性形成新表,降序排列
creat table as select xx属性 from xx表的名字
creat table as select xx属性 from xx表的名字
时间最早的属性内容,就按照min(属性名称)
跟练复现:基于100万真实电商用户的1亿条行为数据分析
https://www.bilibili.com/video/BV1S94y1Z7xc/?p=2&vd_source=bd9367426c226d528d29c4dd45b432c3
什么是资料库、什么是SQL
什么是资料库
资料库管理系统
(DBMS,Database Management System)
(DBMS,Database Management System)
子主题
资料库的分类
关联式资料库,SQL(用一个一个表格储存资料,然后关联表格)
关联式资料库管理系统(RDBMS)
非关联式资料库,no SQL
非关联式资料管理系统
跟他们做沟通需要用各自资料库的语言
什么是SQL
结构性询问语言
Structured Query Language(SQL)
Structured Query Language(SQL)
SQL是一个语言,用来跟关联式资料管理系统进行沟通
MySQL最出名
资料库的理论知识
主键
储存资料的第一步,设置属性,设置主键
设置成主键的属性,可以唯一表示每一个资料
区分每一个资料,不会重复
依据主键来查询
保证唯一性
主键的数量:1个、2个及以上
主键是1个
id是主键
主键是2个及以上
有的时候,1个属性当不了主键,因为可能重复
外键
这个表的主键,链接另一个表的主键
用处
用来连接两个表格
就是两个表格都有的一个属性(一个列)
也可以对应回自己的表格
这个外键,对应自己表格的主键
简单的增删改查
创建资料库
create database `sql_nx`;
`sql_nx`
创建表格
6种数据类型
int
整数
decimal(m,n)
有小数点的数
(3,2)总共有三位数,小数点的部分占了两位
varchar(n)
字串
n表示最多能存储多少个字串
BLOB
存放二进制的资料
DATE
2023-12-09
TIMESTAMP
记录时间,包括几分几秒
存入资料
注意变量名字要对应哈
INSERT INTO`branch` VALUES(3,'资讯',NULL);
自己的字符串的外面用,''(英文输入法的单引号)
创建的变量名的外面用,``(英文输入法的esc下面的)
限制与约束
unique 唯一
not null
default 预设值/默认值
如果没写这个属性,默认值是xxx
auto_increment自增主键
不用写1/2/3这些的序号了,他会自动帮你加上
修改删除资料
delete from`表格`
where
where
取得资料 where(这个sql里面没有if,where的作用与if一样)
取得所有属性
select *
只要一两个属性
排序 order by
desc 由高到低,降序
默认是升序 asc,由低到高
依据两个排序
限制回传资料的笔数limit
只要排序的前三个(用desc和asc,可以取得前三名或者倒数三名)
可以结合where,and,or使用
这两个是一个意思,in就是在其中的之一,与or一个意思
收藏
0 条评论
下一页