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"})