SQL语法
两个部分:数据定义语言(DDL)和数据操作语言(DML)
前者用于创建或删除表格,定义索引,规定链接,施加约束
后者用于增删改查
SQL语法对大小写不敏感
primary key


关键词DISTINCT 加在 SELECT之后,用于合并重复值
有条件查找用到where子句

还可以使用and与or以及括号进行合并查找
排序则需要用到ORDER BY语句,默认按照ASC升序,可以改为DESC降序

update table_name set col_name=new_val where col_2 = val
delete from table_name where col=val 删除某个记录
insert into table_name(col1,col2...) values(val1,val2,...)
SQLite
.schema [table]显示表结构
.tables 显示所有表和视图
.indices 获取指定表的索引列表
.output [filename]
.dump
.output stdout
导出数据库到SQL文件
.read [filename]从SQL文件导入数据库

SQLite事务
begin transaction:启动事务处理
commit:提交更改 也可使用end transaction
rollback:回滚所做更改
这些命令只能与DML使用,对于创建和删除表数据库自动commit无法回滚
python操作SQLite
使用sqlite3模块




注:对于查询语句不需要con.commit,插入或修改中文数据时在中文字符串前加上‘u’
MySQL



创建库与表
create database database_name [character set gbk]编码设为gbk
使用数据库 use database_name
若担心语句过长,可以保存为sql文件,并使用以下方式执行sql
在登录MySQL时输入: mysql -D database_name -u user_name -p < sql_file_location
或登录之后,输入:source sql_file_location 或者 \. sql_file_location
增删改查
insert into
update set where
select from
delete from where
对表结构操作

删除drop
常用命令
- 连接MySQL
- 连接本机
mysql -u name -p - 远程主机
mysql -h ip_addr -u name -p password
- 连接本机
- 修改密码
mysqladmin -u name -p old_p password new_p - 增加新用户
grant 权限1,权限2.... on database_name.table_name to user_name@user_ip identified by 'new_password' - 显示数据库
show database - 备份数据库或表
mysqldump -h 主机名 -P 端口 -u user_name -p password -database 数据库名[表名]>文件.sql
python操作mysql
- Python2中使用模块
MySQLdb;在Python3中使用模块pymysql,基本功能相同 - 打开数据库
con=pymysql.connect(host='localhost',user='root',passwd='',db='',port=3306,charset='utf-8') - 数据库连接对象con
cursor()创建一个游标对象
commit()事务提交
rollback()事务回滚
close()关闭一个数据库连接 - 游标对象使用与SQLite相同
- 建表使用cur.execute
- 插入数据与sqlite一样不能使用一个字符串作为执行语句,容易导致sql注入,应该使用
%s占位符,具体方式与sqlite相同,同样需要使用commit()提交后生效 - 查询修改与删除和sqlite相同
MongoDB
基于分布式文件存储的数据库,非关系型数据库但很像关系型数据库,更适合爬虫。
MongoDB的安装
参见14.1
MongoDB基础
属于NoSQL数据库,与SQL概念对比

**文档:**基本数据单元(BSON)文档有唯一标识_id,数据库自动生成,以key/value方式组织文档;文档键值对有序,顺序不同文档不同;值可以使用字符串,整型,列表,文档等类型;键名不能有\0(空字符),其用来标识键尾,.和$被保留,不能以_开头;区分大小写及类型
**集合:**没有固定结构,可以插入不同格式和类型的数据;集合名不能为空字串;不含有\0标识集合名结尾;不能以system.开头;不能含有保留字符
**数据库:**一个MongoDB实例中有多个数据库,默认数据库为“db”
常见数据库类型

创建删除数据库与集合文档增删改查
use database_name使用指定数据库,如果没有则会创建,但在使用show dbs时,如果数据库没有数据,就显示不出来。
db.dropDatabase()删除当前数据库
文档的数据结构和JSON基本相同,BSON是JSON的一种二进制存储格式。
db.collection_name.insert()或db.collection_name.save()插入一个字典(文件),自动创建不存在的集合
db.collection_name.find()进行查询,后面加上.pretty()使得输出更易读


db.collection_name.update(query, update,{upsert:bool,multi:bool,writeConcern:document})或db.collection_name.save(document,{writeConcern:document})来更新,

save()更新方法需要使用分配的_id

db.collection_name.remove(query,{justOne:bool, writeConcern:document})进行删除
python操作MongoDB
使用pymongo模块
建立连接: client = pymongo.MongoClient()或MongoClient(‘localhost’,‘27017’)或MongoClient('mongodb://localhost:27017/)
获取数据库: 以属性方式获取数据库,如client.test或client[‘paper’];获取文档的方式与之一致
插入文档: collection_name.insert(document) 可多个值以列表的形式插入,返回_id值,可自己赋予,也可自动创建
查询文档: collection_name.find_one(query) 匹配query查询或使用find()获取多个文档,返回一个Cursor实例,以迭代方式读取,find().count()则查询文件数量
修改和删除分别使用update和remove
本文详述了SQL(包括DDL和DML)与NoSQL数据库(如MongoDB)的基本操作,涵盖创建、查询、更新和删除数据,以及Python操作数据库的方法。深入解析了SQL的SELECT、INSERT、UPDATE、DELETE语句,MongoDB的文档、集合和数据库管理,以及Python中sqlite3、pymysql和pymongo模块的使用。

1544

被折叠的 条评论
为什么被折叠?



