基于最近面试的内容,复习一下SQL的基础知识,找找感觉。
第一章 数据库和SQL
1、数据库database:存储数据的仓库,通过计算机加工而成的可以进行高效访问的数据集合。
2、数据库管理系统DBMS:用来管理数据库的计算机系统。可实现多个用户同时安全简单地操作大量数据。
DBMS的种类(以数据的保存格式分类):
- 层次数据库HDB:把数据通过层次结构(树形结构)的方式表现出来。
- 关系数据库RDBMS:由行和列组成的二维表来管理数据,使用SQL来操作数据。
- 面向对象数据库OODB:将数据以及对数据的操作集合起来以对象为单位进行管理。
- XML数据库:
- 键值存储系统Key-Value Store:用来保存查询所使用的的主键和值的组合的数据库。常用的有MangoDB
- 图数据库:用来存储关系网络的数据库,常见的有Neo4j
3、客户端——SQL语句——服务器——操作数据库——返回数据
4、SQL根据操作目的可以分为DDL、DML和DCL:
- DDL:数据定义语言,包括create、drop、alter
- DML:数据操作语言,包括select、insert、update、delete
- DCL:数据控制语言,包括commit(确认对数据库中的数据进行的变更)、rollback(取消变更)、grant(服务用户操作权限)、revoke(取消用户的操作权限)
5、SQL的基本书写规则:
- sql语句以分号结尾
- 关键字大写、表名的首字母大写、列名小写
- 在书写日期与字符串时,加单引号
6、表的创建:
-
通过CREATE TABLE 语句创建
-
表和列的命名要使用有意义的文字
-
指定列的数据类型(整数型、字符型、日期型等)
- INTEGER 整型
- CHAR \ VARCHAR(可变长度)
- DATE 日期型
-
可在表中设置约束(主键约束和NOT NULL约束等)
- 对数据进行限制或者追加条件
- NOT NULL约束
- 主键约束 PRIMARY KEY
- comment 字段备注
- DEFAULT 默认值
-
建表时注意设置默认字符集:default charset=utf8,否则不支持中文
-
# 更改已创建好的表格的字符集charset ALTER TABLE t1 CONVERT TO CHARACTER SET utf8mb4;
7、表的删除和更新:
-
DROP TABLE 删除表
-
ALTER TABLE 表名 ADD (COLUMN) \ DROP 在表格中添加列或者删除列
修改列的数据类型:ALTER TABLE 表名 MODIFY 列名 新数据类型;
-
INSERT INTO 向表格中插入数据
-
表重命名:RENAME TABLE poduct to product;或者ALTER TABLE poduct RENAME TO product;
第二章 查询基础
1、SELECT语句基础:
- AS 设置别名,使用中文时需要用双引号括起来
- 常数的查询:使用字符串或者日期常数时,必须使用单引号’’;常数将出现在每一行。
- 使用DISTINCT或者GROUPBY 来删除重复行,执行过程中NULL也会作为一类
- DISTINCT 关键字只能用在第一个列名之前
- 多列使用时,数据组合去重
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MTw8ud7b-1595076801591)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1594711712208.png)]
- WHERE条件筛选
SELECT <列名>, ……
FROM <表名>
WHERE <条件表达式>;
**执行顺序:**首先通过WHERE 子句查询出符合指定条件的记录,然后再选取出 SELECT 语句指定的列 (选取行再输出列)
- 注释的书写方法:
- 一行注释:-- 注释内容
- 多行注释:/* 注释内容 */
2、算数运算符和比较运算符
- 算数运算符:
- 算数运算符:+、-、*、/ 加减乘除
- 包含NULL 的计算,结果都为NULL
- 比较运算符:
- 比较运算符:=、<、>、<>、>=、<=
- 字符串数据比较时按照字典顺序进行排序
- 不能对NULL值进行比较 ,可使用IS NULL 或者 IS NOT NULL
3、逻辑运算符
- SQL中的逻辑运算是包含对真、假和不确定进行运算的三值逻辑
- NOT(取反)、AND(并且、逻辑积)、OR(或者、逻辑和)
- AND运算符优先于OR运算符,多条件查询时需注意逻辑顺序
第三章 聚合与排序
1、对表进行聚合查询
- 聚合函数包括COUNT、SUM、AVG、MAX、MIN
- MAX / MIN 函数可适用于任何数据类型的列
- SUM / AVG 函数只能对数值型的列使用
- 可用于SELECT子句、HAVING子句、以及ORDER BY 子句(可用别名) <