赞
踩
目录
网盘链接:https://pan.baidu.com/s/1Ao475w7lXNL5SSiyK0VeZg
提取码:zpaa
下载地址:http://www.mysql.com/downloads
1.
2.
3.下载之后可参考 MySQL 5.7 版本的安装及简单使用(图文教程)_Mysql_脚本之家 (jb51.net)
https://www.jb51.net/article/99626.htm
PhPStudy非常适合用来搭建网站,是一个集成开发环境。(可以使用轻量级MySql)

如果使用的是PhPStudy使用MySql,如果想在命令行启动MySql需要将:F:\phpstudy_pro\Extensions\MySQL5.7.26\bin添加到环境变量(这里是我的地址)
常用工具:

SQLyog介绍
● SQLyog界⾯

○ 第二步


○ 第⼆步
● 为表添加数据
mysql -u 用户名 -p
enter password:密码

exit;
quit;
注意:(1)mysql不严格区分大小写;
(2)分号作为结束符,必须写;
show databases;
select version();
create database 数据库名;
create database 数据库名 charset=utf8;
注意:charset:指定编码为utf8
select database();
use 数据库名;
drop database 数据库名;
show tables;
create table 数据库名(字段 类型 约束[,字段 类型 约束])
show create table 数据表名;
desc 数据表名;
alter table 数据表名 add 字段 类型及约束;
alter table 数据表名 modify 字段 类型及约束; ——不重命名
alter table 数据表名 change 原字段名 新字段名 类型及约束; ——将字段重命名
alter table 数据表名 drop 字段;
drop table 表名;
回顾练习:
- -- 显示数据库
- SHOW DATABASES;
-
- -- 查看数据库的版本号,选中,按F9运行
- SELECT VERSION();
-
- -- 查看当前的时间
- SELECT NOW();
-
- -- 创建数据库,如果有用到特殊符号,tab上~,切换成英文输入法
- CREATE DATABASE `mytest-01`;
-
- -- 指定编码
- CREATE DATABASE `mytest-02` CHARSET='utf8';
-
- -- 查看创建的数据库
- SHOW CREATE DATABASE `mytest-01`;
-
- -- 想在mytest-01这个库中创建一张表
- -- 查看当前的数据库
- SELECT DATABASE();
-
- -- 使用mytest-01
- USE `mytest-01`;
-
- -- 删除mytest-02
- DROP DATABASE `mytest-02`;
-
- -- 判断数据库是否存在,不存在才创建
- CREATE DATABASE IF NOT EXISTS `mytest-01`;
-
- -- 查看表,显示当前数据库的表
- SHOW TABLES;
-
- -- 创建表
- CREATE TABLE mytable1 (id INT,NAME VARCHAR(20));
-
- -- 添加相关的约束 PRIMARY KEY_主键,NOT NULL_不为空,AUTO_INCREMENT_自增
- CREATE TABLE mytable2 (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,NAME VARCHAR(20));
-
- -- 查看表结构
- DESC mytable2;
-
-
- -- 创建表
- CREATE TABLE students(
- id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
- NAME VARCHAR(20),
- age TINYINT UNSIGNED DEFAULT 18,
- high DECIMAL(5,2),
- gender ENUM('男','女','保密') DEFAULT '保密',
- cls_id INT
- );
-
- -- 课堂表
- CREATE TABLE classes(
- id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
- NAME VARCHAR(20)
- );
-
- -- 添加一个字段,birthday
- ALTER TABLE students ADD birthday DATE;
-
- -- 添加默认值,不修改字段
- ALTER TABLE students MODIFY birthday DATE DEFAULT '2002-01-01';
-
- -- 修改字段名
- ALTER TABLE students CHANGE birthday birth DATE DEFAULT '2002-01-01';
-
- -- 删除high字段
- ALTER TABLE students DROP high;

整行插入
insert into 数据表名 values(值1,值2,值3...)
指定列中插入数据
insert into 数据表名(字段1,字段2...) values(值1,值2...)
update 数据表名 set 字段1=新值,字段2=新值 where 条件
delete from 数据表名 where 条件
查询整个表的数据
select * from 数据表名
查询指定字段数据
select 字段1 字段2 from 数据表名
查询指定字段,并给字段起别名
select 字段1 as 别名,字段2 as 别名 from 数据表名
查询指定字段并去重
select distinct 字段1 from 数据表名
where字句通常结合增删改查使用,用于做筛选的条件。
比如,查询当id = 1的数据
select * from student where id=1
不仅如此,经常结合运算符使用


like关键字用来进行模糊查询,并且结合%以及_使用。
(1)% 表示任意多个字符;
(2)_ 表示一个任意字符;


(1)count(*) 总数;
(2)max() 最大值;
(3)min() 最小值;
(4)sum() 求和;
(5)avg() 平均值;
练习:
- -- 求students总人数
- SELECT COUNT(*) FROM students;
-
- -- 求男性的人数
- SELECT COUNT(*) FROM students WHERE gender='男';
-
- -- 求最大年龄
- SELECT MAX(age) FROM students;
-
- -- 女性的最大id
- SELECT MAX(id) FROM students WHERE gender=2;
-
- SELECT MAX(age) AS '最大年龄' FROM students;
-
- -- 查询为删除的学生的最小编号
-
- SELECT MIN(id) FROM students WHERE is_del=0;
-
- -- 男生的年龄和
- SELECT SUM(age) FROM students WHERE gender=1;
-
- -- 查询未删除女生的年龄的平均值
- SELECT AVG(age) FROM students WHERE is_del=0 AND gender=2;
-
-
- -- 计算男性的平均年龄,保留2位小数,round(数据,保留几位小数)
- SELECT ROUND(AVG(age), 2) FROM students WHERE is_del=0 AND gender=1;

回顾练习:
- -- 添加数据
- INSERT INTO students VALUES('qianan', 18);
-
- -- 整行添加
- INSERT INTO students VALUES(1,'qianan', 18, '男', 1, '2003-01-01');
-
- -- 指定字段添加
- INSERT INTO students (NAME, cls_id) VALUES('ljl',1);
-
- -- 一定用小括号包裹起来
- INSERT INTO students (NAME) VALUES('linqiang');
-
- -- 添加性别
- INSERT INTO students (NAME,gender) VALUES('fanmiao', '女')
-
- -- 枚举可以通过索引取,从1开始
- INSERT INTO students (NAME,gender) VALUES('fanmiao', 1);
-
- -- 添加多条数据
- INSERT INTO students (NAME,gender) VALUES('yjw', 1),('wjb', 2),('zxs', 1);
-
- -- 修改数据
- -- 将姓名全部改为jack
- UPDATE students SET NAME='jack';
-
- -- 将性别为女改为rose
- UPDATE students SET NAME='rose' WHERE gender='女';
-
- -- 将id为3的年龄修改为22,并且性别改为男
- UPDATE students SET age=22,gender='男' WHERE id=3;
-
-
-
- -- 删除数据
- -- id为8的删除_物理删除
- DELETE FROM students WHERE id=8;
-
- -- 逻辑删除 is_del 0未删除 1已删除
- ALTER TABLE students ADD is_del INT DEFAULT 0;
-
- -- id 为6删除掉,修改is_del=1
- UPDATE students SET is_del=1 WHERE id=6
-
- -- 查询
- -- 查询整个表数据
- SELECT * FROM students;
-
- -- 姓名,性别数据
- SELECT NAME,gender FROM students;
-
- SELECT NAME AS '姓名',gender AS '性别' FROM students;
-
- -- s相当于strduents
- SELECT s.gender FROM students AS s;
-
- -- 对name字段值进行去重
- SELECT DISTINCT NAME FROM students;
-
- -- 多个字段时,一行一行去比较,去重
- SELECT DISTINCT NAME,age FROM students;
-
- -- 条件查询
- -- id>3的数据
- SELECT * FROM students WHERE id>3;
-
- -- 年龄大于18的信息
- SELECT * FROM students WHERE age>18;
-
- -- 姓名不是qianan的数据
- SELECT * FROM students WHERE NAME!='qianan';
-
- -- 18-22之间的年龄
- SELECT * FROM students WHERE age>=18 AND age <22
-
- -- id>3的女同学
- SELECT * FROM students WHERE id>3 AND gender='女';
-
- -- id<2 id>4
- SELECT * FROM students WHERE id<2 OR id>4;
-
- -- 查询年龄不是18的女同学
- SELECT * FROM students WHERE NOT age=18 AND gender='女';
-
-
- -- 模糊查询
- -- 查询名字以r开头的学生信息
- SELECT * FROM students WHERE NAME LIKE 'r%';
-
- -- 查询名字含有a
- SELECT * FROM students WHERE NAME LIKE '%a%';
-
- -- 查询名字仅有2个字符
- SELECT * FROM students WHERE NAME LIKE '__';
-
- -- 名字至少含有2个字符
- SELECT * FROM students WHERE NAME LIKE '__%';
-
-
- -- id为1或者4或者6的学生信息
- SELECT * FROM students WHERE id IN (1, 4, 6);
-
- -- 年龄不是18或者20
- SELECT * FROM students WHERE NOT age IN (18, 20);
-
-
- -- id2-4
- SELECT * FROM students WHERE id BETWEEN 2 AND 4;
-
- -- 查询id是3-5的男同学信息
- SELECT * FROM students WHERE id (BETWEEN 3 AND 5) AND gender=1;
-
- -- 判断cls_id数据不为空的显示
- SELECT * FROM students WHERE cls_id IS NOT NULL;
-
-
- -- 求students总人数
- SELECT COUNT(*) FROM students;
-
- -- 求男性的人数
- SELECT COUNT(*) FROM students WHERE gender='男';
-
- -- 求最大年龄
- SELECT MAX(age) FROM students;
-
- -- 女性的最大id
- SELECT MAX(id) FROM students WHERE gender=2;
-
- SELECT MAX(age) AS '最大年龄' FROM students;
-
- -- 查询为删除的学生的最小编号
-
- SELECT MIN(id) FROM students WHERE is_del=0;
-
- -- 男生的年龄和
- SELECT SUM(age) FROM students WHERE gender=1;
-
- -- 查询未删除女生的年龄的平均值
- SELECT AVG(age) FROM students WHERE is_del=0 AND gender=2;
-
-
- -- 计算男性的平均年龄,保留2位小数,round(数据,保留几位小数)
- SELECT ROUND(AVG(age), 2) FROM students WHERE is_del=0 AND gender=1;


在数据库里,group_by 将查询结果按照1个或多个字段进行分组,字段值相同的为一组。
select 显示的字段或内容 from 表名 group_by 需要分组的字段
我们通过 group_concat(...) 查看每组的详细信息;


order by 字段 默认升序
order by 字段 asc 指定升序
order by 字段 desc 指定降序
limit start,count
(1)start为偏移量,默认为0;
(2)count为条数;
注意:
(1)limit不能写数学公式;
(2)limit只能写在末尾;
当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集,在选择合适的列返回mysql。这时我们就需要使用表连接。
分类:内连接,外连接,左连接,右连接;
内连接仅选出两张表中互相匹配的记录
select * from 表1 inner join 表2 on 表1.列 = 表2.列;

查询的结果为两个表匹配到的数据,左表持有的数据,对于右表中不存在的数据使用null填充;
select * from 表1 left join 表2 on 表1.列 = 表2.列;

查询的结果为两个表匹配到的数据,右表持有的数据,对于左表中不存在的数据使用null填充;
select * from 表1 right join 表2 on 表1.列 = 表2.列;

某些情况下,当进行查询的时候,需要的条件是另外一个select语句时,这个时候,就要用到子查询。
例如:
- -- 查询最高的男生信息
- SELECT * FROM students WHERE hight=1.89;
-
- -- 并不确定最高身高
- SELECT MAX(hight) FROM students WHERE gender=1;
-
- -- 显示最高身高对应的姓名,name跟hight没有关联
- SELECT NAME,MAX(hight) FROM students WHERE gender=1;
-
- -- 首先拿到最高身高,子查询
- SELECT NAME,hight FROM students WHERE hight=(SELECT MAX(hight) FROM students WHERE gender=1);
-
- -- 查询高于平均身高的学生信息,首先计算平均身高
- SELECT AVG(hight) FROM students;
-
- SELECT * FROM students WHERE hight>(SELECT AVG(hight) FROM students);
-
- -- 最大年龄的女性id
- SELECT * FROM students WHERE gender=2 AND age=(SELECT MAX(age) FROM students WHERE gender=2);

可以简单的理解为自己与自己进行连接查询。
比如:
一张areas表里面有省,市,区,我们需要通过这一张表查询某省对应的所有城市。
- SELECT * FROM areas AS p INNER JOIN areas AS c ON p.`id`=c.`pid` HAVING
- p.name="湖南";
练习代码:
- -- 计算男生与女生,保密的人数
- SELECT COUNT(*) FROM students GROUP BY gender;
- -- 将对应姓名显示出来
- SELECT gender, NAME, COUNT(*) FROM students GROUP BY gender; -- name字段信息不能完全显示
- -- group_concat:显示每组详细信息
- SELECT gender, GROUP_CONCAT(NAME), COUNT(*) FROM students GROUP BY gender;
-
- -- 分组后,查看总人数
- SELECT gender,COUNT(*) FROM students GROUP BY gender WITH ROLLUP;
-
- -- ifnull,如果第一个参数的表达式为null,返回第二个参数的备用值
- SELECT IFNULL(gender, '总计') AS '性别',COUNT(*) FROM students GROUP BY gender WITH ROLLUP;
-
- -- 查询男生女生 条件:总数大于2
- SELECT gender, COUNT(*) FROM students GROUP BY gender HAVING COUNT(*)>2;
-
- SELECT gender, COUNT(*), GROUP_CONCAT(NAME) FROM students GROUP BY gender HAVING COUNT(*)>2;
-
-
- -- 查询男生女生平均年龄超过18岁的性别,以及姓名
- SELECT gender,AVG(age),GROUP_CONCAT(NAME) FROM students GROUP BY gender HAVING AVG(age)>18 AND (gender=1 OR gender=2);
-
- -- 查询年龄在18到26之间的男同学,按照年龄从小到大排序 ,默认是升序
- SELECT * FROM students WHERE gender=1 AND (age BETWEEN 18 AND 26) ORDER BY age;
-
- -- 查询年龄在18到20岁之间的女同学,id从高到低排序
- SELECT * FROM students WHERE gender=2 AND (age BETWEEN 18 AND 20) ORDER BY id DESC;
-
- -- 查询年龄在18-23岁之间的女性,年龄从高到低降序,当年龄相同时,按照身高从低到高升序。
- SELECT gender,NAME,hight,age FROM students WHERE (age BETWEEN 18 AND 23) AND gender=2 ORDER BY age DESC,hight ASC;
-
-
-
- -- 分页显示
- SELECT * FROM students LIMIT 2;
-
- -- 显示id2为3,4,5 2,4
- SELECT * FROM students LIMIT 2,3;
-
- -- 每页显示三条数据,一页多少条记录*(当前第几页-1),不支持公式计算,只能写在后面
- SELECT * FROM students LIMIT 0,3;
- SELECT * FROM students LIMIT 3,3;
- SELECT * FROM students LIMIT 3*(3-1),3;
-
-
- --
- SELECT * FROM students INNER JOIN classes;
-
- -- 当s.cls_id = c.id相等时才显示
- SELECT * FROM students s INNER JOIN classes c ON s.cls_id = c.id;
-
- -- 显示学生的所有信息,但只显示班级名称
- SELECT s.*,c.`NAME` FROM students s INNER JOIN classes c ON s.cls_id = c.id;
-
- -- 查询 有能够对应班级的学生以及班级信息,按照班级进行排序
- SELECT * FROM students s INNER JOIN classes c ON s.cls_id = c.id ORDER BY s.`cls_id`;
-
- -- 当同一个班级时,按照学生的id进行从大到小排序
- SELECT * FROM students s INNER JOIN classes c ON s.cls_id = c.id ORDER BY s.`cls_id`, s.`id` DESC;
-
-
- -- 左连接——以左表为主,右表填充为null
- SELECT * FROM students s LEFT JOIN classes c ON s.cls_id = c.id;
-
- -- students表左连接classes表 并查看班级为null的数据
- SELECT * FROM students s LEFT JOIN classes c ON s.cls_id = c.id WHERE c.`id` IS NULL;
-
- -- 左连接 并且 查询 s.is_del=1 并且 s.name="qianan" 的数据
- SELECT * FROM students s LEFT JOIN classes c ON s.cls_id = c.id WHERE s.`is_del`=1 AND s.`NAME`='qianan';
-
-
- -- 查询最高的男生信息
- SELECT * FROM students WHERE hight=1.89;
-
- -- 并不确定最高身高
- SELECT MAX(hight) FROM students WHERE gender=1;
-
- -- 显示最高身高对应的姓名,name跟hight没有关联
- SELECT NAME,MAX(hight) FROM students WHERE gender=1;
-
- -- 首先拿到最高身高,子查询
- SELECT NAME,hight FROM students WHERE hight=(SELECT MAX(hight) FROM students WHERE gender=1);
-
- -- 查询高于平均身高的学生信息,首先计算平均身高
- SELECT AVG(hight) FROM students;
-
- SELECT * FROM students WHERE hight>(SELECT AVG(hight) FROM students);
-
- -- 最大年龄的女性id
- SELECT * FROM students WHERE gender=2 AND age=(SELECT MAX(age) FROM students);
-
- SELECT * FROM students WHERE age=(SELECT MAX(age) FROM students WHERE gender=2);
-
- `areas``cities`
-
- USE `python-03`;
- -- 查询湖南省所有的市
- -- 查询湖南省对应的provinceid
- SELECT * FROM provinces WHERE province='湖南省';
- -- 通过provinceid 在cities表对应的市
- SELECT * FROM cities WHERE provinceid=430000;
-
- -- 一个语句查询湖南省所有市
- SELECT * FROM cities WHERE provinceid=(SELECT provinceid FROM provinces WHERE province='湖南省');
-
- -- 内连接
- SELECT * FROM provinces p INNER JOIN cities c ON p.`provinceid` = c.`provinceid` WHERE p.`province`='湖南省';
-
-
- -- 自关联
- -- 查询湖南省下的所有市
- -- 1. 湖南省的id
- SELECT * FROM areas WHERE NAME='湖南';
-
- -- 再查询pid为湖南省的id数据
- SELECT * FROM areas WHERE pid=(SELECT id FROM areas WHERE NAME='湖南');
-
- -- 长沙市下面的区
- SELECT * FROM areas WHERE pid=(SELECT id FROM areas WHERE NAME='长沙');
-
- -- 连接查询实现
- SELECT * FROM areas p INNER JOIN areas c ON p.`id`=c.`pid` WHERE p.`name`='湖南';
- -- 长沙市下面的区
- SELECT * FROM areas p INNER JOIN areas c ON p.`id`=c.`pid` WHERE p.`name`='长沙';

Mysql的外键约束(foreign key)是表的一个特殊字段。对于两个具有关联关系的表而言,相关联字段中的主键所在的表就是主表(父表),外键所在的表就是从表(子表)。
注意:主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。
- -- 默认引擎MyISAM,不支持外键,更改引擎,改成InnoDB
- -- 1.找到mysql安装路径,打开my.ini,default-storage-engine=InnoDB
- -- 2.停止phpstudy服务,找到mysql安装路径下的data文件,删除ib_logfile0/1
- -- 3.重启服务
- SHOW ENGINES;
语法:
[CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,…] REFERENCES <主表名> 主 键列1 [,主键列2,…]
实现:
班级表:

学生表:

- -- 创建班级表
- CREATE TABLE classes(
- id INT(4) NOT NULL PRIMARY KEY,
- NAME VARCHAR(36)
- );
-
- -- 创建学⽣表
- CREATE TABLE student(
- sid INT(4) NOT NULL PRIMARY KEY,
- sname VARCHAR(30),
- cid INT(4) NOT NULL,
- CONSTRAINT cs_id FOREIGN KEY(cid) REFERENCES classes(id)
- );
在创建student表时将其cid设置为外键。
- alter table 表名 add constraint 外键名字 foreign key(外键字段名) references
- 外表表名(主键字段名);
例:
- -- 创建班级表
- CREATE TABLE classes(
- id INT(4) NOT NULL PRIMARY KEY,
- NAME VARCHAR(36)
- );
-
- -- 创建学⽣表
- CREATE TABLE student(
- sid INT(4) NOT NULL PRIMARY KEY,
- sname VARCHAR(30),
- cid INT(4) NOT NULL
- );
-
- ALTER TABLE student ADD CONSTRAINT cs_id FOREIGN KEY(cid) REFERENCES classes(id);
ALTER TABLE student DROP FOREIGN KEY fk_cid;

(1)创建数据表
- -- 创建⼀个商品 goods 数据表
- CREATE TABLE goods(
- id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT NOT NULL,
- NAME VARCHAR(150) NOT NULL,
- cate_name VARCHAR(40) NOT NULL,
- brand_name VARCHAR(40) NOT NULL,
- price DECIMAL(10,3) NOT NULL DEFAULT 0,
- is_show TINYINT NOT NULL DEFAULT 1,
- is_saleoff TINYINT NOT NULL DEFAULT 0
- );
(2)插入数据
- -- 插⼊数据
- INSERT INTO goods VALUES(0,'r510vc 15.6英⼨笔记本','笔记本','华 硕','3399',DEFAULT,DEFAULT);
- INSERT INTO goods VALUES(0,'y400n 14.0英⼨笔记本电脑','笔记本','联 想','4999',DEFAULT,DEFAULT);
- INSERT INTO goods VALUES(0,'g150th 15.6英⼨游戏本','游戏本','雷 神','8499',DEFAULT,DEFAULT);
- INSERT INTO goods VALUES(0,'x550cc 15.6英⼨笔记本','笔记本','华 硕','2799',DEFAULT,DEFAULT);
- INSERT INTO goods VALUES(0,'x240 超极本','超级本','联 想','4880',DEFAULT,DEFAULT);
- INSERT INTO goods VALUES(0,'u330p 13.3英⼨超极本','超级本','联 想','4299',DEFAULT,DEFAULT);
- INSERT INTO goods VALUES(0,'svp13226scb 触控超极本','超级本','索 尼','7999',DEFAULT,DEFAULT);
- INSERT INTO goods VALUES(0,'ipad mini 7.9英⼨平板电脑','平板电脑','苹 果','1998',DEFAULT,DEFAULT);
- INSERT INTO goods VALUES(0,'ipad air 9.7英⼨平板电脑','平板电脑','苹 果','3388',DEFAULT,DEFAULT);
- INSERT INTO goods VALUES(0,'ipad mini 配备 retina 显示屏','平板电脑','苹 果','2788',DEFAULT,DEFAULT);
- INSERT INTO goods VALUES(0,'ideacentre c340 20英⼨⼀体电脑 ','台式机','联 想','3499',DEFAULT,DEFAULT);
- INSERT INTO goods VALUES(0,'vostro 3800-r1206 台式电脑','台式机','戴 尔','2899',DEFAULT,DEFAULT);
- INSERT INTO goods VALUES(0,'imac me086ch/a 21.5英⼨⼀体电脑','台式机','苹 果','9188',DEFAULT,DEFAULT);
- INSERT INTO goods VALUES(0,'at7-7414lp 台式电脑 linux )','台式机','宏 碁','3699',DEFAULT,DEFAULT);
- INSERT INTO goods VALUES(0,'z220sff f4f06pa⼯作站','服务器/⼯作站','惠 普','4288',DEFAULT,DEFAULT);
- INSERT INTO goods VALUES(0,'poweredge ii服务器','服务器/⼯作站','戴 尔','5388',DEFAULT,DEFAULT);
- INSERT INTO goods VALUES(0,'mac pro专业级台式电脑','服务器/⼯作站','苹 果','28888',DEFAULT,DEFAULT);
- INSERT INTO goods VALUES(0,'hmz-t3w 头戴显示设备','笔记本配件','索 尼','6999',DEFAULT,DEFAULT);
- INSERT INTO goods VALUES(0,'商务双肩背包','笔记本配件','索 尼','99',DEFAULT,DEFAULT);
- INSERT INTO goods VALUES(0,'x3250 m4机架式服务器','服务器/⼯作 站','ibm','6888',DEFAULT,DEFAULT);
- INSERT INTO goods VALUES(0,'商务双肩背包','笔记本配件','索 尼','99',DEFAULT,DEFAULT);

分表是因为当一张表的数据量比较多时,但是我们只需要查询其中的某个字段数据,就会导致查询效率低,所以我们此处使用到分表。
创建商品分类表
- create table goods_cates(
- id int unsigned primary key auto_increment not null,
- name varchar(40) not null
- );
将商品表中的商品种类查询并入到商品分类中
- insert into goods_cates (name) select cate_name from goods group by
- cate_name;
将商品表中的商品种类更改为商品表分类表对应的id
- update goods as g inner join goods_cates as c on g.cate_name=c.name set
- g.cate_name=c.id;

用于建立与数据库连接
创建对象:调用 connect()方法
- conn=connect(参数列表)
- """
- 参数host:连接的mysql主机,如果本机是'localhost'
- 参数port:连接的mysql主机的端⼝,默认是3306
- 参数database:数据库的名称 参数user:连接的⽤户名 参数password:连接的密码 参数charset:通信采⽤的编码⽅式,推荐使⽤utf8
- """
- import pymysql
- con = pymysql.connect(host = 'localhost',port=3306,database='python-
- 01',user='root',password = 'root',charset = 'utf8')
- from pymysql import *
- conn = connect(host = 'localhost',port=3306,database='python-
- 01',user='root',password = 'root',charset = 'utf8')
(1)close()关闭连接;
(2)commit()提交;
(4)cursor()返回Cursor对象,用来执行sql语句并获取结果;
(1)用来执行sql语句,使用频度最高的语句为select,insert,update,delete;
(2)获取Cursor对象:调用Connection对象的cursor方法;
cs1=conn.cursor()
- from pymysql import *
- try:
- conn = connect(
- host = "localhost",
- port = 3306,
- user = "root",
- passwd = "root",
- db = 'logic_web',
- charset = 'utf8'
- )
- cursor = conn.cursor()
- cursor.execute('select * from users_banner')
- result = cursor.fetchone()
- cursor.close()
- conn.close()
- except Exception as e:
- print("Error %d:%s"%(e.args[0],e.args[1]))

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。