一:连接

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;

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

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

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

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

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

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

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

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

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

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

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

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

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

二十:删除操作

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

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

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

方式一:alter table stu rename stus;

方式二:rename table stus to stu;

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

1. 修改表的字符集

alter table stu charset "gbk";

2. 查看表的建表信息

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

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

truncate stu;

二十四:删除表

drop table if exists stu;

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

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

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

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

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

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

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

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

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

alter table 表明 drop 字段名

二十六:待完成

二十七:数据类型

1.字符串类型

2.字符集

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

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

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

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

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

3.校对规则

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

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

4.常用字符串处理函数

字符串截断函数

需求:将http改为http:

结果:

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

获取字符的区间值

获取字符的长度

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

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

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

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

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

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

6.数值类型

整型

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

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

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

浮点型

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 一般和聚合函数一起使用

python的数据库_python数据库操作-mysql数据库相关推荐

  1. python里面装数据库_python 安装操作 MySQL 数据库.

    以ubuntu和mysql为例 检查自己的机器上面有没有安装数据库 1 xpower@xpower-CW65S:~$ sudo service mysql start2 [sudo] xpower 的 ...

  2. python多线程读取数据库数据_python多线程操作MySQL数据库pymysql

    python多线程操作MySQL数据库pymysql 项目中使用多线程操作数据库提示错误:pymysql.err.InterfaceError: (0, "),原因是pymysql的exec ...

  3. vc范例-操作mysql数据库_VC范例-操作MySQL数据库

    VC范例-操作MySQL数据库(转载) 1.Mysql里千万别用varchar类型存储汉字,用text就行了! 2.varchar就可以了.数据库选择character为utf8就好了.存储中文和英文 ...

  4. java操作mysql数据库实例_jdbc操作mysql数据库实例

    本文实例讲述了jdbc操作mysql数据库的方法.分享给大家供大家参考.具体如下: import java.sql.*; import java.sql.drivermanager; import j ...

  5. python连接mysql数据库数据库_python如何连接mysql数据库

    先花点时间来说说一个程序怎么和数据库进行交互 1.和数据库建立连接 2.执行sql语句,接收返回值 3.关闭数据库连接 使用MySQLdb也要遵循上面的几步.让我们一步步的进行. 1.MySQL数据库 ...

  6. python怎么连接mysql数据库_python如何连接mysql数据库

    Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库:GadFly mSQL MySQL PostgreSQL Microsoft SQL Server 2000 Informix ...

  7. python mysqldb_python学习-使用MySQLdb操作mysql数据库

    操作环境为python2.7 centos7 一.MySQLdb的安装与配置 MySQLdb是用于Python连接mysql数据库的接口,它实现了Python数据库api规范2.0. 按照以下方式安装 ...

  8. mysql数据库python基础知识_python学习之Mysql数据库编程基础知识介绍

    在Python网络爬虫中,通常是通过TXT纯文本方式存储,其实也是可以存储在数据库中的:同时在WAMP(Windows.Apache.MySQL.PHP或Python)开发网站中,也可以通过Pytho ...

  9. python使用pymysql包,操作mysql数据库,包括安装及使用(附代码)

    (本文书写的初衷,大家想简单是使用数据库,而不想深入了解时,可以直接使用) 1.安装 # Ubuntu20以上版本适用# 安装python包pip install pymysql# 安装数据库sudo ...

  10. python远程连接mysql数据库_python远程连接MySQL数据库

    python远程连接MySQL数据库 本文实例为大家分享了python远程连接MySQL数据库的具体代码,供大家参考,具体内容如下 连接数据库 这里默认大家都已经配置安装好 MySQL 和 Pytho ...

最新文章

  1. 技术进阶:Kubernetes高级架构与应用状态部署
  2. 精华阅读第 10 期 |解开阿尔法狗(AlphaGo)人工智能的画皮
  3. 第七章httpd.conf主配置文件的详解
  4. 比较简单的c语言编辑器,大佬们,小菜鸟想问一问用vc编译器做简易画图软件
  5. [CVPR2019]:专门为卷积神经网络设计的训练方法:RePr
  6. centos7 通过脚本查询每个应用使用的内存
  7. sklearn特征的提取(上)
  8. 使用HttpHandler解析并展示PDF文档内容
  9. centos7下给bond网卡配置bridge桥接
  10. 支付宝系统架构参考(架构图,最新揭秘)
  11. 台式机win10正确安装Realtek声卡驱动后右下角的小喇叭还是有一个红差,前置耳机无法使用
  12. 17年的回望,18年的期望
  13. lamp技术研发人员的必备
  14. swoole并没有你说的那么好,@韩天峰
  15. Android Studio 类微信界面的制作
  16. python自定义cmap_python自定义cmap_Python matplotlib的使用并自定义colormap的方法
  17. arp攻击实验(一)用一条指令让对方瞬间无法上网
  18. MySQL DBA的修炼与未来,看看老司机们怎么说?
  19. 货代的具体工作是什么?
  20. 二手书网页版mis系统

热门文章

  1. jQuery常用方法总结(转)
  2. 续——《RedHat/Fedora等非ubuntu的Linux系统星空极速netkeeper拨号上网 》
  3. 虚拟的有时比真实的还要好(+奥运杂谈)
  4. k8s边缘节点_边缘计算,如何啃下集群管理这块硬骨头?
  5. python redis 消息队列_Python的Flask框架应用调用Redis队列数据的方法
  6. 如何检查python的库是否安装成功_如何测试redis是否安装成功
  7. 计算机出现假桌面怎么解决办法,win10系统apphangxprocb1引起桌面假死怎么解决【图文】...
  8. Java ArrayList contains()方法及示例
  9. php 文字超出画布,input实现文字超出省略号(代码示例)
  10. linux用ping命令测试网速,linux下面使用命令测试网速