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