Python全栈 MySQL 数据库 (表字段增、删、改、查、函数)

查询SQL变量 show variables
1.表字段的操作
1.语法:alter table 表名 执行动作;
2.添加字段(add)
alter table 表名 add 字段名 数据类型;(尾插)
alter table 表名 add 字段名 数据类型 first;(头插)
alter table 表名 add 字段名 数据类型 after 字段名;(指定插入)
3.删除字段(drop)
alter table 表名 drop 字段名;
4.修改数据类型(modify)
alter table 表名 modify 字段名 新数据类型;
5.重命名(rename)
alter table 表名 rename 表名;
2.字符类型
1.字符类型宽度与数值类型宽度的区别
1.数值类型宽度为显示宽度,只用于select查询显示
占用储存无关,可用zerofill查看效果
2.枚举类型
1.单选(enum):字段名 enum(值1,值2...);
2.多选(set):字段名 set(值1,值2...);
(多项放在一个字符串内用,号隔开)
3.日期时间类型
1.date:“YYYY-MM-DD”
2.time:“HH:MM:SS”
3.datetime:“YYYY-MM-DD HH:MM:SS”
4.timestamp:“YYYY-MM-DD HH:MM:SS”
5.datetime:不给值默认返回Null
6.timestamp:不给值默认返回系统时间
3. 日期时间函数
1.now() 返回服务器当前的时间
2.curdate() 返回当前时期
3.curtime() 返回当前日期
4.year(date) 返回指定时间的年份
5.date(date) 返回指定时间的日期
6.time(date) 返回指定时间的时间
4.日期时间运算
1.语法格式
select * from 表名
where 字段名 运算符(时间 -interval 时间间隔单位);
时间间隔单位:
1 day | 2hour | 1 minute | 2year | month
5.表记录管理
1.删除表记录
1.delete from 表名 where 条件;
注意:
如果不加where条件,所有记录全部清空
2.更改表记录
1.update 表名 set 字段1=值1,字段名2=值2,... where 条件
注意:
如果不加where条件,所有记录全部更改
3.运算符操作
1.数值比较/字符比较
1.数值比较: = != > >= < <=
2.字符比较: = !=
2.逻辑比较
1.and
2.or
3.范围内比较
1.where 字段名 between 值1 and 值2
2.where 字段名 in(值1,值2,....)
3.where 字段名 not in (值1,值2,...)
4.匹配空、非空
1.空:where name is null
2.非空:where name is not null
3.注意
1.NILL:空值,只能用is或is not取匹配
2.“ ” : 空字符串,用 = 或 != 去匹配
4.模糊比较
1.where 字段名 like 表达式
2.表达式
1._ : 匹配单个字符
2.% :匹配0到多个字符
NULL不会被统计
6.SQL查询:
1语法顺序:
3.select ... 聚合函数 from 表名
1.where
2.group by...
4.having ...
5.order by ...
6.limit ...;
2.order by
1.给出查询结果进行排序
2...order by 字段名 升序/降序
升序:ASC(默认排序方式)
降序:DESC
3.limit(永远放在SQL语句的最后)
1.作用:显示查询记录的个数
2.用法
limit n 显示n条记录
limit m,n
m表示 从m+1条记录开始显示 显示n条记录
limit 2,3 显示第3,4,5条记录
3.分页
每页显示5条记录,显示第4页内容
第1页:limit 0,5 #1,2,3,4,5
第2页:limit 5,5
第3页:limit 10,5
第4页:limit 15,5
每页显示n条记录,显示第m页:
limit(m-1)*n,n
4.聚合函数
avg(字段名):求该字段的平均值
sum(字段名):求和
max(字段名):最大值
min(字段名):最小值
count(字段名):统计该字段的个数
练习库:
create database MOSHOU;
use MOSHOU;
create table hero(
id int,
name char(15),
sex enum("男","女"),
country char(10)
)default charset=utf8;
insert into hero values
(1,"曹操","男","魏国"),
(2,"小乔","女","吴国"),
(3,"诸葛亮","男","蜀国"),
(4,"貂蝉","女","东汉"),
(5,"赵子龙","男","蜀国"),
(6,"魏延","男","蜀国"); use MOSHOU;
create table sanguo(
id int,
name char(20),
gongji int,
fangyu tinyint unsigned,
sex enum("男","女"),
country varchar(20)
)default charset=utf8;
insert into sanguo values
(1,'诸葛亮',120,20,'男','蜀国'),
(2,'司马懿',119,25,'男','魏国'),
(3,'关羽',188,60,'男','蜀国'),
(4,'赵云',200,66,'男','魏国'),
(5,'孙权',110,20,'男','吴国'),
(6,'貂蝉',666,10,'女','魏国'),
(7,null,1000,99,'男','蜀国'),
(8,'',1005,88,'女','蜀国');
练习
1、创建库 studb2
2、在库中创建表 t1 ,字段有3个:name、age、phnumber
3、查看表结构
4、在表中第一列添加一个 id 字段
5、把 phnumber 的数据类型改为 bigint
6、在表中最后一列添加一个字段 address
7、删除表中的 age 字段
8、查看表结构
答案:
use studb2;
create table t1(
name char(20),
age tinyint unsigned,
phnumber char(11)
);
desc t1;
alter table t1 add id int first;
alter table t1 modify phnumber bigint;
alter table t1 add address varchar(50);
alter table t1 drop age;
desc t1;
练习
1、在表中插入3条记录
2、查找2018年7月2日有哪些用户充值了
3、查找2018年7月份充值的信息
4、查找7月30日10:00-12:00充值的信息
答案:
insert into t7 values
(3,"小昭",19000520,3000,20180630000000),
(4,"赵敏",19000521,4000,20180702000000),
(5,"周芷若",19010522,3500,20180702100000);
select * from t7 where date(shijian)="2018-07-02";
select * from t7
where
date(shijian)>="2018-07-01" and date(shijian)<="2018-07-31";
select * from t7
where
date(shijian)="2018-07-31" and
time(shijian)>="10:00:00" and
time(shijian)<="12:00:00";
练习
1、查询1天以内的记录
2、查询1年以前的记录
3、查询1天以前,3天以内的记录
答案:
select * from t7
where shijian > (now()-interval 1 day);
select * from t7
where shijian < (now()-interval 1 year);
select * from t7
where
shijian < (now()-interval 1 day) and
shijian > (now()-interval 3 day);
练习(表hero)
1、查找所有蜀国人的信息
2、查找所有女英雄的姓名、性别和国家
3、把id为2的记录改为典韦,性别男,国家魏国
4、删除所有蜀国英雄
5、把貂蝉的国籍改为魏国
6、删除所有表记录
答案:
select * from hero where country="蜀国";
select name,sex,country from hero
where sex="女";
update hero set name="典韦",sex="男",country="魏国" where id=2;
delete from hero where country="蜀国";
update hero set country="魏国"
where name="貂蝉";
delete from hero;
练习
1、找出攻击值高于200的蜀国英雄的名字、攻击力
2、将吴国英雄中攻击值为110的英雄的攻击值改为100,防御力改为60
3、查找蜀国和魏国的英雄信息
答案:
select name as n,gongji as g from sanguo
where gongji>200 and country="蜀国";
update sanguo set gongji=100,fangyu=60
where country="吴国" and gongji=110;
select * from sanguo
where country="蜀国" or country="魏国";
练习
1、查找攻击值100-200的蜀国英雄信息
2、找到蜀国和吴国以外的国家的女英雄信息
3、找到id为1、3或5的蜀国英雄 和 貂蝉的信息
答案:
select * from sanguo
where gongji between 100 and 200 and
country="蜀国";
select * from sanguo
where country not in("蜀国","吴国")
and sex="女";
select * from sanguo
where
(id in(1,3,5) and country="蜀国") or name="貂蝉";
1、在蜀国英雄中,查找防御值倒数第二名至倒数第四名的英雄的记录
2、在蜀国英雄中,查找攻击值前3名且名字不为 NULL 的英雄的姓名、攻击值和国家
答案:
select * from sanguo
where country="蜀国"
order by fangyu asc
limit 1,3;
select name,gongji,country from sanguo
where
country="蜀国" and name is not NULL
order by gongji DESC
limit 3;
1、攻击力最强值是多少
2、统计id 、name 两个字段分别有几条记录
## 空值 NULL 不会被统计,""会被统计
3、计算蜀国英雄的总攻击力
4、统计蜀国英雄中攻击值大于200的英雄的数量
答案:
select max(gongji) from MOSHOU.sanguo;
select count(id),count(name) from sanguo;
select sum(gongji) from MOSHOU.sanguo
where country="蜀国";
select count(*) from MOSHOU.sanguo
where gongji>200 and country="蜀国";
查询变量 show variables1.表字段的操作 1.语法:alter table 表名 执行动作; 2.添加字段(add) alter table 表名 add 字段名 数据类型;(尾插) alter table 表名 add 字段名 数据类型 first;(头插) alter table 表名 add 字段名 数据类型 after 字段名;(指定插入) 3.删除字段(drop) alter table 表名 drop 字段名; 4.修改数据类型(modify) alter table 表名 modify 字段名 新数据类型; 5.重命名(rename) alter table 表名 rename 表名; 字符类型 1.字符类型宽度与数值类型宽度的区别 1.数值类型宽度为显示宽度,只用于select查询显示 占用储存无关,可用zerofill查看效果2.枚举类型 1.单选(enum):字段名 enum(值1,值2...); 2.多选(set):字段名 set(值1,值2...); (多项放在一个字符串内用,号隔开) 3.日期时间类型 1.date:“YYYY-MM-DD” 2.time:“HH:MM:SS” 3.datetime:“YYYY-MM-DD HH:MM:SS” 4.timestamp:“YYYY-MM-DD HH:MM:SS” 5.datetime:不给值默认返回Null timestamp:不给值默认返回系统时间
3. 日期时间函数 1.now() 返回服务器当前的时间 2.curdate() 返回当前时期 3.curtime() 返回当前日期 4.year(date) 返回指定时间的年份 5.date(date) 返回指定时间的日期 6.time(date) 返回指定时间的时间4.日期时间运算 1.语法格式 select * from 表名 where 字段名 运算符(时间-interval 时间间隔单位); 时间间隔单位: 1 day | 2hour | 1 minute | 2year | month
5.表记录管理 1.删除表记录 1.delete from 表名 where 条件; 注意: 如果不加where条件,所有记录全部清空 2.更改表记录 1.update 表名 set 字段1=值1,字段名2=值2,... where 条件 注意: 如果不加where条件,所有记录全部更改 3.运算符操作 1.数值比较/字符比较 1.数值比较: = != > >= < <= 2.字符比较: = != 2.逻辑比较 1.and 2.or 3.范围内比较 1.where 字段名between 值1 and 值2 2.where 字段名 in(值1,值2,....) 3.where 字段名 not in (值1,值2,...)
4.匹配空、非空 1.空:where name is null 2.非空:where name is not null 4.注意 1.NILL:空值,只能用is或is not取匹配 2.“” : 空字符串,用 = 或 != 去匹配 5.模糊比较 1.where 字段名 like 表达式 2.表达式 1._ : 匹配单个字符 2.% :匹配0到多个字符 NULL不会被统计5.SQL查询: 3.select ... 聚合函数 from 表名 1.where 2.group by... 4.having ... 5.order by ... 6.limit ...; 2.order by 1.给出查询结果进行排序 2...order by 字段名 升序/降序 升序:ASC(默认排序方式) 降序:DESC 3.limit(永远放在SQL语句的最后) 1.作用:显示显示查询记录的个数 2.用法 limit n 显示n条记录 limit m,n m表示 从m+1条记录开始显示 显示n条记录 limit 2,3 显示第3,4,5条记录 4.分页 每页显示5条记录,显示第4页内容 第1页:limit 0,5 #1,2,3,4,5 第2页:limit 5,5 第3页:limit 10,5 第4页:limit 15,5 每页显示n条记录,显示第m页: limit(m-1)*n,n4.集合函数 1.分类 avg(字段名):求该字段的平均值 sum(字段名):求和 max(字段名):最大值 min(字段名):最小值 count(字段名):统计该字段的个数
Python全栈 MySQL 数据库 (表字段增、删、改、查、函数)的更多相关文章
- Python全栈 MySQL 数据库 (引擎、事物、pymysql模块、orm)
ParisGabriel 每天坚持手写 一天一篇 决定坚持几年 为了梦想为了信仰 开局一张图 存储引擎(处理表的处理器) 基本操作: ...
- python全栈开发day62-两表操作增删改查,外键,if else模板语法
一.今日内容总结: day62 内容回顾: 1. django有关所有命令: pip install django==1.11.14 django-admin startproject 项目名称 cd ...
- Python全栈 MySQL 数据库(SQL命令大全、MySQL 、Python调用)
为了梦想与了信仰 开局一张图 主要三个方面: 1.Linux终端命令 2.MySQL语句 3.Python调用 先删库 再跑路..... ...
- Python全栈 MySQL 数据库 (索引、数据导入、导出)
ParisGabriel 每天坚持手写 一天一篇 决定坚持几年 为了梦想为了信仰 开局一张图 表字段重命名(change) alter table 表名 ...
- Django(十)模型:django模型类对数据库的:增/删/改/查、自关联、管理器、元选项(指定表名)
一.插入.更新和删除 调用一个模型类对象的save方法的时候就可以实现对模型类对应数据表的插入和更新. 调用一个模型类对象的delete方法的时候就可以实现对模型类对应数据表数据的删除. 二.自关联 ...
- Python全栈 MySQL 数据库 (简述 、安装、基本命令)
ParisGabriel 每天坚持手写 一天一篇 决定坚持几年 为了梦想为了信仰 开局一张图 一个月的python已经结束了 下面就是数据库了 先说M ...
- Python全栈 MySQL 数据库 (SQL查询、备份、恢复、授权)
ParisGabriel 每天坚持手写 一天一篇 决定坚持几年 为了梦想为了信仰 开局一张图 今天接着昨天的说 索引有4种: 普通 索引 :ind ...
- django单表操作 增 删 改 查
一.实现:增.删.改.查 1.获取所有数据显示在页面上 model.Classes.object.all(),拿到数据后,渲染给前端;前端通过for循环的方式,取出数据. 目的:通过classes(班 ...
- 怎样从C#中打开数据库并进行 增 删 改 查 操作
首先 在C#中引用数据库的操作! (因为我们用的是SQLserver数据库,所以是SqlClient) using System.Data.SqlClient; 1:要实现对数据库的操作,我们必须先登 ...
随机推荐
- Android(java)学习笔记68:使用proguard混淆android代码
1. 当前是有些工具比如apktool,dextojar等是可以对我们android安装包进行反编译,获得源码的.为了减少被别人破解,导致源码泄露,程序被别人盗取代码,等等.我们需要对代码进行混淆,a ...
- Math.random()随机生成x~y间的数字
JS如何随机产生数字呢?这就用到了Math.random()方法,它能够随机产生0~1间的数字,这个数可能为0,但会小于1. 那么,如果我想要大于等于1小于10之间的随机整数呢?需要分为以下几步: 1 ...
- python title() upper() lower() 以首字母大写的方式显示每个单词/将字符串改为全部大写或全部小写
以首字母大写的方式显示每个单词 [root@chenbj python]# cat name.py #!/usr/bin/env python # _*_ coding:utf-8 _*_ name ...
- CUDA memory
原文链接 CUDA存储器类型: 每个线程拥有自己的register and loacal memory; 每个线程块拥有一块shared memory; 所有线程都可以访问global memory; ...
- 第46章 DCMI—OV5640摄像头—零死角玩转STM32-F429系列
第46章 DCMI—OV5640摄像头 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com ...
- Spring详解篇之 AOP面向切面编程
一.概述 Aop(aspect oriented programming面向切面编程),是spring框架的另一个特征.AOP包括切面.连接点.通知(advice).切入点(pointCut) . 1 ...
- Chrome 调试工具的一些高阶功能
Chrome 内置抓包工具 Block requests 截取长图 代码的覆盖率分析 Make site better Chrome 内置抓包工具 在浏览器地址栏输入chrome://net-inte ...
- BFS练习-POJ.2386
Lake Counting Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 35122 Accepted: 17437 Descr ...
- vim指令,快捷键汇总
Vim 命令.操作.快捷键全集 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vi ...
- redis 面试题
https://www.cnblogs.com/ftl1012/p/redisExam.html 1. 使用Redis有哪些好处? (1) 速度快,因为数据存在内存中,类似于HashMap,HashM ...