主流数据库的使用教程
前言
我的个人网站:https://www.gentlecp.com
本文仅就个人使用中常见的数据库使用方法进行介绍,内容简练,拒绝废话。
一. sqlite
开源的嵌入式关系数据库,相较其他数据库安装运行非常方便,实现一个文件即数据库。
1.1 安装
python2.5以上版本中自带sqlite3,只要安装了python直接就可以import sqlite3使用
其他的具体可参考此网站
1.2 DDL(数据定义语言)
创建数据库
CREATE DATABASE db_name
删除数据库
DROP DATABASE db_name
创建新表
CREATE TABLE table_name(
column1 [type] (PRIMARY KEY) (NOT NULL),
column2 [type],
....
注:用[]包围的意为多类型变量,实际使用需要用具体类型替换,用()包围的意为可有可无的语句,用{}包围的意为具体值
SQL语句不区分大小写,个人建议写代码的时候已有关键字采用大写,其他如表名,列名由自己编写的名称采用小写,直观便于区分理解。
下面是具体可选的type(数据类型)与对应含义
type | 含义 |
---|---|
INTEGER(size) INT(size) SMALLINT(size) TINYINT(size) |
整数类型,size代表最大的位数,也可以不写,有趣的是即便你存储位数超过你限定的位数,一般也会 正常显示,具体可以看看这篇文章 |
DECIMAL(size,d) NUMERIC(size,d) |
小数类型,size同整数类型,d为小数点右侧的最大位数 |
VARCHAR(size) | 可变长的字符串,即根据字符串实际大小分配长度(空间),一般字符串的用这个就行了 |
date(yyyymmdd) | 日期类型,形式为year+month+day |
修改表
ALTER TABLE table_name ADD column_name [type] #添加列
ALTER TABLE table_name ALTER COLUMN column_name [type] #修改某列数据类型
ALTER TABLE table_name DROP COLUMN column_name #删除表中某列
删除表
DROP TABLE table_name
1.3 DML(数据操作语言)
查数据
SELECT * FROM table_name #获取某表中所有数据
SELECT (DISTINCT) column1,column2,... FROM table_name #查询某表中特定列的数据,DISTINCT用于去除表中重复值
SELECT column1,column2,... FROM table_name WHERE column [operator] {value} #带条件的查询,value若是字符串需加''
SELECT column1,column2,... FROM table_name WHERE
column1 [operator1] {value1} AND column2 [operator2] {value2} #多条件查询,AND可用OR替换
SELECT column1,column2,... FROM table_name
ORDER BY column1 (DESC), column2 (ASC) #排序,先按照column1降序排列,再按照column2升序排列
查询数据还有许多复杂的语句,但是没必要贪多,以上几条能熟练运用就可以了。
下面是具体可选的条件语句中的操作符[operator]
operator | 含义 |
---|---|
= | 等于 |
<> | 不等于,有些数据库可以用 != 但是建议统一用这个 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在此范围内搜索 |
LIKE | 按某种模式搜索,用法可参考此文章 |
插入数据
INSERT INTO table_name(column1,column2,...) VALUES({value1},{value2},...) #往特定表的特定列中插入数据
实际代码中编写插入数据的时候{value}一般用%s替代,代表可变的数据,进行excute执行SQL语句操作的时候将数据作为参数传入。
更新数据
UPDATE table_name SET column1 = {value1} WHERE column2 = {value2}
#修改指定表column2的值为value2的column1的值为value1,好绕口- -|||
删除数据
DELETE FROM table_name WHERE column = {value} #删除指定表中column值为value的单条数据
1.4 python操作sqlite
创建数据库
import sqlite3
#创建数据库
con = sqlite3.connect('test.db') #在硬盘上创建数据库,生成.db文件
#con = sqlite3.connect(':memory') #在内存中创建临时数据库,程序结束后自动销毁
cur = con.cursor() #游标对象,用于支持sql语句的执行以及记录的获取
建表
SQL_CREATE_TABLE = '''
CREATE TABLE person(
id INTEGER PRIMARY KEY NOT NULL,
name VARCHAR(30),
age INT(4)
)
''' #SQL语句的编写建议像这样分行,增强可读性
cur.execute(SQL_CREATE_TABLE)
插入数据
data_single = (1,"GentleCP",100)
SQL_INSERT_DATA = '''
INSERT INTO person(id,name,age)
VALUES(?,?,?)
''' #注意这里我采用了占位符,这种方式能够规避SQL注入,建议统一
cur.execute(SQL_INSERT_DATA, data_single)
try:
con.commit() #插入数据后只是在缓冲区,需要提交事务才能写到数据库
except:
con.rollback() #如果提交失败,则回滚之前的插入操作
data_multiple = [
(2,"HappyCP",10