python每日笔记

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: python每日笔记

今天主要学习的内容是数据库的相关操作,知识很零散,命令很多,大家多练习,希望都记下来。


知识梳理


数据表的相关操作:

字段名 f_xx

字段类型  ty_xx

使用数据库;

   use db_xxxx;

查看当前数据库中的所有数据库;

   show tables;

创建数据表;

   create table t_xxx(字段名 字段类型,f_xx ty_xx, ......);

查看数据表创建信息;

   show create table t_xxx;

查看表的结构:

   desc t_xxx;

改-为表添加新字段:

   alter table t_xx add new_f_xx ty_xx;

改 - 修改字段类型:

  alter table t_xx modify f_xx new_ty_xx;

改 - 修改字段名:

  alter table t_xx change old_f_xx new_f_xx ty_xx;

删除字段:

   alter table t_xx drop f_xx;

删除表:

   drop table t_xx;


数据操作:

插入单条数据1

insert into t_stu value(1,'tom',12,'boy',180);

插入单条数据2

insert into t_stu values(2,'jack',13,'boy',190);

插入指定字段数据

insert into t_stu (name,gender) value('rose','girl');

插入多条数据

insert into t_stu (name,age,gender) value('tony',18,'boy'),('alice',20,2),('alex',13,1);

insert into t_stu (name,age,gender) values('tony',18,'boy'),('alice',20,2),('alex',13,1);

更新

update t_stu set height = 123.6789;

update t_stu set age = 25 where name = 'rose';

删除数据

语法1:truncate 表名

语法2:delete from 表名 [条件]

导入导出数据库:

<  输入重定向  > 输出重定向

导出整个数据库

  • 语法:mysqldump –uroot –p(注意不要输入密码) 要导出的数据库名 要导出的数据表 ... > 目标文件.sql

mysqldump -uroot -p School > school_bak.sql

导入整个数据库

  • 语法:mysql -uroot -p 数据库名 < 要导入的文件.sql

mysql -uroot -p sch < school_bak.sql


注意点:

  1. 在导入数据库的时候,要注意数据库文件xx.sql存放位置,放到家目录用户目录下面。然后导入的时候是退出数据库在外面直接进行操作的。
  2. 导入数据库的时候先创建一个空数据库。

约束:

约束就是一种限制和条件,为了让数据准确。

数据完整性:

域完整性:取值范围

实体完整性:记录

参考完整性:引用完整性,多个表,一个表参考另一个表去看。

数据常见问题:

  • 数据冗余  
  • 失去数据完整性
  • 数据缺少唯一标示
  • 失去实体完整性
  • 失去域完整性
  • 失去引用完整性

数据库常用约束:

  • 主键约束  
  • 唯一性,非空性,主键在一张表中只能有一个
  • create table tpk(id int(5) primary key,name char(10));
  • 数据库在屏幕上都是以表格的形式显示,但是实际上就不一定了
  • insert into tpk values(1,'tom');
  • id的值不允许重复,也不允许为空,必须传入数据
  • 自动增长作用      
  • 只能用来修饰整型字段,一般和主键配合使用。编号增长时,从1开始,如果插入数据为0时,那么就会进行自动增长。
  • auto_increment
  • show create table tai; 查看表信息,里面的auto_increment记录了自动增长的下一个值,如果是0,那么就按这个值进行填充
  • 自动增长相当于缺省参数,你给了id就按你给的id显示,如果不给,就自动增长。
  • 本来是1,2自动增站的,如果你给了10,那么auto_increment记录的就是11。从11开始往后增长,前面的3,4这些还可以手动插入。自动增长的时候,按最大的索引来记录下一个值。
  • delete不能删除 alter可以删除。
  • 唯一性约束
  • unique
  • 保证该字段中的数据唯一
  • create table tui(id int primary key,name char(10) unique);
  • 主键显示PRI,唯一性显示UNI
  • 非空约束
  • not null
  • 修饰后,字段不允许有空值  NULL
  • create table tnn (id int primary key ,name char(10) not null);
  • 默认值约束
  • default
  • 如果在给字段插入数据时,如果没有给定数据,那么就是用默认值,如果给了那就用给定的数据
  • create table tdf (id int, name char(10) default 'No Name');
  • 外键约束
  • foreign key(字段名) references 表名
  • 也叫引用约束,参考约束
  • 需要有多张表来进行参考
  • create table tclass (id int primary key,name char(10));
  • 参照关联的表
  • create table student(id int primary key, name char(10), class_id int, foreign key(class_id) references tclass(id));
  • 在数据删除时,被引用的数据表中的数据,不能随意删除。
  • 先删除引用的,才能删除被引用的。
  • 解决引用完整性的问题


单表操作:

导入数据库的两种方式;

一:

1.将数据库.sql文件放到一个目录下,然后cd切换到该目录下,然后连接数据库MySQL,

2.创建一个新的数据库

3.use 创建的新数据库

4.source 文件路径/数据库名

二:

看前面



查询基本操作:

as加别名:可以写as,也可以直接不写,加一个空格:

select c_id as 编号, c_name as 姓名, c_gender 性别, c_address 地址 from t_student;

消除重复数据 distinct了解一下,不怎么用

单字段:

select distinct c_address 地区分布 from t_student;

多字段:

select distinct c_gender,c_address from t_student;

两个算一个整体,然后如果两个都一样才算重复的,才删除。


指定查询条件和关系运算符

select c_id,c_name,c_gender,c_address from t_student where c_id = 5;

先执行from,再执行where,最后是select

select c_id from t_student where c_id != 8;关系运算符放的位置注意一下


逻辑运算符

select c_id ,c_gender,c_name from t_student where c_id <10 and c_gender = '女';

select c_id ,c_gender,c_name from t_student where c_id <10 or c_gender = '女';

select c_id ,c_gender,c_name from t_student where not (c_id <10 or c_gender = '女');

select c_id ,c_gender,c_name from t_student where not c_id <10 or c_gender = '女';


模糊查询:

like

%表示任意多个字符

_表示任意一个字符

select c_id,c_name,c_gender from t_student where c_name like '孙%';

select c_id,c_name,c_gender from t_student where c_name like '%小%';

select c_id,c_name,c_gender from t_student where c_name like '孙__';

select c_name,c_phone from t_student where c_gender = 2 and c_phone like '138%';

select c_name,c_phone from t_student where c_gender = 2;


范围查询

非连续范围 in

select c_name ,c_id from t_student where c_id in (1,3,5,7,9);

可以是数字,可以是汉字的字符串

SQL注入:

select c_name ,c_id from t_student where c_id = 1 or c_id = 3 or c_id =5 or 7 or 9;  它的意思是将7和9认为是真,就是将所有的东西都拖出来,叫做“拖库”

连续范围

select c_id, c_name,c_age from t_student where c_age between 18 and 20;是一个闭区间

between只能在数字上使用。


空判断(很重要)

下面这些都不可以:

mysql> select * from t_student where c_age = 0;
Empty set (0.00 sec)
mysql> select * from t_student where c_age = '';
Empty set (0.00 sec)
mysql> select * from t_student where c_age = NULL;
Empty set (0.00 sec)
mysql> select * from t_student where c_age = 'NULL';
Empty set, 1 warning (0.00 sec)
select * from t_student where not c_age is null;与下面的is not null相比较效率低

下面的很重要

select * from t_student where c_age is null;
select * from t_student where c_age is not null;


查询结果排序

null比零还小

select * from t_student order by c_age;

排序是一个在查询数据时非常重要的操作。比如买东西时,想按一定的条件进行有序显示。就需要使用排序

asc(默认) 升序 / desc 降序 语法:select * from 表名 order by 列1 asc|desc [,列2 asc|desc,...]

  1. 单字段排序

select * from t_student orderby c_age;

select * from t_student orderby c_age asc;

  1. 默认使用就是升序排序,可以不指定 asc ,效果相同。
  2. 多字段排序 可以对多个字段进行排序,只需将字段的排序方式依次写在 order by 后面即可,字段间使用逗号分隔

select * from t_student orderby c_age desc,c_id asc;

多个字段间用逗号隔开,每个后面都要跟着asc或者desc,

先按第一个排序,没有结果再看第二个,依次往下。

查询所有性别为女的数据按年龄升序排序

select * from t_student where c_gender = 2 order by c_age asc;

先筛选再排序



分页查询

select 字段名 from 表名 limit start=0,count =*;
• 从start开始,获取count条数据
• start默认值为0
• 需要获取数据的前n条的时候可以直接写 limit n
start是起始索引,从0开始,可以省略(只有从0开始时)
count是显示条数,一次查询时,条数不可变。
计算当前页的起始索引(current_page - 1)*count
查询性别为女的年龄最小的三个人
select * from t_student where c_gender = 2 order by c_age asc limit 3;分页放在最后。


聚合函数

sum()
avg()
count()   用*  ,其他的指定字段
min()
max()
select sum(c_age),avg(c_age),max(c_age),min(c_age),count(c_age) from t_student;  这里面不包括NULL的数据
select sum(c_age),avg(c_age),max(c_age),min(c_age),count(*) from t_student;     *代表所有的数据



分组

select c_gender,c_address from t_student group by c_gender,c_address;
select c_gender from t_student group by c_gender;
分组的时候,后面的group跟着的字段名是啥,前面select就是啥
分组可以跟着聚合函数来使用
查看分组内的数据 group_concat(要查看的字段)
select c_gender,c_address,group_concat(c_age) from t_student group by c_gender,c_address;
select c_gender,c_address,group_concat(c_age) from t_student where c_gender = 2 group by c_gender,c_address;
select c_gender,c_address,group_concat(c_age) from t_student group by c_gender,c_address having c_gender = 2;找到全是女的

先where筛选,在分组,然后对分组之后的数据进行操作

where读取数据源,在from后用

having在分组中用

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
3月前
|
编解码 数据安全/隐私保护 Python
抖音批量发布视频工具,自动上传视频作品笔记,python发布软件
这个抖音批量发布工具包含三个主要模块:主上传程序、配置文件和视频预处理工具。主程序
|
3月前
|
API 数据安全/隐私保护 Python
小红书批量发布协议, 抖音自动批量发布软件脚本,笔记作品视频自动发布工具【python】
这个工具框架包含了小红书和抖音的批量发布功能,支持图片和视频处理、定时发布等功能
|
3月前
|
Web App开发 数据安全/隐私保护 Python
抖音快手小红书哔哩哔哩,批量发布作品笔记视频工具,自动发布作品上传笔记视频【python】
这个工具实现了四大平台的视频批量上传功能,包含完整的异常处理和日志记录。使用时需要配置
|
3月前
|
存储 JSON API
小红书批量发布笔记工具,小红书批量上传软件,python框架分享
这个框架包含了配置文件、工具函数、API封装和主程序四个模块。使用时需要先配置账号信息,
|
5月前
|
人工智能 Ruby Python
python__init__方法笔记
本文总结了Python中`__init__`方法的使用要点,包括子类对父类构造方法的调用规则。当子类未重写`__init__`时,实例化会自动调用父类的构造方法;若重写,则需通过`super()`或直接调用父类名称来显式继承父类初始化逻辑。文中通过具体代码示例展示了不同场景下的行为及输出结果,帮助理解类属性与成员变量的关系,以及如何正确使用`super()`实现构造方法的继承。
225 9
|
6月前
|
数据采集 JSON API
Python 实战:用 API 接口批量抓取小红书笔记评论,解锁数据采集新姿势
小红书作为社交电商的重要平台,其笔记评论蕴含丰富市场洞察与用户反馈。本文介绍的小红书笔记评论API,可获取指定笔记的评论详情(如内容、点赞数等),支持分页与身份认证。开发者可通过HTTP请求提取数据,以JSON格式返回。附Python调用示例代码,帮助快速上手分析用户互动数据,优化品牌策略与用户体验。
1086 3
|
6月前
|
数据采集 JSON API
Python 实战!利用 API 接口获取小红书笔记详情的完整攻略
小红书笔记详情API接口帮助商家和数据分析人员获取笔记的详细信息,如标题、内容、作者信息、点赞数等,支持市场趋势与用户反馈分析。接口通过HTTP GET/POST方式请求,需提供`note_id`和`access_token`参数,返回JSON格式数据。以下是Python示例代码,展示如何调用该接口获取数据。使用时请遵守平台规范与法律法规。
|
搜索推荐 Python
Leecode 101刷题笔记之第五章:和你一起你轻松刷题(Python)
这篇文章是关于LeetCode第101章的刷题笔记,涵盖了多种排序算法的Python实现和两个中等难度的编程练习题的解法。
129 3
|
存储 开发工具 Python
【Python项目】外星人入侵项目笔记
【Python项目】外星人入侵项目笔记
154 3
|
索引 Python
【免费分享编程笔记】Python学习笔记(一)
【免费分享编程笔记】Python学习笔记(一)
94 1

推荐镜像

更多
下一篇
oss教程