目录
创建新表
表中添加数据
连接两个或多个表
左连接
右连接
创建新表
创建表名为product
# coding=gbk
#连接
import pymysqlmydb = pymysql.connect(host="localhost", #默认用主机名port=3306,user="root", #默认用户名password="123456", #mysql密码database='student', #库名charset='utf8' #编码方式
)print(mydb)
# # 获取游标 承载结果
mycursor = mydb.cursor()#执行sql语句
mycursor.execute("CREATE TABLE product (id VARCHAR(255), product VARCHAR(255),fav VARCHAR(255))")
再创建users表:
# coding=gbk
#连接
import pymysqlmydb = pymysql.connect(host="localhost", #默认用主机名port=3306,user="root", #默认用户名password="123456", #mysql密码database='student', #库名charset='utf8' #编码方式
)print(mydb)
# # 获取游标 承载结果
mycursor = mydb.cursor()#执行sql语句
mycursor.execute("CREATE TABLE users (id VARCHAR(255), name VARCHAR(255),fav VARCHAR(255))")
无报错则创建成功。
表中添加数据
product表中添加:
# coding=gbk
#连接
import pymysqlmydb = pymysql.connect(host="localhost", #默认用主机名port=3306,user="root", #默认用户名password="123456", #mysql密码database='student', #库名charset='utf8' #编码方式
)print(mydb)
# # 获取游标 承载结果
mycursor = mydb.cursor()#执行sql语句
sql = "INSERT INTO product (id, product,fav) VALUES (%s, %s,%s)"
val = [(1, '巧克力', 154),(2, '草', 155),(3, '棉花糖',156),(4, '肉' ,157)
]mycursor.executemany(sql, val)
#提交
mydb.commit()
#打印
print(mycursor.rowcount, "全部添加成功.")
users表中添加:
# coding=gbk
#连接
import pymysqlmydb = pymysql.connect(host="localhost", #默认用主机名port=3306,user="root", #默认用户名password="123456", #mysql密码database='student', #库名charset='utf8' #编码方式
)print(mydb)
# # 获取游标 承载结果
mycursor = mydb.cursor()#执行sql语句
sql = "INSERT INTO users (id, name) VALUES (%s, %s)"
val = [(1,'笨小孩'),(2,'喜洋洋'),(3,'美羊羊'),(4,'懒洋洋')
]mycursor.executemany(sql, val)
#提交
mydb.commit()
#打印
print(mycursor.rowcount, "全部添加成功.")
运行:
连接两个或多个表
您可以使用 JOIN 语句根据两个或多个表之间的相关列组合来自两个或多个表的行。
例如加入users和product,查看用户最喜欢的产品名称:
# coding=gbk
#连接
import pymysqlmydb = pymysql.connect(host="localhost", #默认用主机名port=3306,user="root", #默认用户名password="123456", #mysql密码database='student', #库名charset='utf8' #编码方式
)print(mydb)
# # 获取游标 承载结果
mycursor = mydb.cursor()#执行sql语句
sql = "SELECT \users.name AS user, \product.product AS favorite \FROM users \INNER JOIN product ON users.id = product.id"mycursor.execute(sql)
#打印
myresult = mycursor.fetchall()for x in myresult:print(x)
运行:
注意:您可以使用 JOIN 代替 INNER JOIN。他们都会给你同样的结果。
左连接
在上面的示例中, INNER JOIN 仅显示存在匹配的记录。如果要显示所有用户,即使他们没有最喜欢的产品,也可以使用 LEFT JOIN 语句。
例如选择所有用户和他们最喜欢的产品:
# coding=gbk
#连接
import pymysqlmydb = pymysql.connect(host="localhost", #默认用主机名port=3306,user="root", #默认用户名password="123456", #mysql密码database='student', #库名charset='utf8' #编码方式
)print(mydb)
# # 获取游标 承载结果
mycursor = mydb.cursor()#执行sql语句
sql = "SELECT \users.name AS user, \product.product AS favorite \FROM users \LEFT JOIN product ON users.id = product.id"mycursor.execute(sql)
#打印
myresult = mycursor.fetchall()for x in myresult:print(x)
运行:
右连接
如果您想返回所有产品,以及收藏它们的用户,即使没有用户收藏它们,也可以使用 RIGHT JOIN 语句。例如选择所有产品,以及收藏这些产品的用户:
# coding=gbk
#连接
import pymysqlmydb = pymysql.connect(host="localhost", #默认用主机名port=3306,user="root", #默认用户名password="123456", #mysql密码database='student', #库名charset='utf8' #编码方式
)print(mydb)
# # 获取游标 承载结果
mycursor = mydb.cursor()#执行sql语句
sql = "SELECT \users.name AS user, \product.product AS favorite \FROM users \RIGHT JOIN product ON users.id = product.id"mycursor.execute(sql)
#打印
myresult = mycursor.fetchall()for x in myresult:print(x)
运行: