python的数据库_python数据库操作-mysql数据库

一:连接

1:本地连接

mysql -u用户名 -p密码

2:连接远程服务器

mysql -u用户名 -p密码 -hip地址 -P端口号 线下修改远程服务端上部署的mysql服务器

二:创建数据库

create database 名字 utf8;

三:显示数据库

show databases;

四:使用数据库

use 数据库名;

五:删除数据库

drop database if exists 数据库名

六:查看数据库的结构

show create database 数据库名

七:从外部导入sql文件

导入备份的文本文件:说白了就是把文本文件重新执行一遍。

例如从桌面导入sql.sql文件

source C:\Users\Administrator\Desktop\sql.sql 正确导入桌面的sql语句,并执行里面的创库语句和显示所有库的命令。

八:创建数据表

create table class(id int primary key auto_increment,cname varchar(30),des varchar(100)) charset utf8;

需要说明:表的编码格式不指定,会默认继承数据库的编码格式。

九:查看表的结构

desc 表名 直接查看表的结构

十:删除表

drop table if exists class 删除的原因是,上面的建表语句中,cname字段都是可以为null的,这与真实情况不符。

create table class(id int primary key auto_increment,cname varchar(30) not null,des varchar(100) null) charset utf8;

十一:表中添加数据

方式一: insert into class set cname="后盾人",des="这是一个学习网站"; 插入一组值

方式二: insert into class(cname,description) values("mysql","关系型数据库"),("js","前端开发语言"),("python","胶水语言"); 可插入一组值,也可多组值。

# 其他的插入方式 TODO

十二:根据其他表结构生成相同的表结构

create table copyclass like class; 根据class的表结构创建一个copyclass的表。

十三:两个相同结构的表,数据互传。

insert into copyclass select * from class; 全部字段都复制过来

insert into copyclass(cname) select cname from class; 仅仅复制cname字段。

十三:复制一个表的结构和数据的形式创建表。

create table testclass select * from class;

十四:查询的基本方式

select * from class; 全部字段查询

select id,cname from class; 部分字段查询

select cname,id from class; 部分字段查询 说明:查询显示的顺序和select 后面的字段顺序排列一致。

特殊情况:假如多表联合查询,每个表都有id字段,都要显示怎么办。不能都显示成id吧,因此可以给选择的字段进行命名,显示时候按照命名显示。

select id as classs_id,cname from class;

十五:条件查询 where

select * from class where id>2; 显示id>2的字段信息

select * from class where cname="mysql";显示字段名字为mysql的字段信息。

select * from class where description like "%水%";显示描述中含有水这个字信息的所有字段。 where 字段 like 模糊查询条件。

select * from class where cname like "p%"; 显示名字以p开头的所有字段。 %是like查询中的占位符,表示0个或多个任意字符。

select * from class where cname not like "p%";显示名字不以p开头的所有字段。 not like 否定形式

select * from class where cname not like "p%" and id>2; 显示名字不以p开头且id>2的字段信息and 可以连接 条件查询的条件1和条件2,表示并且

十六:条件查询

先准备一个表:

create table stu(id int primary key auto_increment,sname char(10),class_id int default null,age smallint not null);

insert into stu(sname,class_id,age) values("刘德华",1,18),("张学友",2,20),("郭富城",1,22),("黎明",null,24),("陈奕迅",3,26);

1:查询学生名字包含张或者班级为2班的学生。

select * from stu where sname like "张" or class_id = 2; or 可以连接 条件查询的条件1和条件2,表示或

2:查询目前一共有几个班

select class_id from stu; 显示结果又重复,去重用 distinct

select distinct class_id from stu; 将class_id的字段进行去重。

3:查看年龄在20-24的所有学生。

select * from stu where age>20 and age <24; 不包含两端的值

select * from stu where age between 20 and 24; 包含两端的值

4:查看班级为2或班级为3的所有学生

select * from stu where class_id =2 or class_id =3;

select * from stu where class_id in (2,3);

十七:条件查询:处理null的技巧

1:要查询没有班级号码为null的所有学生

select * from stu where class_id = 'null"; 得不到结果

select * from stu where class_id = null; 得不到结果

null的比较:需要使用 is 和 is not 进行判断

select * from stu where class_id is null;

select * from stu where class_id is not null;

2:查询所有学生,如果有班级编号,显示班级编号,没有显示,无。

select sname,if(class_id,class_id,"无") from stu;

select sname,if(class_id,class_id,"无") as class_id from stu;

select sname,ifnull(class_id,"无") as class_id from stu;

# TODO if函数的作用

十八:排序操作

select sname,class_id from stu order by age desc; 从大到小排列

select sname,age from stu order by age asc; 从小到大排列

select sname,age,class_id from stu order by class_id desc;

1749518-20191027094918997-1656859610.png

# 同时要对班级相同的年龄从大到小排序,需要进行两次排序,先排序班级,在排序年龄。

select sname,age,class_id from stu order by class_id desc age desc;

1749518-20191027094954052-1417998100.png

order by 条件1,条件2,条件3 优先级是条件1 > 条件2 > 条件3

找到班上最后报名的学生:

select * from stu order by id desc; 从所有的里面找,第一个

select * from stu order by id desc limit 1; 从所有的里面,只显示第一个。 限制显示条数 limit

1749518-20191027095547440-684182182.png

注意:limit(a,b) a---从哪里开始取 b---取几个。

select * from stu where class_id=2 and age is not null order by age asc limit 1;

目的:是为了查找二班中年龄最小的一个人。但是存在隐患,要是班上有两个人,年龄都最小,那么就会漏过一个人。

1749518-20191027100546458-1339963899.png

因此需要借助后面更加复杂的子查询语句进行限制,后面会讲到。下面的语句查询出来更加准确。

select * from stu where age = (select age from stu where class_id =2 and age is not null order by age asc limit 1);

1749518-20191027101149028-629708805.png

十九:更新表结构的使用技巧

1749518-20191027101500161-1123499462.png

假如:要将上表中,班级class_id为null的改为class_id=2

update stu set class_id = 2 where class_id is null; update ......set........

1749518-20191027102424890-1780652739.png

需求:1班中年龄小于20的给年龄增加10岁。

update stu set age=age+10 where age<20 and class_id=1;

1749518-20191027103406556-779930380.png

二十:删除操作

delete from stu where age < 30 and class_id is null;

delete from stu order by id desc limit 2; 将id最大的两个从表中删除。

1749518-20191027104037183-1790314801.png

二十一:表的维护-修改表名

方式一:alter table stu rename stus;

1749518-20191027224809305-1777687143.png

方式二:rename table stus to stu;

1749518-20191027224909800-1200347180.png

二十二:修改表的字符集和查看表的建表结构

1. 修改表的字符集

alter table stu charset "gbk";

1749518-20191027225330329-1821787377.png

2. 查看表的建表信息

show create table stu; 注意:desc stu 是查看表的字段信息,而不是建表信息。

二十三:删除表中的所有数据

truncate stu;

1749518-20191027225739792-941009011.png

二十四:删除表

drop table if exists stu;

1749518-20191027230003598-1062553642.png

二十五:修改表的字段类型

1749518-20191028225358817-1582314169.png

需求:将cname的type从varchar(30)改为varchar(50) 不能为空

alter table class modify cname varchar(50) not null;

1749518-20191028225616315-1829765879.png

alter 是修改表的关键字 搭配 modify rename change 等方法使用

需求:将cname改为class_name char(50) 可以为空 默认是高级班

alter table class change cname class_name char(30) null default "高级班";

1749518-20191028230320571-1161040444.png

需求:给表class添加一个字段stu_num,int(30) not null default 30

alter talbe class add stu_num int(30) not null default 30;

1749518-20191028230856123-1509836590.png

需求:删除class表中的stu_num字段

alter table 表明 drop 字段名

1749518-20191104155448940-135677941.png

二十六:待完成

二十七:数据类型

1.字符串类型

1749518-20191105152106274-442348737.png

2.字符集

字符串:二进制和非二进制类型,二进制存储视频和图片,非二进制存储文本内容,非二进制文本受字符集和校对规则影响。

字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同。常用的字符集有GBK、BIG5、UTF8。

UTF8字符包含文字内容更广,如韩文、日文、德文兼容度更高,也是推荐使用的字符集。

show character set; 查看服务器支持的字符集

默认:表不设置字符集继承数据库,字段不设置字符集继承表。

3.校对规则

1749518-20191106134540149-1684856426.png

数据库支持的字符集,校对规则是字符集内,字符比较和排序的一套规则,_ci结尾的是对大小写不敏感,_bin结尾的是不区分大小写。

# TODO 怎么更改字段的校对规则,区分大小写。

4.常用字符串处理函数

字符串截断函数

1749518-20191112220358480-1390651040.png

需求:将http改为http:

1749518-20191112220458203-1500607022.png

结果:

1749518-20191112220546988-1827103711.png

update class set cname = concat("http:",mid(cname,5)) where id >=5;

获取字符的区间值

1749518-20191112221424878-2141087084.png

获取字符的长度

1749518-20191112221628346-1120156250.png

拼接两个值为一个值 concat函数

1749518-20191112222510230-1265949049.png

需求:取一个字段的内容,如果内容超过八个字符,后面有.....代替

1749518-20191112223155006-2099710128.png

5.正则表达式在mysql中的使用技巧

需求:cname中第二个字母是y的数据 select * from class where cname like "_y%"; _表示占位符,一个任意的字符,y后面必须加%,站位符,表示0或者多个。

1749518-20191112223654548-2125859208.png

需求:描述字段中包含语言这两个字的数据

1749518-20191112224012354-781241753.png

需求:将所有描述字段中包含语言的数据,都加上后盾人这个三个字。

1749518-20191112230005131-2139367233.png

6.数值类型

整型

1749518-20191114091218454-493045600.png

取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。

m的含义不是允许字段的长度,而是显示长度,在为字段设置 zerofill 时有效。

需求:添加有前导零的字段

1749518-20191114092838990-1160484399.png

浮点型

1749518-20191114093054802-1453796103.png

7.ENUM/SET

8.

二十八:时间日期

1.DBeaver

2.数据类型

3.创建字段

4.格式化

5.时间戳

6.常用函数

7.基本查询

8.时间计算

二十九:摘要和排序

1.order

2.count

3.min/max

4.sum/avg

5.distinct

6.group

三十:多表攻略

1.多表攻略

2.表关联

3.笛卡尔积

4.inner

5.outer join

6.self join

7.多对多

8.union

9.多表删除

三十一:事务出来

1.事务处理

2.存储引擎

3.提交模式

4.程序控制

5.事务隔离

三十二:锁机制

1.锁机制

2.存储引擎

3.事务处理

4.悲观锁

5.乐观锁

6.表锁机制

三十三:外键约束

1.外键约束

2.创建外键

3.选项说明

4.创建动作

# group_by 一般和聚合函数一起使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552230.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

svn如何取消某个文件的版本管理_微服务架构如何统一管理工程配置文件

面临的问题在分布式微服务架构系统中&#xff0c;业务和系统功能被拆分成了几十甚至上百个服务实例。每个服务实例就是以往单体应用时代的一个独立部署的工程。每个工程都需要自己独立的启动加载和运行时配置文件。在项目开发的过程中&#xff0c;我们不可避免的会涉及到配置文…

linux 线程_Linux 多线程编程(不限Linux)

前言线程&#xff1f;为什么有了进程还需要线程呢&#xff0c;他们有什么区别&#xff1f;使用线程有什么优势呢&#xff1f;还有多线程编程的一些细节问题&#xff0c;如线程之间怎样同步、互斥&#xff0c;这些东西将在本文中介绍。我在某QQ群里见到这样一道面试题&#xff1…

springboot导包显示不存在_基础篇:Spring Boot入门体验(图文教程)

优质文章&#xff0c;及时送达什么是 Spring Boot&#xff1f;Spring Boot 是由 Pivotal 团队提供的全新框架。Spring Boot 是所有基于 Spring Framework 5.0 开发的项目的起点。Spring Boot 的设计是为了让你尽可能快的跑起来 Spring 应用程序并且尽可能减少你的配置文件。设计…

plsql查看用户权限_权限功能

几乎所有的后台都会有权限这个功能&#xff0c;权限也是后台管理系统很重要的一项功能&#xff0c;可以提高系统的安全性&#xff0c;也可以很好的使每个操作人员清晰地找到自己所对应的功能。一般来说&#xff0c;系统中只有最高权限、或者这只权限的管理员可以分发设置其余权…

计算机教学论研究生,课程与教学论(计算机)专业硕士学位研究生培养方案

课程与教学论(计算机)专业硕士学位研究生培养方案一、学科专业简介计算机教学论以教育科学的基本理论为指导&#xff0c;探索计算机教育的的基本理论和实践问题&#xff0c;探讨现代教育理论视野中的计算机课程与教育改革。研究内容包括&#xff1a;计算机专业课程设置和教材建…

七度空间338多少钱一包_2020黄果树香烟一包多少钱 黄果树香烟价格表图排行榜...

阅读本文前&#xff0c;请您先点击上面的“蓝色字体”&#xff0c;再点击“关注”&#xff0c;这样您就可以继续免费收到文章了。每天都会有分享&#xff0c;都是免费订阅&#xff0c;请您放心关注。注图文来源网络&#xff0c;侵删 …

eslint vscode 自动格式化_使用 VSCode 的必备三大神器,这才是开发 Vue 的真香解决方案...

现在用 VSCode 开发 Vue.js 应用几乎已经是前端的标配了&#xff0c;但很多时候我们看到的代码混乱不堪&#xff0c;作为一个前端工程师&#xff0c;单引号双引号乱用&#xff0c;一段有分号一段没有分号&#xff0c;有的地方有逗号有的地方没有逗号&#xff0c;空格回车都对不…

eclipse复制代码连接数据库404_推荐一款免费的数据库管理工具,比Navicat还要好用,功能还很强大...

作者&#xff1a;不剪发的Tony老师blog.csdn.net/horses/article/details/89683422DBeaver 是一个基于 Java 开发&#xff0c;免费开源的通用数据库管理和开发工具&#xff0c;使用非常友好的 ASL 协议。可以通过官方网站或者 Github 进行下载。由于 DBeaver 基于 Java 开发&am…

炒菜机器人放食材的顺序_珠江新城有了首家机器人餐厅,40多台机器人提供服务...

大洋网讯 在广州最繁华的CBD珠江新城&#xff0c;历史性有了一家机器人餐厅。这是广州日报全媒体记者昨日获悉的信息。记者赶往其中看见&#xff0c;这家新开的中餐厅看起来与众不同&#xff0c;厨房里没有铛铛的切菜声&#xff0c;没有此起彼伏的传菜声&#xff0c;更没有缭绕…

c++ string类_C++|细说STL string类概貌及底层细节

C语言中的字符串称为C风格字符串&#xff0c;是一个以0结尾的字符数组&#xff0c;string.h库只提供了有限、不甚安全的字符串操作函数。char str[]只能定义编译期确定大小的字符串&#xff0c;而保存在堆内存的动态字符数组却需要考虑释放内存的问题&#xff0c;且想要实现自变…

Python可以调用Gpu吗_python可以开发app吗

python可以开发app吗&#xff1f;python是可以开发app的&#xff0c;例如我们可以使用kivy开发安卓APP&#xff0c;Kivy是一套专门用于跨平台快速应用开发的开源框架&#xff0c;使用Python和Cython编写&#xff0c;对于多点触控有着非常良好的支持&#xff0c;不仅能让开发者快…

kubectl查看node状态_适用于初学者的基本 kubectl 和 Helm 命令 | Linux 中国

去杂货店“采购”这些命令&#xff0c;你需要用这些 Kubernetes 工具来入门。-- Jessica Cherry去杂货店“采购”这些命令&#xff0c;你需要用这些 Kubernetes 工具来入门。最近&#xff0c;我丈夫告诉我他即将要去参加一个工作面试&#xff0c;面试时他需要在计算机上运行一些…

pycharm pyqt5 pyrrc_编程基础 | Pycharm安装、配置、快捷键

Pycharm可以去官网下载Pycharm的安装激活jar包的目的就是让截获截止时间并骗过pycharm;将jar包放入pycharm在你本地的安装目录bin下。并且修改两个以 vmoptions为结尾的启动文件如图所示:并且在两个文件后追加 -javaagent:D:devAppPyCharm 2017.3.2inJetbrainsCrack-2.6.10-rel…

php的web表单系统源码毕设_从业十多年看了千百套Java毕设项目,整理出100个精品!免费分享...

加班无数个昼夜看了千百套Java毕设项目&#xff0c;发现这100个精品&#xff01;今天免费分享给大家&#xff01;再给大家推荐一条由浅入深的JAVA学习路径&#xff0c;首先完成 Java基础、JDK、JDBC、正则表达式等基础实验&#xff0c;然后进阶到 J2SE 和 SSH 框架学习。最后再…

xbox360无线手柄接收器驱动_八位堂USB 无线接收器让手柄不闲置,无线畅玩各平台游戏...

遥想儿时每逢周末放假&#xff0c;得闲便会打上一下午的游戏。富有活跃想象力的游戏画面和不断操作游戏手柄发出的愉悦打击声&#xff0c;总会令人感到如此如醉。长大了&#xff0c;随着科技创新进步与物质生活的丰富&#xff0c;我们都会向往童年时游戏带来的满足愉快之情&…

在scrapy中parse函数里面xpath的内容打印不出来_如何正确的使用Scrapy ?

本节是 《Python爬虫从入门到进阶》课程中的一节&#xff0c;课程购买链接(PC访问需要微信扫码) &#xff0c;目前已更新80% 课程购买课程请扫码&#xff1a;Scrapy是一个为了爬取网站数据&#xff0c;提取结构性数据而编写的应用框架。只需要编写很少的代码就能实现抓取功能&a…

绳索受力分析的软件_【硕士论文】供热管网管道支架载荷分析与优化设计

摘 要改革开放后我国经济快速发展&#xff0c;随着集中供热事业的扩大&#xff0c;集中供暖越来越受到广大民众的欢迎&#xff0c;居民冬季用热为主的集中供暖面积在连年递增&#xff0c;已经成为主要一种供暖方式。集中供热作为城市公共服务功能中重要的一项工作&#xff0c;对…

python-docx 如何获取当前字号_餐饮老字号迈上“云端”

原标题&#xff1a;餐饮老字号迈上“云端”老字号陈麻婆豆腐旗舰店。 杨予頔 摄中新网成都10月31日电 (单鹏)临近中午&#xff0c;成都餐饮老字号“钟水饺”文殊院店的前台站满身穿黄色和蓝色服装的“外卖小哥”&#xff0c;拿到打包好的钟水饺后&#xff0c;他们急匆匆地转身…

进入hbase命令_Zookeeper、Hbase安装部署

zookeeper安装与配置使用xftp将压缩包传入/soft中创建zookeeper数据存放目录mkdir /soft/zookeeperchmod 766 /soft/zookeeper分别在三台服务上面依次执行 echo id > /var/zookeeper/myid 命令创建zookeeper编号的myid文件echo 1 > /soft/zookeeper/myidecho 2 > /sof…

c++new时赋初值_C高级编程精髓之内存管理,万千码农踩过的雷,大神带你走出雷区...

今天给大家分享C高级编程精华片之内存管理——欢迎跟大家一起踏进内存这片雷区&#xff0c;然后带大家从雷区中走出来&#xff01;程序员们经常编写内存管理程序&#xff0c;往往提心吊胆。如果不想触雷&#xff0c;唯一的解决办法就是发现所有潜伏的地雷并且排除它们&#xff…