mysql与pymysql

mysql基本命令脚本

关系型数据库

1.支持复杂的sql语句查询

2.支持事务

非关系型数据库

1.NQSQL不需要经过SQL层的处理

2.可扩展性,因为是键值对的形式所以水平扩展非常容易

事务

事务是逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部失败,这个特性就是事务

注意:MYSQL支持事务,但是要求必须是innoDB引擎

解决这个问题: mysql的事务解决这个问题,因为mysql的事务特性,要求这组操作,要不全都成功,要不全都失败,这样就避免了某个操作成功某个操作失败。利于数据的安全

如何使用:

1.在执行sql语句之前,我们要开启事务start transaction; 2.正常执行我们的sql语句; 3.当sql语句执行完毕,存在2种情况 第一种;全部成功,我们讲sql语句对数据库造成的影响提交到数据库中,commit 第二种;某些sql语句失败,我们执行rollback(回滚),将对数据库的操作赶紧撤销

一 进入到数据库

net start mysql57

-h host 主机名

-u user 用户名

-p password 密码

启动数据库

mysql -hlocalhost -uroot -p

注:root超级管理员 可以创建和管理其他的用户,root用户不可以远程登录

二 对于库的操作

CREATE 创建

DROP 删除

ALTER 修改

SHOW 展示

(1) 查看所有的数据库

show databases;

(2) 创建数据库

create database 库名;

create database if not exists 库名; 防止创建同名的库出现错误

(3) 查看创库语句

show create database 库名;

(4)使用数据库(进入到当前的库中)

use 库名

(5)查看当前所在的数据库

select database

(6)数据库的删除

drop database 库名

(7)创建数据库并设置字符集

create database 库名 character set utf8;

(8)创建数据库 并设置字符集

create database 小杰 character 字符集;

三 对于表的操作

0.查看所有的表

show tables;

1.创建表

mysql> create table if not exists fs(
    -> id int unsigned primary key auto_increment,
    -> username varchar(20),
    -> sex tinyint,
    -> age tinyint unsigned,
    -> info varchar(100)
    -> );
复制代码

2.查看表结构

desc 表名;

mysql> create table if not exists fs(
    -> id int unsigned primary key auto_increment,
    -> username varchar(20),
    -> sex tinyint,
    -> age tinyint unsigned,
    -> info varchar(100)
    -> );
复制代码

3.删除表中的某个字段

alter table 表名 drop 字段名;

4.删除表

drop table if exists 表名;删除表如果该表存在

5.增加表中的数据

insert into 表名 字段名 values(值);

6.查看表数据

select * from 表名;

7.查看创表语句

show create table 表名(\G);(竖着查看)

8.重命名表名

rename table 原表名 to 新表名;

9.修改表结构

alter table 表名 add|change|drop 字段名 (类型);

四 MYSQL表的创建

字段类型

(1) 整形

类型 大小 范围 无符号范围 用途 tinyint 1字节 -128,127 0,255 小整数值 smallint 2字节 -32768,32767 0,65535 大整数值 int 4字节 2-》10位置 4... 10 位的 大整数值 float(m,n) 4个字节 单精度浮点型 double(m,n) 8个字节 双精度浮点型 decimal(m,n) 根据存储的值 小数据值(更加精准) 浮点数中的m代表当前存储的长度 n代表小数的位数 m-n代表整数的位数 超出则报错 整形后面的数字的意义: 整形后面给定数字 并不是限定当前存储值的长度 并没有任何的意义 除非配合可选参数 zerofill 零填充 才有意义 字符串类型后面给定的长度 则是限制当前存储数据的长度 整形默认长度会比本身长度大1,因为是符号位

(2) 字符串类型

char和varchar的相同和不同点 :

char和varchar的存储长度都为0-255

char的执行效率高于varchar

varchar要比 char更节省存储空间

当char存储的值达不到指定的长度时 则使用空来占位

enum和set区别

enum只能选择其中的一个值

set可以选择多个值 多个值使用逗号来隔开

(3) 时间和日期

五 字段约束

unsigned 无符号 正数

只能用于数值类型 不允许出现负数 存储长度会扩大一倍

zerofill 零填充

只能用于数值类型 当指定的位数不足的时候 零填充

default 默认值

如果当前字段没有传值 则值为默认值 (不设定默认值 默认为null)

null 和 not null

默认为null 当不插入值则插入的为null,当设置当前字段为 not null的时候

则该字段必须传值

comment 设置当前字段的说明

auto_increment 自增

注意

SQL 语句以分号作为结束

SQL命令 不区分大小写

数据库的切换使用use

\c 撤销当前命令

\G 竖着查看

当遇到在终端中 不管怎样输入命令都不执行 name查看一下左侧 是否为->

在Windows下 不区分库,表名的大小写 但是在Ubuntu下区分

退出数据库的几种方式

\q exit quit

六 数据操作

1 增

a 全列插入

格式:insert into (表名) values(...);

说明:主键列是自动增长,但是在全列插入时需要占位,通常使用0,插入成功以后以实际数据为准

b.缺省插入

格式:insert into 表名 (字段1,字段2,...) values (...)

c.同时插入多条数据

格式:insert into 表名 values (...),(...),...

2.删

格式:delete from 表名 where 条件;

示例:delete from student where id=4;

注意: !!没有条件是全部删除,慎用;

3改

格式:update 表名 set 字段1=值1,字段2=值2,.... where 条件

示例:update student set age=16 where id = 7;

注意:如果没有条件,是全部字段都修改;

4查

1.基本语法

格式:select * from 表名

说明:from 关键字后面是表名,表示数据来源于这张表

       select 后面写表中的字段名," * " 表示所有字段名,  
       在select 后面字段名,可以使用as为字段名起别名
       这个别名显示在结果集中
       如果要查询多个字段,直接使用逗号分隔
复制代码

示例:select name,age from student; select name as a,age from student;

2.消除重复行

在select后面字段名的前面使用distinct可以消除重复的行

示例:select distinct genger from student

3.条件查询

a.语法: select * from 表名 where 条件;

b.比较运算符

 等于
 大于
 小于
 大于等于
 小于等于
 不等于
复制代码

需求:查询id大于8的所有数据

示例:select * from student where id > 8;

逻辑运算符

and or not

需求;查询id>7的女同学

示例;select * from student where id>7 and gender=0;

d.模糊查询

like %:表示任意多个任意字符 :表示任意一个字符 需求:查询姓习的同学 示例:select * from student where name like "习%"; 示例:select * from student where name like "习";

e.范围查询

in:表示在一个非连续的范围内

between..and...:表示在一个连续的范围内

需求:查询编号为8,10,12的学生

示例:select * from student where id in(8,10,12);

需求;查询编号为6-8的学生

示例; select * from student where id between 6 and 8;

f:空判断

注意:null与" "是不同的

判断空: isnull

判断非空: is not null

需求:查询没有地址的同学 示例;select * from student where address is null

g:优先级

小括号,not 比较运算符,逻辑运算符 and比or优先级高

4.聚合

为了快速得到统计的数据,提供了5个聚合函数

a.   count(*)   表示计算总行数,括号中可以写*和字段名;
b.   max(列)   表示求此列的最大值
c.   min(列)   表示求此列的最小值
d.   sum(列)   表示求此列的和
e.   avg(列)   表示求此列的平均值
复制代码

需求:查询学生总数:

示例:select count(*) from student;

需求:查询女生编号的最大值;

示例:select max(id) from student where gender=0;

需求:查询女生编号的最小值;

示例:select min(id) from student where gender=0;

需求:查询所有学生的年龄和

示例:select sum(age) from student;

需求:查询所有学生的年龄平均值

示例:select avg(age) from student;

5 分组

按照字段分组,表示此字段相同的数据会被放到一个集合中,分组后,只能查询出相同的数据列。对于有差异的数据列,无法显示在结果集中,可以对分组后的数据进行统计,做聚合运算

语法:select 列1,列2,聚合...... from 表名 group by 列1,列2,列3,......

需求:查询男女生总数

示例:select gender,count(*) from student group by gender;

python操作mysql

python操作mysql步骤

import pymysql

(1) 链接mysql数据库

db = pymysql.connect(主机名,用户名,密码,数据库名)

(2) 设置字符编码

db.set_charset('utf8')

(3) 创建游标对象

cursor = db.cursor()

(4) 准备sql语句

sql = '...'

(5) 执行sql语句

cursor.execute(sql)

(6) 获取所有结果集

cuesor.fetchall()

(7) 获取一条结果集

cursor.fetchone()

(8) 获取受影响的行数

cursor.rowcount

(9) 关闭数据库链接

db.close()

pymysql的事务处理

默认开启事物处理

需要提交或者回滚

import pymysql
db = pymysql.connect('127.0.0.1','root','123456','hz03')
db.set_charset('utf8')
cursor = db.cursor()
try:
    sql = 'insert into goods values(null,1,"商品名称",12.1)'
    cursor.execute(sql)
    db.commit()
except:
    db.rollback()
print(cursor.rowcount)
db.close()
复制代码

示例: import pymysql

1.连接mysql数据库

db = pymysql.connect('localhost','root','abcdef','test')

2.设置字符编码

db.set_charset('utf8')

3. 创建游标对象

cursor = db.cursor()

4. 准备sql语句

sql = 'select * from hz03'

5. 执行sql语句

cursor.execute(sql)

6. 获取所有结果集

date = cursor.fetchall() print('结果集为',date)

7. 获取受影响的行数

print('受影响的行数为',cursor.rowcount)

8. 关闭数据库连接

db.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值