一、数据库基础
表 table:数据是保存在表内,保存在一个表内的数据,应该具有相同的数据格式
行:行用于记录数据
记录:行内的数据
列:列用于规定数据格式
字段:数据的某个列
主键:唯一地标识表中的某一条记录,不能空,不能重复
二、数据库的数据类型
1、数字类型
整数: tinyint、smallint、mediumint、int、bigint
浮点数: float、double、real、decimal
日期和时间: date、time、datetime、timestamp、year
2、字符串类型
字符串: char、varchar
文本: tinytext、text、mediumtext、longtext
3、二进制
(可用来存储图片、音乐等): tinyblob、blob、mediumblob、longblob
三、Python之MySQL数据库操作
1、连接myaql创建新的数据库
import pymysql
# 打开数据库连接(ip/端口/数据库用户名/登录密码/数据库名)
conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='123456')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = conn.cursor()
# 编写sql语句创建数据库
sql1 = 'CREATE DATABASE test1 DEFAULT CHARACTER SET utf8'
# 执行sql语句
cursor.execute(sql1)
conn.close()
2、创建表
import pymysql
# 打开数据库连接(ip/端口/数据库用户名/登录密码/数据库名)
conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',db = 'test1')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = conn.cursor()
# 编写sql语句创建表test_student_table
sql2 = 'CREATE TABLE IF NOT EXISTS test_student_table (id VARCHAR(255) NOT NULL,name VARCHAR(255) NOT NULL,age VARCHAR(255) NOT NULL,PRIMARY KEY (id))'
# 执行sql语句
cursor.execute(sql2)
conn.close()
3、往表中插入数据
import pymysql
def get_conn():
conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',db='test1') # db:表示数据库名称
return conn
def insert(sql):
conn = get_conn()
cur = conn.cursor()
result = cur.execute(sql)
print(result)
# commit方法才可以实现数据的插入,是真正将语句提交到数据库执行的方法。
conn.commit()
cur.close()
conn.close()
if __name__ == '__main__':
sql = 'INSERT INTO test_student_table VALUES(1,\'zhang\',12);''
insert(sql)
sql占位符形式实现:
import pymysql
def get_conn():
conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='123456', db='test1')
return conn
def insert(sql, args):
conn = get_conn()
cur = conn.cursor()
result = cur.execute(sql, args)
print(result)
conn.commit()
cur.close()
conn.close()
if __name__ == '__main__':
sql = 'INSERT INTO test_student_table VALUES(%s,%s,%s);'
insert(sql, (2, 'wang', 13))
下面代码均以占位符的形式实现sql语句。
插入多条语句实现:
import pymysql
def get_conn():
conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='123456', db='test1')
return conn
def insert_many(sql, args):
conn = get_conn()
cur = conn.cursor()
result = cur.executemany(query=sql, args=args)
print(result)
conn.commit()
cur.close()
conn.close()
if __name__ == '__main__':
sql = 'insert into test_student_table VALUES (%s,%s,%s)'
args = [(3, 'li', 11), (4, 'sun', 12), (5, 'zhao', 13)]
insert_many(sql=sql, args=args)
4、Python之更新操作
import pymysql
def get_conn():
conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='root',db='test1') # db:表示数据库名称
return conn
def update(sql,args):
conn = get_conn()
cur = conn.cursor()
result = cur.execute(sql,args)
print(result)
conn.commit()
cur.close()
conn.close()
if __name__ == '__main__':
sql = 'UPDATE test_student_table SET NAME=%s WHERE id = %s;'
args = ('zhangsan', 1)
update(sql, args)
5、Python之删除操作
import pymysql
def get_conn():
conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='root',db='test1') # db:表示数据库名称
return conn
def delete(sql,args):
conn = get_conn()
cur = conn.cursor()
result = cur.execute(sql,args)
print(result)
conn.commit()
cur.close()
conn.close()
if __name__ == '__main__':
sql = 'DELETE FROM test_student_table WHERE id = %s;'
args = (1,) # 单个元素的tuple写法
delete(sql,args)
6、Python之查询操作
import pymysql
def get_conn():
conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='root', db='test1')
return conn
def query(sql,args):
conn = get_conn()
cur = conn.cursor()
cur.execute(sql,args)
results = cur.fetchall()
print(type(results)) # 返回 tuple元组类型
for row in results:
print(row)
id = row[0]
name = row[1]
age = row[2]
print('id: ' + str(id) + ' name: ' + name + ' age: ' + str(age))
pass
conn.commit()
cur.close()
conn.close()
if __name__ == '__main__':
sql = 'SELECT * FROM test_student_table;'
query(sql,None)
输出:
(2, 'wang', 13)
id: 2 name: wang age: 13
(3, 'li', 11)
id: 3 name: li age: 11
(4, 'sun', 12)
id: 4 name: sun age: 12
(5, 'zhao', 13)
id: 5 name: zhao age: 13
四、总结
1、创建数据库
create database 数据库名 charset=utf8;
2、删除数据库
drop database 数据库名;
3、切换数据库
use 数据库名;
4、查看当前选择的数据库
select database();
5、查看目前所有的数据库
show databases;
五、表操作
1、查看当前数据库中所有表
show tables;
2、创建表
create table 表名(列及类型);
列名:id
类型:int unsigned
约束1:not null
约束2:primary key
约束3:auto_increment
列的格式:列的名称 类型 约束
例如:
create table hero(h_id int auto_increment primary key,h_name varchar(10) not null);
3、修改表
语法:
alter table 表名 add(添加)|modify(修改)|drop(删除) 列名 类型;
添加列:h_skill 为字符类型
alter table hero add h_skill varchar(10);
修改列:h_skill修改本属性不能为空
alter table hero modify h_skill varchar(10) not null;
4、删除表
drop table 表名;
5、查看表结构
desc 表名;
6、更改表名称
rename table 原表名 to 新表名;
7、查看边的创建语句
show create table 表名
六、数据操作
1、增加数据
insert into 表名(列1,...) values(值1,...);
例如:
insert into hero(h_id,h_name,h_skill) values(1,'韩信','裂天爆斩');
主键列是自动增长,但是在全列插入时需要占位,通常使用0,插入成功后以实际数据为准
2、简单查询数据
select * from 表名
3、修改数据
update 表名 set 列1=值1,... where 条件
4、删除数据
delete from 表名 where 条件