前言
这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题
于是乎,我自己开发了一款面试宝典,希望能帮到大家,也希望有更多的Python新人真正加入从事到这个行业里,让python火不只是停留在广告上。
微信小程序搜索:Python面试宝典
或可关注原创个人博客:https://lienze.tech
也可关注微信公众号,不定时发送各类有趣猎奇的技术文章:Python编程学习
SQL
什么是sql
SQL 是结构化查询语言(Structured Query Language
),一种用于存储、操作或者检索存储在关系型数据库 中数据的计算机语言
SQL 是关系型数据库系统(Relation Database System)的标准语言。所有的关系型数据库管理系统,例如 MySQL、MS Access、Oracle、Sybase、Informix、Postgres SQL 和 SQL Server,都使用 SQL 作为其 标准数据库语言
sql的意义
- 允许用户访问关系型数据库中的数据
- 允许用户对数据做出描述
- 允许用于定义数据库中的数据,并对其进行操作
- 允许通过 SQL 模块、库或者预编译器的等方式,嵌入到其他语言中
- 允许用户创建或删除数据库和表
- 允许用户在数据库中创建视图、存储过程和函数
- 允许用户对表、过程和视图设进行限设置
语句分类
数据定义语句(ddl)
数据定义语言DDL用来创建数据库中的各种对象,如表、视图
sql语句 | 解释 |
---|---|
CREATE | 创建新的表,视图或其他数据库中的对象 |
ALERT | 修改现存一张表对象,字段或其他属性 |
DROP | 删除表,视图或者数据库中的其他对象 |
数据操纵语句(dql/dml)
sql语句 | 解释 |
---|---|
SELECT | 从一张或多张表中检索数据 |
INSERT | 创建一条新的数据记录 |
UPDATE | 修改一条数据记录 |
DELETE | 删除一条数据记录 |
数据控制语句(dcl)
数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等
sql语句 | 解释 |
---|---|
GRANT | 赋予或者修改用户权限 |
REVOKE | 回收用户权限 |
关系型数据库
什么是关系型数据库
RDBMS 是关系型数据库管理系统(Relational DataBase Management System)的缩写,它是 SQL 以及所 有现代数据库系统,例如 MS SQL Server、IBM DB2、Oracle、MySQL 和 MS Access等的基础
关系型数据库管理系统(RDBMS)是一种基于 E.F. 科德提出的关系模型的数据库管理系统
什么是表
RDBMS 中的数据存储在被称作表的数据库对象中。表是相互关联的数据记录的集合,由一系列的行和列组成
表是关系型数据库中最常见也是最简单的数据存储形式,如下所示:
+-------+------+
| name | age |
+-------+------+
| test1 | 1 |
| test2 | 2 |
| test3 | 3 |
| test4 | 4 |
+-------+------+
什么是字段
表中存储数据真正具有意义的部分,如上中表的name、age即为字段
字段限定了当前表的列,类似表格的表头,用来维护当前列数据的字段类型和约束关系等
什么是记录行
一条实际的表中数据即为记录行
+-------+------+
| name | age |
+-------+------+
| test1 | 1 |
+-------+------+
类似表格文件中的每一行数据
什么是列
在表中竖直排列的数据,类似表格中的一列相同字段下的数据
+-------+
| name |
+-------+
| test1 |
| test2 |
| test3 |
| test4 |
+-------+
表中的空值
如果数据在存储过程不存储实际数据,可以使用空值占位写入,表示为NULL
约束类型
约束是表中的数据列必须遵守的规则,用于限制表中数据的类型
约束保证了数据库中数据的精确性和可靠性。 约束可以限制列或者表
列级的约束只限制单一的列,而表级的约束作用于整个表
- 常见约束如下
约束类型 | 约束解释 |
---|---|
NOT NULL | 保证列中数据不能有 NULL 值 |
DEFAULT | 提供该列数据未指定时所采用的默认值 |
UNIQUE | 保证列中的所有数据各不相同 |
主键 | 唯一标识数据表中的行/记录 |
外键 | 唯一标识其他表中的一条行/记录 |
CHECK | 此约束保证列中的所有值满足某一条件 |
索引 | 用于在数据库中快速创建或检索数据 |
数据类型
整数类型
数据类型 | 下限 | 上限 |
---|---|---|
BIGINT | -9,223,372,036,854,770,000 | 9,223,372,036,854,770,000 |
INT | -2,147,483,648 | 2,147,483,647 |
SMALLINT | -32,768 | 32,767 |
TINYINT | 0 | 255 |
BIT | 0 | 1 |
NUMERIC(sql server) | 1E+38 | 10^38 -1 |
MONEY(sql server) | -922,337,203,685,477.00 | 922,337,203,685,477.00 |
SMALLMONEY(sql server) | -214,748.36 | 214,748.36 |
浮点数类型
数据类型 | 描述 | 大小 |
---|---|---|
FLOAT(M,D) | 单精度浮点数值,M全部位,D小数位 | 4个字节 |
DOUBLE(M,D) | 双精度浮点数值,M全部位,D小数位 | 8个字节 |
DECIMAL(M,D) | 用于精度要求非常高的计算,指定数值的精度和计数方法作为选择参数 | 货币数据 |
日期类型
数据类型 | 描述 | 大小 |
---|---|---|
DATETIME | 从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 3.33 毫秒 | 8字节 |
DATE | 仅存储日期,从 0001 年 1 月 1 日 到 9999 年 12 月 31 日 | 3 bytes |
TIME | 仅存储时间。精度为 100 纳秒 | 3-5字节 |
TIMESTAMP | 存储为时间戳格式, | 4字节 |
SMALLDATETIME(sql server) | 从 1900 年 1 月 1 日 到 2079 年 6 月 6 日,精度为 1 分钟 | 4字节 |
注意:datetime 的时间和精度为3.33ms,而smalldatetime的时间精度为1min
字符串数据类型
数据类型 | 描述 | 上限 |
---|---|---|
CHAR | 字符/字符串类型 | 255 字符;定长 |
VARCHAR | 字符/字符串类型 | utf-8编码21845个字符;gbk编码32766个字符;不定长 |
TEXT | 字符/字符串类型 | 存放最大长度为 65,535 个字符的字符串 |
MEDIUMTEXT | 字符/字符串类型 | 存放最大长度为 16,777,215 个字符的字符串 |
LONGTEXT | 字符/字符串类型 | 存放最大长度为 4,294,967,295 个字符的字符串 |
EMUN | 枚举类型 | 类似于单选项,允许输入可能值的列表,可以在 ENUM 列表中列出最大 65535 个值,如果列表中不存在插入的值,则插入空值 |
SET | 多选枚举类型 | SET 最多只能包含 64 个列表项,但 SET 可存储一个以上的选择 |
二进制数据
数据类型 | 描述 | 大小 |
---|---|---|
TINYBLOB | 不超过 255 个字符的二进制字符串 | 255字节 |
BLOB | 二进制形式的长文本数据 | 65535字节 |
MEDIUMBLOB | 二进制形式的中等长度文本数据 | 16777215字节 |
LOGNGBLOB | 二进制形式的极大文本数据 | 4294967295字节 |
操作符
算术运算符
支持:+、-、*、/、%
mysql> select 10 + 20;
+---------+
| 10 + 20 |
+---------+
| 30 |
+---------+
比较运算符
支持:=、!=、<>、>、<、>=、<=、!<、!>