【数据库系统 -4】SQL常用语句合集(附面试应该掌握的基础知识点)

面前后端的时候,SQL语句可以说是必被问到的一环。没有SQL语句,数据库就只停留在理论和设计阶段,无法实现。本节介绍常用的SQL语句合集(注意这里我们介绍的是SQL的基石,也就是从这些语句出发可以通吃SQL,包括像本节没介绍的嵌套查询等,万丈高楼平地起,掌握这些基本的其他都可以类推了),下节将如何将零散的SQL语句向像C/Java语言那样进行结构化设计。某些数学建模比赛提供的数据集,也可以导入到SQL数据库中进行数据清洗。

所谓SQL,全称是Structured Query Language,中文名为结构化查询语言,SQL是关系数据库的标准语言,集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功能于一体,可以独立完成数据库生命周期的全部活动,比如定义关系模式、维护数据库、安全控制等。SQL的嵌入性也很好,如嵌入到Java中,可以使用JDBC进行数据库交互;其他如嵌入到PHP,Python等。SQL的标准十分庞大,目前没有一个数据库能够支持SQL标准的所有概念和特性。
在这里插入图片描述
在这里插入图片描述
除了了解SQL,在准备面试的时候,我们其实也还需要准备一些其他可以和面试官apa的话题:
常见的关系型数据库如下,了解其对应的一些特性请参考这里

  • MySQL
  • Oracle
  • DB2
  • Microsoft SQL Server
  • Microsoft Access
    在这里插入图片描述

常见的非关系型数据库有:

  • MongoDB
  • redis(最好要准备一下这个类型的数据库,大概率问到→_→)
    在这里插入图片描述

详细了解请参考这里,文末还有一些面试时数据库应该掌握的知识点,有需取。下面先讲完基本的SQL语句:

  1. 登录数据库:mysql -u <用户名> -p <口令>
  2. 查看现有数据库:show databases;
  3. 新建数据库:create database <数据库名>;
  4. 选择数据库:use <数据库名>;
  5. 删除数据库:drop database <数据库名>;
  6. 查看一个数据库中的表:show tables;
  7. 创建新表,模板是:
CREATE TABLE <表名> (
	<列名1> <列类型1>,
	<列名2> <列类型2>,
	...
	PRIMARY KEY(<某列名>),
	FOREIGN KEY(<某列名>) REFERENCE <某表名>(某列名)
);

实例:
CREATE TABLE instructor (
    ID CHAR(5),
    name VARCHAR(20) NOT NULL,
    dept_name VARCHAR(20),
    salary NUMERIC(8,2), 
    PRIMARY KEY (ID),
    FOREIGN KEY (dept_name) REFERENCES department(dept_name));
  1. 在表中插入新记录:
INSERT INTO <表名>(<1>, <2>...) VALUES (<1>, <2>...)
注:如果省略前面列名,则插入必须按照次序
  1. 在表中更新记录:
UPDATE <表名> SET <1>=<1>... WHERE <条件>
  1. 清空表:delete from <表名>
  2. 删除表:drop table <表名> where <条件>
  3. 查询:select <列名1>, <列名2>... from <表名> WHERE <条件>
    注:加上DISTINCT可以去除重复的值
  4. 分组,经常和COUNT,MAX,MIN,SUM,AVG等联用:
select <列名1>, <列名2>... from <表名> GROUP BY <列名>;

实例:
SELECT COUNT(course_id), dept_name 
     FROM course 
     GROUP BY dept_name;
  1. HAVING:
    HAVING的一般用法是在分组查询中:
select <列名1>, <列名2>... from <表名> GROUP BY <列名> HAVING <条件>;

在面试中,通常会遇到WHERE和HAVING的区别,这里做个回答:

  • WHERE针对行进行操作,在GROUP BY之前运行(也就是先通过WHERE筛选出符合条件的行,再通过GROUP BY语句对前面筛选出来的结果进行分组),WHERE子句中不能使用聚集函数
  • Having是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作,在Having可以使用聚合函数
  1. ORDER BY:select <列名1>, <列名2>... from <表名> WHERE <条件> ORDER BY <列名> ASC | DESC,默认ASC升序排序
  2. BETWEEN:选取区间范围select <列名1>, <列名2>... from <表名> WHERE <列名> BETWEEN <值1> AND <值2>
  3. LIKE:一般用于匹配文本模式,select <列名1>, <列名2>... from <表名> WHERE <列名> LIKE <模式>,如select * from course WHERE name LIKE '%math%'(name包含math模式),再如select * from course WHERE name LIKE 'CS%'(name以CS模式开头)
  4. IN:在某个集合里,格式为:select <列名1>, <列名2>... from <表名> WHERE <列名> IN (<值1>, <值2>...)
  5. JOIN:
    在关系代数一章节我们就已经讲述了外连接,左外连接和右外连接,之前也介绍过了这些连接的SQL语句,这里做个回顾:
  • 外连接:select <列名1>, <列名2> from <表1> join <表2> ON <表1>.<列1> = <表2>.<列2>
  • 左外连接:select <列名1>, <列名2> from <表1> left outer join <表2> ON <表1>.<列1> = <表2>.<列2>
  • 右外连接:select <列名1>, <列名2> from <表1> right outer join <表2> ON <表1>.<列1> = <表2>.<列2>
  1. 创建视图:
CREATE view <视图名> AS 
select <列名1>, <列名2>... from <表名>;
  1. 删除视图:drop view <视图名>
  2. 修改表列:ALTER TABLE <表名> <ADD | ALTER | DROP ...> <列名> <新定义>

总结一下SQL中常用的数据类型:
在这里插入图片描述

面试补充

戳此学习
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值