Web开发:django+前端+数据库(6)— Mysql

1.  初识网站

默认编写的静态的效果,如果想要动态就需要用到Web框架的功能。

数据的存储:txt文件、excel文件、专业的软件:数据库管理系统(MySQL、Oracle、SQLServer、DB2...)

2.安装Mysql

网址:https://dev.mysql.com/downloads/mysql/

3.MySQL指令

3.1数据库管理

查看已有的数据库

show databases;

创建数据库

create database 数据库名字 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

删除数据库

drop database 数据库名字;

进入数据库

use 数据库名字;

查看数据库中所有的数据表

show tables;

删除表

drop table 表名称;
3.2  数据表的管理

创建表,是否允许为空需要提前标注上,可以为空就在类型后面加上null,不能为空就在类型后面加上 not null,主键一般用来表示当前行的数据的编号,auto_increment是自增的意思。

create table 表名称(
    列名称 类型,   
    列名称 类型,  
    列名称 类型
)default charset=utf8;
create table tb1(
    id int auto_increment primary key,       --主键(不允许为空,不允许重复)
    name varchar(16) not null,     --不允许为空
    age int default 3        --插入数据时,默认值为3
) default charset=utf8;

查看表行列名、是否为空等信息

desc 表名;

常用数据类型:

tinyint

tinyint — 有符号,取值范围:-128 ~ 127(有正有负)

unsigned — 无符号,取值范围:0 ~255(只有正)

int

int                                 表示有符号,取值范围:-2147483648 ~ 2147483647

int unsigned                 表示无符号,取值范围:0 ~ 4294967295

bigint

有符号,取值范围:-9223372036854775808 ~ 9223372036854775807

无符号,取值范围:0 ~ 18446744073709551615

表示小数的数据类型:float、double、decimal(精准)

语法格式“DECIMAL(M,D)”。

M是数字的最大数(精度),其范围为“1~65”,默认值是10;
D是小数点右侧数字的数目(标度),其范围是“0~30”,但不得超过M。

类型说明 取值范围(MySQL < 3.23) 取值范围(MySQL >= 3.23)

字符串:

char:只给所固定的长度的空间,查询速度快

定长字符串,固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255

varchar:要多少给多少长度空间,节省空间

变长字符串,可变长度字符串,L表示字符长度,最大长度65535个字节

text

text数据类型用于保存变长的大字符串,可以组多到65535(2的16次方减1)个字符.一般情况下,长文本会用text类型,例如:文章、新闻等

mediumtext:最大长度为16777215(2的24次方减1)

longtext:最大长度为4294967295(2的32次方减1)

datatime    YYYY-MM-DD hh:mm:ss    '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'

date           YYYY-MM-DD            1000-01-01/9999-12-31

往表里插入数据

--单行插入
insert into 表名(列名) values(值);

--多行插入
insert into 表名(列名) values(值),(值);

查看表中所有数据

select * from 表名;
3.3  数据行操作

删除数据

delete from 表名;
delete from 表名 where 条件;

delete from tb1 where id=3;

修改数据

update 表名 set 列=值;
update 表名 set 列=值,列=值;
update 表名 set 列=值 where 条件;

update tb1 set age=age+10 where id>5;

查询数据

select * from 表名称;
select 列名称,列名称 from 表名称;
select 列名称,列名称 from 表名称 where 条件;

select id,name from tb1 where id>5;

4.  Python操作Mysql

用python代码连接Mysql并发送指令:pip install pymysql

cursor相当于一个通道,连接之后通过cursor输发数据

#创建表
 create table addd(
    id int not null auto_increment primary key,
    username varchar(16) not null,
    mobile char(11) not null
    )default charset=utf8;
#用python代码连接
import pymysql

#1.连接MySQL
conn = pymysql.connect(host="127.0.0.1", port=3306, user='root', passwd="123456", charset='utf8', db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

# 2.发送指令
cursor.execute("insert into addd(username,mobile) values('abc', 12345678999)")
conn.commit()

#3.关闭
cursor.close()
conn.close()
#查询数据
import pymysql

# 1.连接MySQL
conn = pymysql.connect(host="127.0.0.1", port=3306, user='root', passwd="root123", charset='utf8', db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

# 2.发送指令(删除是delete、修改是update 表名 set...)
cursor.execute("select * from admin where id > %s", [2, ])

# 获取符合条件的第一条数据
res = cursor.fetchone()
print(res)  # {'id': 3, 'username': 'ddd','mobile': '98765432199'}

# 3.关闭连接
cursor.close()
conn.close()

注意:

在进行新增、删除、修改的时候,不能忘记conn.commit,不然数据库没有数据;

在查询时,不需要commit,执行fetchall(查询所有数据)/fetchone(查询第一条数据)