此文将以MYSQL数据库做为例子,pymysql库作为驱动进行学习
安装MYSQL数据库,请点击https://dev.mysql.com/downloads/installer/安装MYSQL的社区版本
安装pymysql库不多做叙述
安装navicat for mysql,此程序用来管理MYSQL数据库
注意: 连接过程中可能会出现1251错误
解决办法,在cmd命令下登录mysql后输入:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysql的密码';
注意:引号中的为你自己设置的sql数据库的密码
FLUSH PRIVILEGES;
Connection(host = None,user = None,password ='',database = None,port = 0,unix_socket = None,charset ='',sql_mode = None,read_default_file = None,conv = None,use_unicode = None,client_flag = 0,cursorclass =
类
常用方法
select_db(db)
设置db为当前数据库
cursor()
创建一个游标对象,继而对数据进行操作
游标对象方法:
execute(query,args = None )
执行sql语句
executemany(query,args )
运行多个sql语句
fetchall()
获取所有行
fetchmany(size = None )
获取指定行数
fetchone()
获取下一行
close()
关闭游标,将缓存的数据全部释放到数据库中
commit()
提交对数据库中数据的修改,使之持久化到数据库中
close()
关闭套接字连接退出
SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统
MySQL 数据类型
CREATE DATABASE 创建新数据库
CREATE DATABASE database_name
import pymysql
con = pymysql.connect('localhost','root','123456')
sql = '''CREATE DATABASE test
'''
with con.cursor()as cursor:
cursor.execute(sql)
con.close()
CREATE TABLE 创建新表
语句为以下形式,其中约束可以没有
CREATE TABLE 表名称
(
列名称1 数据类型 约束,
列名称2 数据类型 约束,
列名称3 数据类型 约束,
....
)
约束条件
NOT NULL 值不能为空
UNIQUE 设置索引,一个表中可以有多个索引
在创建表时,末尾加上该语句
UNIQUE(列名称)
表创建以后添加索引
ALTER TABLE 表名称
ADD UNIQUE (列名称)
ALTER TABLE 表名称
DROP INDEX 列名称
PRIMARY KEY 设置主键,一个表中只能有一个主键
PRIMARY KEY (列名称)
ALTER TABLE表名称
ADD PRIMARY KEY (列名称)
ALTER TABLE 表名称
DROP PRIMARY KEY
FOREIGN KEY 一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY
FOREIGN KEY (列名称) REFERENCES 表名称(列名称)
ALTER TABLE 表名称1
ADD FOREIGN KEY (列名称)
REFERENCES 表名称2(列名称)
ALTER TABLE 表名称
DROP FOREIGN KEY 约束名称
CHECK 限制列中的值的范围
CHECK (列名称 范围限制)
ALTER TABLE 表名称
ADD CHECK (列名称 范围限制)
ALTER TABLE 表名称
DROP CONSTRAINT 约束名称
DEFAULT 向列中插入默认值
列名称 数据类型 DEFALUT 默认值
表创建后添加默认值
ALTER TABLE 表名称
ALTER 列名称 SET DEFAULT 默认值
ALTER TABLE 表名称
ALTER 列名称 DROP DEFAULT
AUTO_INCREMENT 新记录插入表中时生成一个唯一的数字
列名称 int NOT NULL AUTO_INCREMENT
ALTER TABLE 表名称 AUTO_INCREMENT=100
# 新建一个名为person的表,定义有id,name,age,address 其中id设置为主键,并采取自增形式
import pymysql
con = pymysql.connect('localhost','root','123456')
con.select_db('test')
sql = '''CREATE TABLE person
(
id INT(255) NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255),
age INT(100),
address VARCHAR(255)
)
'''
with con.cursor()as cursor:
cursor.execute(sql)
con.close()
CREATE INDEX 创建表中的引索
用于加速搜索数据,用户无法看见,只需设置常用的列
使用以下语句
CREATE INDEX 引索名称
ON 表名称 (列名称)
DROP 删除索引、表和数据库
DROP TABLE 表名称
DROP DATABASE 数据库名称
TRUNCATE TABLE 表名称
ALTER TABLE 在已有的表中添加、修改或删除列
ALTER TABLE 表名称
ADD 列名称 列类型
ALTER TABLE 表名称
DROP COLUMN 列名称
ALTER TABLE 表名称
ALTER COLUMN 列名称 列类型
SELECT 选取数据
SELECT 列名称 FROM 表名称
SELECT DISTINCT 去掉重复数据
SELECT DISTINCT 列名称 FROM 表名称
WHERE 有条件的选取数据
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
= 等于
<> 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
操作符
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
AND 和 OR 对一个以上的条件对记录进行过滤
SELECT * FROM 表名称 WHERE 列名称 运算符 值 AND 列名称 运算符 值
总结: 可以将AND OR WHERE 组合起来使用,用于查找精确的数据
LIKE 于在 WHERE 子句中搜索列中的指定模式,类似于正则表达式
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern
ORDER BY 语句用于对结果集进行排序
SELECT 列名称 FROM 表名称 ORDER BY 列名称
SELECT 列名称 FROM 表名称 ORDER BY 列名称 DESC
LIMIT 规定返回数据集合的最大值
"SELECT column_name(s)
FROM table_name
LIMIT number"
INTO 从一个表中选取输出并复制到另一个表中,用于备份数据库
SELECT *
INTO new_table_name IN externaldatabase
FROM old_tablename
"SELECT *
INTO Persons_backup
FROM Persons
INSERT INTO 项数据库添加新行
INSERT INTO 表名称 VALUES (值1, 值2,....) 添加所有值
INSERT INTO 表名称 (列1, 列2,...) VALUES (值1, 值2,....)
UPDATE 修改表中的数据
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
UPDATE 表名称 SET 列名称1 = 新值1,列名称2 = 新值2,…. WHERE 列名称 = 某值
DELETE 删除表中的行
DELETE FROM 表名称 WHERE 列名称 = 值
DELETE * FROM table_name
import pymysql
con = pymysql.connect('localhost','root','123456')
con.select_db('test')
sql = ''' INSERT INTO person VALUES(NULL,'jack',18,'Beijing')
'''
with con.cursor()as cursor:
cursor.execute(sql)
con.commit()
con.close()
import pymysql
con = pymysql.connect('localhost','root','123456')
con.select_db('test')
list = [(None,'jack',18,'beijing'),(None,'bob',20,'shanghai'),(None,'alice',10,'beijing'),(None,'luna',18,'shengzheng')]
with con.cursor()as cursor:
cursor.executemany('INSERT INTO person VALUES(%s,%s,%s,%s)',list)
con.commit()
con.close()
import pymysql
con = pymysql.connect('localhost','root','123456')
con.select_db('test')
sql = 'SELECT * FROM person'
with con.cursor()as cursor:
cursor.execute(sql)
data = cursor.fetchall()
for i in data:
print(i)
con.close()
import pymysql
con = pymysql.connect('localhost','root','123456')
con.select_db('test')
sql = "SELECT * FROM person where address = 'beijing'"
with con.cursor()as cursor:
cursor.execute(sql)
data = cursor.fetchall()
for i in data:
print(i)
con.close()
import pymysql
con = pymysql.connect('localhost','root','123456')
con.select_db('test')
sql = "SELECT * FROM person where age > 10"
with con.cursor()as cursor:
cursor.execute(sql)
data = cursor.fetchall()
for i in data:
print(i)
con.close()
import pymysql
con = pymysql.connect('localhost','root','123456')
con.select_db('test')
sql = "SELECT * FROM person where age > 10 AND address = 'beijing'"
with con.cursor()as cursor:
cursor.execute(sql)
data = cursor.fetchall()
for i in data:
print(i)
con.close()
import pymysql
con = pymysql.connect('localhost','root','123456')
con.select_db('test')
sql = "SELECT * FROM person ORDER BY age DESC"
with con.cursor()as cursor:
cursor.execute(sql)
data = cursor.fetchall()
for i in data:
print(i)
con.close()
import pymysql
con = pymysql.connect('localhost','root','123456')
con.select_db('test')
sql = "UPDATE person set age = 16 WHERE name = 'jack'"
with con.cursor()as cursor:
cursor.execute(sql)
con.commit()
con.close()
import pymysql
con = pymysql.connect('localhost','root','123456')
con.select_db('test')
sql = "DELETE FROM person WHERE name = 'jack'"
with con.cursor()as cursor:
cursor.execute(sql)
con.commit()
con.close()
import pymysql
con = pymysql.connect('localhost','root','123456')
con.select_db('test')
sql = "DELETE FROM person"
with con.cursor()as cursor:
cursor.execute(sql)
con.commit()
con.close()
import pymysql
con = pymysql.connect('localhost','root','123456')
con.select_db('test')
sql = '''ALTER TABLE person
ADD sex VARCHAR(255)
'''
with con.cursor()as cursor:
cursor.execute(sql)
con.commit()
con.close()
import pymysql
con = pymysql.connect('localhost','root','123456')
con.select_db('test')
sql = '''DROP TABLE person
'''
with con.cursor()as cursor:
cursor.execute(sql)
con.commit()
con.close()
import pymysql
con = pymysql.connect('localhost','root','123456')
sql = '''DROP DATABASE test
'''
with con.cursor()as cursor:
cursor.execute(sql)
con.commit()
con.close()