MySQL与SQL语言实战(三)进阶知识与面试要点

一、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的应用场景
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容