一:连接

  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数据库操作-mysql数据库的更多相关文章

  1. python 之操作mysql 数据库实例

    对于python操作mysql 数据库,具体的步骤应为: 1. 连接上mysql host 端口号 数据库 账号 密码2. 建立游标3. 执行sql(注意,如果是update,insert,delet ...

  2. Python之 操作 MySQL 数据库

    什么是MySQLdb? MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的. 安装 Pytho ...

  3. python实现操作mysql数据库

    实现代码如下: #mysql数据库的查询等 import pymysql from xctest_tools.xc_ReadFile.get_ReadTxt import * class mysql: ...

  4. python 安装操作 MySQL 数据库.

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

  5. Python之操作MySQL数据库

      一.操作步骤 1.导入pymysql模块 2.建立连接(ip.用户名.密码.数据库名.端口号.字符集.(自动提交参数)) 3.建立游标 4.执行sql语句 (4.需要提交的提交) 5.关闭游标 6 ...

  6. python 连接操作mysql数据库

    开发数据库程序流程: 1.创建connection对象,获取cursor 2.使用cursor执行SQL 3.使用cursor获取数据.判断执行状态 4.提交事务 或者 回滚事务 import: 数据 ...

  7. python,java操作mysql数据库,数据引擎设置为myisam时能够插入数据,转为innodb时无法插入数据

    今天想给数据库换一个数据引擎,mysiam转为 innodb 结果 python 插入数据时失败,但是自增id值是存在的, 换回mysiam后,又可以插入了~~ 想换php插入试试,结果php数据引擎 ...

  8. python 3 操作mysql数据库的方法

    参考:http://www.cnblogs.com/txw1958/archive/2012/07/22/python3-mysql.html http://www.jb51.net/article/ ...

  9. python接口自动化(三十八)-python操作mysql数据库(详解)

    简介 现在的招聘要求对QA人员的要求越来越高,测试的一些基础知识就不必说了,来说测试知识以外的,会不会一门或者多门开发与语言,能不能读懂代码,会不会Linux,会不会搭建测试系统,会不会常用的数据库, ...

随机推荐

  1. CruiseControl.NET配置

    CruiseControl.NET简介 CruiseControl.NET是.net平台下,一个开源的自动化持续集成工具. 它是一个程序套件,但其核心是一个叫做CruiseControl.NET Se ...

  2. 数据库缓存之Memcache知识点

    Memcache知识点总结: 一.Memcache安装及使用 参考地址:https://www.jb51.net/article/66525.htm 1.将下载的Memcache安装文件放到某盘下,如 ...

  3. 模拟赛DAY1 T1大美江湖

    这就是一个模拟题,注意1234分别对应左右上下横坐标和纵坐标的判断就好了 题解: 需要注意的是,向上取整ceil函数是对于一个double值返回一个double值,也就是说在ceil里面的类型一定要是 ...

  4. format和urlencode的使用对比

    一:format的基本语法使用 基本语法是通过 {} 和 : 来代替以前的 % . format 函数可以接受不限个参数,位置可以不按顺序. 例如: >>>"{} {}&q ...

  5. 如何快速查找到多个字典中的公共键(Key)---Python数据结构与算法相关问题与解决技巧

    如何快速查找到多个字典中的公共键(Key)-?   实际案例: 西班牙足球甲级联赛,每轮球员进球统计: 第1轮: { '苏亚雷斯':1,'梅西':2,'本泽马':1,...} 第2轮: { '苏亚雷斯 ...

  6. Jmeter之Json表达式关联

    Jmeter使用中,通常用的最多的是正则表达式和Xpath表达式,但是现在大多数网站都用的Json返回数据,而且数据还特长的那种,作为合格的测试人员也要适应技术潮流发展,下面介绍利用Json Extr ...

  7. Charls

    1.连接设备 charles--proxy--proxy setting 设置端口号 charles--proxy--ssl proxy setting 设置代理域名 [pc端] charles--p ...

  8. Value Iteration Algorithm for MDP

    Value-Iteration Algorithm: For each iteration k+1: a. calculate the optimal state-value function for ...

  9. LeNet-5详解

    一.前言 LeNet-5出自论文Gradient-Based Learning Applied to Document Recognition,是一种用于手写体字符识别的非常高效的卷积神经网络. 本文 ...

  10. 解决:”ssh-keygen 不是内部或外部命令“ 的问题

    相信大家在 码云生成/添加SSH公钥的过程中遇到一个比较常见的问题, 在cmd,命令行输入 ssh-keygen -t rsa -C "xxxxx@xxxxx.com" ; xxx ...