如何快速入门SQL语句

163 阅读8分钟

数据库与SQL语句介绍

数据库介绍

  • 概念

    数据库定义:数据存储的地方

  • 特点

    1. 长期存储数据

    2. 对于数据进行有组织的管理

      体现:通过操作指定的语句完成数据的增、删、改、查

  • 数据库的分类

    关系型数据库

    ​ 存储格式:二维表

    ​ 常见关系型数据:MySQL、Oracle、SQL Server、SQLite

    ​ Oracle:用于大型项目(银行项目)

    ​ Mysql:用于中小型项目(目前最常用的数据库)

    非关系型数据库

    redis:键值对

    MangDB:文档

    Hbase:(大数据存储)分布式存储

  • 关系型数据库核心要素

    数据行---(一条记录)

    数据列---(字段)

    数据表---(数据行的集合)

    数据库---(数据表的集合,一个数据库中能够有多个数据表)

    说明:先创建数据库,再创建数据表,接着定义表的列(字段),最后往写入一条一条数据。

  • SQL语句介绍

    SQL语句:结构化查询语言,通过SQL语句对数据库进行操作

    对于数据库的操作(主要):

    ​ 数据查询:查询语句

    ​ 数据更改:新增、修改、删除语句

    关键字:

    新增语句--insert; 删除语句:delete;

    修改语句:update; 查询语句:setcet;

  • MySQL介绍

    MySQL:关系型数据库,分为社区版和商业版,社区版免费

    ​ 企业使用商业版,个人使用社区版

    特点
    • 支持多种操作系统(windows,mac,linux)

    • 支持多种编程语言(可以借助编程语言完成SQL语句的执行,以及结果的处理)

    组成

    ​ MySQL服务:存储数据,执行传入的SQL语句

    ​ MySQL客户端:接收SQL语句,展示SQL语句的执行结果

    连接命令
    • 连接数据库

      mysql -h -P -u -p

      -h:IP地址或域名

      -P:端口号

      -u:用户名

      -p:密码

    • 输入密码

      说明:

      ​ -h如果不写,表示访问当前电脑(服务器)的MySQL

      ​ -P如果不写,表示MySQL使用默认端口号:3306

    工具连接
    • 使用工具:DBeaver
      • 原因:开源免费
      • 作用:拥有可视化界面,让我们操作数据库以及结果的展示更加的直观
    • 必填内容:服务器ip地址,MySQL的端口号,MySQL的用户名和密码
    • 注意点:
      1. 服务器(虚拟机)更改IP地址,需要在工具中修改连接ip地址
      2. 服务器未开机,工具无法连接数据库

image-20230914170850276.png ##### 数据类型

整型:int

小数:decimal(5,2)

​	表示该字段可以存5位数,其中小数位为2位,整数3位

字符串:varchar(字符范围)

时间日期:datetime

##### 数据约束

**默认值**:当不填写时使用默认值,填写时使用填写内容

**非空**:

​	不允许字段空值

​	说明:null(不能为空)

​				空字符串

**主键**:主键是唯一标识;一个数据表只有一个主键;可以使用主键查询数

据,提高数据查询速度

关键字:**primary key**

格式:PRIMARY KEY (字段名称)---设置字段为主键

特点:

​	唯一性:主键值必须是唯一的

​	非空性:主键不能为空

​	不变性:主键使用了,不要进行更改

​	单一性:一张数据表,仅能设置一个主键

**唯一性**:此字段的值不允许重复

特点:一个数据表中可以设置多个字段具有唯一性

**外键**: 用于关联两张表
  • DBeaver操作MySQL

  • 操作数据库

image-20230914172101916.png #### 操作数据表

image-20230914172216714.png #### 操作数据

动作:**增,删,改,查**
**注:新增,修改,删除完成之后,必须要保存结果才能生效**

image-20230914172335026.png ### 命令操作数据库

**创建编辑器**

image-20230914172420557.png #### 编写注释

作用:解释之后的代码/语句,是用来干什么的

国际快捷键:Ctrl+ /

SQL语句的注释符:--空格

​	说明:必须有空格,注释才会生效

**DBeaver执行数据库命令**

查看所有数据库:show 	databases;

查看当前使用数据库:select	database();

创建数据库:create	database	数据库名	charset=utf8;

删除数据库:drop	database	数据库名;

**DBeaver执行数据表命令**

\*\*查看当前数据库所有的表	show tables;
查看表结构:desc	表名;

### 数据库表操作

#### 创建表---create

    语法格式:
    	create  table  表名(
            id int unsigned primary key(主键) auto_increment(自动递增),
            字段名称1 数据类型1,
            字段名称2 数据类型2,
            字段名称3 数据类型3
    	);

#### 删除表---drop、truncate

    语法格式:
    	drop	table	if	exists	表名;

#### 数据的增、删、改、查

##### 数据增加(插入)---insert

    语法格式:
    ​	全量字段增加:insert	into	表名	values(值1,值2,..);
    ​	选择字段增加:insert	into	表名(字段名1,字段名2...)	values(值1,值2...) ;
    ​	增加多行数据:insert	into	表名(字段名1,...)	values(值1,...),(值1,...),(值1,...);

说明:插入字段的值必须要字段的顺序一致。

##### 修改数据---update

    语法格式:
    ​	update	表名	set	字段名1=1,字段名2=2,...	where	条件; 

##### 删除数据---delete

    语法格式:
    	删除单行数据:delete	from   表名	where	条件;
    	删除全部数据:truncate	 table	表名;	

说明:

​	delete不会清除表结构

​	truncate会清楚表结构

##### 简单查询

    语法格式:
    ​	select	*	from	表名;
    ​	select	字段1,字段2...	from	表名;

##### 起别名---as

语法格式:

​	数据表起别名:select	别名.字段,…	from	表名	as	别名

​	字段起别名:select	字段.别名,…	from	表名;

#### 条件查询

##### 比较运算符

关键字:

​	大于:>		大于等于:>=

​	小于:<		小于等于:<=

​	等于:=		不等于:!=< >

    语法格式:
    ​	表名	where	字段名	比较运算符	预期结果;

##### 逻辑运算符---**and、or、not**

作用:一次性处理多个字段的条件

    语法格式:
    ​	表名	where	字段名	比较运算符	预期结果	逻辑运算符	字段名	比较运算符	预期结果;

##### 模糊查询---like

% :匹配任意多个字符

\_ :匹配一个任意字符

    语法格式:
    ​	表名	where	字段名	like	'%或_+指定查询内容';

##### 范围查询

关键字:

​	1.in---非连续范围2.betweenand---连续范围

    语法格式:
    ​	in:表名	where	字段名	in	(非连续范围)

    ​	betweenand…:表名   where	字段名   between    开始范围    and    结束范围;

##### 空判断

关键字:

​	判断为空:is	null

​	判断非空:is	not	null

    语法格式:
    ​	判断为空:表名	where	字段名	is	null;

    ​	判断非空:表名	where	字段名	is	not	null;

##### 排序---order

asc:从小到大排序,即升序

desc:从大到小排序,即降序

    语法格式:
    ​	表名	order	by	字段名	排序方式(asc/desc),字段名称2	排序方式(asc/desc);

说明:默认按照值从小到大排序,即升序

##### 聚合函数

作用:对于查询的结果,进行二次处理

关键字:

​	max(字段名):最大值		min(字段名):最小值

​	sum(字段名):求和			avg(字段名):平均值

​	count(\*):查询总记录数

    语法格式:
    ​	select	…聚合函数…	from	表名;

说明:聚合函数不能作为**where**条件

##### 分组查询---group	by

作用:把整个表的数据,进行划分不同小组,然后对于每个小组,使用聚合函数进行二次处理

    语法格式:
    ​	select	…分组字段,…	from	表名	group	by	字段名,…  ;

##### 分组筛选---having

作用:对于分组后的数据进行筛选

    语法格式:
    ​	select	…分组字段,…	 from  表名  group by	字段名,…  group by  having 条件;

**having****where**的区别

​	having可以用聚合函数

​	where不能用聚合函数

##### 分页---limit(放在SQL语句最后面)

    语法格式:
    ​	select	*	from	表名   limit	start,count;

start:开始行数

start索引从0开始

count:取几个数据

#### 连接查询

##### 内连接---两个表匹配到的共同数据

关键字:inner	join	on

    语法格式:
    ​	select	*	from1inner	join2	on1.关联字段=2.关联字段;

##### 左连接---两个表匹配到的数据加左表特有的数据,对于右表不存在的数据使用**null**填充

关键字:left	join	on

    语法格式:
    	select	*	from1  
    		left	join2	on1.关联字段=2.关联字段;

##### 右连接---两个表匹配到的数据加右表特有的数据,对于左表不存在的数据使用**null**填充

关键字:right	join	on

    语法格式:
    	select	*	from1  
    		right	join2	on1.关联字段=2.关联字段;

##### 自关联

*   使用场景:当表存在等级关系时,查询其中数据需要使用自关联
    *   比如:省,市,县
    *   比如:总经理,部门主管,组长,组员
*   自关联思路:
    1.  把一张表当成多张表来使用
        *   说明:将表定义为不同的别名
    2.  A表的字段与B表的字段进行关联
        *   强调:一定是表中不同的字段

<!---->

    	语法格式:
    ​		select	*	from1	别名1inner	join1 	别名2	on	别名1.关联字段=别名2.关联字段;

#### 子查询

*   子查询,充当条件分类

    *   标量子查询:一行一列

    *   列子查询:一列多行

    *   行子查询:一行,多列

##### 非关联子查询

在select子句、group  by子句、where子句、having子句、order  by子句、from子句中均可使用子查询语句

较常用的是where子句、having子句和from子句。

**子查询SQL语句编写思路:从结果倒推条件**

**说明:如果能用表连接,绝对不用子查询。因为子查询SQL语句执行效率很低**

*