一、DDL
- DDL(数据定义语言)是用来定义数据结构,完成数据库对象的创建(CREATE)、修改(ALTER)、删除(DROP)
1、DDL的获取
image.png
2、关键名字
- 主键:表中记录的唯一标识符,不重复,非空
- 外键:字段中的值来自于其他表的主键
- 索引:加速表的查询
3、常用函数
- 字符串
- 日期
- 数字
- 系统自定义函数:Hadoop Spark Flink SQL
二、MySQL管理
1、日志
slow log
bin log
- 查询执行日志
SET GLOBAL general_log = 'ON';
SHOW VARIABLES LIKE "general_log%";
SELECT* FROM mysql.general_log;
- 执行结果
'general_log','ON'
'general_log_file', '/var/lib/mysql/d1cbef4ec7bf.log' # 日志位置
image.png
-
进入mysql容器查看日志
image.png
2、备份
- dump: mysqldump 备份即导出
-
load: source 还原即导入
image.png
image.png
- 示例:
mysqldump -h [ip] -u root -p[password] --databases [database_name]
-
-h
:指定host -
-c
:压缩 -
-p
:密码 -
--databases
:指定数据库名
image.png
image.png
-
3、使用python与pymysql
- 安装依赖:
pip install mysql-connector-python
import pymysql.cursors
# Connect to the database
connection = pymysql.connect(
host='localhost',
user='user',
passwd='password',
db='db',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor
)
try:
with connection.cursor() as cursor:
# Create a new record
sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
cursor.execute(sql, ('webmaster@python.org', 'very-secret'))
except Exception as e:
print(e)
import datetime
import mysql.connector
cnx = mysql.connector.connect(user= 'scott', database= 'employees' )
cursor = cnx.cursor( )
query = ("SELECT first_name, last_name, hire_date FROM employees"
"WHERE hire_date BETWEEN %s AND %s")
hire_start = datetime.date(1999, 1, 1)
hire_end = datetime.date(1999, 12, 31)
cursor.execute(query,(hire_start, hire_end))
for (first_name, last_name, hire_date) in cursor:
print("{},{} was hired on {:%d %b %Y}".format(
last_name, first_name, hire_date))
cursor.close()
cnx.close()
三、数据库面试题
1、数据库面试知识点结构
- 数据定义:DDL
- sql基本查询知识:DML
- sql的知识进阶:DML
- 数据库实操经验:自身机制与性能
2、数据定义
- 数据类型:常见数字类型、字符串类型(varchar) 等
- 关系定义:主键、外键、索引
- 表结构修改:alter
3、sql基本查询
- 条件查询
- 分页查询
- 聚合查询
- 更新符合条件数据
- 删除符合条件数据
4、sql进阶
- 连接(Join) 查询:inner、 left、 right、 full、cross
- 事务:定义与语法
- 索引:价值与用途
- 存储过程:如何对存储过程进行测试
5、数据库使用经验
- 常见数据库:mysql、oracle、mongodb、redis
- 数据库的部署:docker、开放端口、连接方式
- 数据库备份与恢复:mysqldump、mysql
- 性能统计:连接数、slowsql
- 加锁机制:悲观锁、乐观锁、行锁、表锁
6、推荐书籍与学习建议
- SQL必知必会(第4版)
- 高性能MySQL (最新版)
- MySQL官方文档
- 熟悉MySQL,不要学习SQL Server等边缘数据库
- 学好SQL,RDBMS与NoSQL产品多数也都支持SQL
- NoSQL数据库多数应用于大数据,可以用于拔高了解
- 使用Python Flask编写一个小网站熟悉下SQL的应用场景