数据存储(数据库)

这里写图片描述

SQL语法

数据定义语言(DDL)

DDL语句 含义
CREATE DATABASE 创建数据库
DROP DATABASE 修改数据库
CREATE TABLE 创建新表
ALTER TABLE 变更数据库表
DROP TABLE 删除表
CREATE INDEX 创建索引
DROP INDEX 删除索引

SQL支持数据类型

数据类型 含义
integer(size)
int(size)
smallint(size)
tinyint(size)
整数
decimal(size,d)
numeric(size,d)
小数
char(size) 固定长度字符串
varchar(size) 可变长度字符串
date(yyyymmdd) 日期

数据操作语言(DML)

语法 含义
SELECT 查询数据库表中的数据
UPDATE 更新数据库表中的数据
DELETE 删除数据库表中的数据
INSERT INTO 向数据表中插入数据

WHERE语句语法:SELECT 列名称 FROM 表名称 WHERE 列 运算符 值

运算符

运算符 含义
= 等于
<> 不等于,有的数据库写为!=
> 大于
< 小于
=
大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 按某种模式搜索

SQLite

增删改查操作

作用 命令
创建数据库和表 CREATE TABLE person(id integer primary key,name varchar(20),age integer);
增加 INSERT INTO person(name,age) VALUES(‘qiye’,20);
修改 UPDATE person SET age=17 WHERE name=’qiye’;
查询 SELECT*FROM person;
删除 DELETE FROM person WHERE name=’qiye’;

常用命令

作用 命令
显示表结构 .schema [table]
获取所有表和视图 .tables
获取指定表的索引列表 .indices [table]
导出数据库到SQL文件 .output [filename]
.dump
.output stdout
从SQL文件导入数据库 .read [filename]
格式化输出数据到CSV格式 .output [filename.csv]
.separator,
select*from test;
.output stdout
从CSV文件导入数据到表中 create table newtable (id integer primary key,name varchar(20),age integer);
.import [filename.csv] newtable
备份数据库 sqlite3 test.db .dump>backup.sql
恢复数据库 sqlite3 test.db

控制事物

命令 作用
BEGIN TRANSACTION 启动事务处理
COMMIT 保存更改
ROLLBACK 回滚更改

Python操作SQLite

数据库连接对象

方法 作用
cursor() 创建游标对象
commit() 事务提交
rollback() 事务回滚
close() 关闭一个数据库连接

游标对象的使用

方法 作用
execute() 执行sql语句
executemany() 执行多句sql语句
close() 关闭游标
fetchone() 选取一条记录,并指向下一条记录
fetchmany() 选取多条记录
fetchall() 选取所有记录
scroll() 游标滚动
import sqlite3

#创建/打开数据库(指定路径)
con=sqlite3.connect('/home/as/test.db')
#创建/打开数据库(内存)
con=sqlite3.connect(':memory:')

#创建游标对象
cur=con.cursor()

#建表
cur.execute('CREATE TABLE person(id integer primary key,name varchar(20),age integer)')

#插入数据
cur.execute('INSERT INTO person VALUES (?,?,?)',(0,'qiye',20))
cur.executemany('INSERT INTO person VALUES (?,?,?)',[(3,'marry',20),(4,'jack',20)])
#提交操作
con.commit()
#出现错误——>回滚操作
con.rollback()

#查询数据
cur.execute('SELECT*FROM person')
res=cur.fetchall()
for line in res:
    print(line)

cur.execute('SELECT*FROM person')
res=cur.fetchone()
print(res)

#修改和删除数据
cur.execute('UPDATE person SET name=? WHERE id=?',('rose',1))
cur.execute('DELETE FROM person WHERE id=?',(0,))
con.commit()
con.close

MySQL

关键字

MySQL关键字 含义
NULL 数据列可包含NULL值
NOT NULL 数据列不允许包含NULL值
DEFAULT 默认值
PRIMARY KEY 主键
AUTO_INCREMENT 自动递增,适用于整数类型
UNSIGNED 无符号,整型如果加了insigned,最大值会翻倍
CHARACTER SET name 指定一个字符集

创建数据库与表

命令 含义 示例
create database 数据库名[其他选项]; 创建数据库 create database test character set gbk;
use 数据库名 选择数据库 use test;
create table 表名称(列声明1,列声明2,…) 创建表 create table student(id int unsigned not null auto_increment primary key,
name char(8) not null,sex char(4) not null,age tinyint unsigned not null);

增删改查操作

作用 命令
增加 insert into student values (NULL,’七夜’,’男’,24);
修改 update student set age=18 where name=’七夜’;
查询 select name,age from student;
删除 delete from student where age=18;

表结构操作

表结构操作 语法格式
添加列 alter table student add address varchar(60) after age;
修改列 alter table student change address addr char(60);
删除列 alter table student drop addr;
重命名表 alter table student rename students;

删除数据库和表

功能 语法格式 例子
删除表 drop table 表名; drop table student;
删除数据库 drop database 数据库名; drop database test;

常用命令

操作 细分 命令
连接MySQL 本机
远程主机
mysql-u root-p;
mysql-h IP -u 用户名 -p 密码
修改密码 加密码
改密码
mysqladmin -u 数据库 -password 密码
mysqladmin -u root -p 旧密码 -password 新密码
增加新用户 grant 权限1,权限2,…权限n on 数据库名.表名 to 用户名@用户地址identified by’密码’;
显示数据库 mysql>show databases;
备份数据库 导出整个数据库
导出一个表
mysqldump -u user_name -p123456 database_name>outfile_name.sql
mysqldump -u user_name -p123456 database_name table_name>outfile_name.sql

Python操作MySQL

数据库连接对象

方法 作用
cursor() 创建游标对象
commit() 事务提交
rollback() 事务回滚
close() 关闭一个数据库连接

游标对象的使用

方法 作用
execute() 执行sql语句
executemany() 执行多句sql语句
close() 关闭游标
fetchone() 选取一条记录,并指向下一条记录
fetchmany() 选取多条记录
fetchall() 选取所有记录
scroll() 游标滚动
import pymysql

#打开数据库
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='3141596', db='test', charset='utf8')

#创建游标对象
cur=conn.cursor()

#建表
cur.execute('CREATE TABLE person (id int not null auto_increment primary key,name varchar(20),age int)')

#插入数据
cur.execute('INSERT INTO person (name,age) VALUES (%s,%s)',('qiye',20))
cur.executemany('INSERT INTO person (name,age) VALUES (%s,%s)',[('marry',20),('jack',20)])
#提交操作
conn.commit()
#出现错误——>回滚操作
conn.rollback()

#查询数据
cur.execute('SELECT*FROM person')
res=cur.fetchall()
for line in res:
    print(line)

cur.execute('SELECT*FROM person')
res=cur.fetchone()
print(res)

#修改和删除数据
cur.execute('UPDATE person SET name=%s WHERE id=%s',('rose',1))
cur.execute('DELETE FROM person WHERE id=%s',(1,))
conn.commit()
conn.close()

MongoDB

SQL&MongoDB

SQL概念 MongoDB概念 说明
database database 数据库
table collection 表/集合
row document 行/文档
column field 字段列/域
index index 索引
primary key primary key 主键

数据库操作&文档操作

语法 操作
use DATABASE_NAME 创建数据库
db.dropDatabase() 删除数据库
db.COLLECTION_NAME.insert(document) 插入文档
db.COLLECTION_NAME.find()
db.COLLECTION_NAME.find().pretty()
集合中查找文档
易读方式读取文档
updatea()
save()
更新
remove() 删除文档

条件语句和操作符(单条件)

这里写图片描述

条件语句和操作符(条件组合)

AND条件

db.COLLECTION_NAME.find({key1:value1,key2:value2}).pretty()

OR条件

这里写图片描述

import pymongo
import datetime

#建立连接
client=pymongo.MongoClient() #默认主机IP和端口
client=pymongo.MongoClient('localhost',27017) #指定主机IP和端口
client=pymongo.MongoClient('mongodb://localhost:27017') #URL格式连接

#获取数据库
db=client.papers
db=client['pa-pers']

# 获取集合
collection=db.books
collection=db['books']

#插入文档
book={
        "author":"Mike",
        "text":"My first book!",
        "tags":["爬虫","Python","网络"],
        "date":datetime.datetime.utcnow()
}
book_id=collection.insert(book)


books=[{
    "author":"Mike",
    "text":"My first book!",
    "tags":["爬虫","python","网络"],
    "date":datetime.datetime.utcnow()
},{
    "author":"As",
    "text":"My sec book!",
    "tags":["可视化","python","图表"],
    "date":datetime.datetime.utcnow()
}]
books_id=collection.insert(books)

#查询文档
#单个文档
collection.find_one({"author","As"})
#多个文档
for book in collection.find():
    print(book)

collection.find({"author":"As"}).count() #符合条件文档个数

#修改文档
collection.update({"author":"As"},{"$set":{"text":"python book"}})
#删除文档
collection.remove({"author":"As"})

猜你喜欢

转载自blog.csdn.net/weixin_39777626/article/details/81566672