数据库(数据库相关概念、MySQL数据库、SQL(DDL、DML、DQL))

1.数据库相关概念

数据库

  • 存储数据的仓库,数据是有组织的进行存储
  • 英文:DataBase,简称 DB

数据库管理系统

  • 管理数据库的大型软件
  • 英文:DataBase Management System,简称 DBMS

SQL

  • 英文:Structured Query Language,简称SQL,结构化查询语言
  • 操作关系型数据库的编程语言
  • 定义操作所有关系型数据库的统一标准

常见的关系型数据库管理系统

  • Oracle:收费的大型数据库,Oracle 公司的产品
  • MySQL:开源免费的中小型数据库。后来Sun公司收购了MySQL,而 Sun 公司又被Oracle收购
  • SQL Server:MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用
  • PostgreSQL:开源免费中小型的数据库
  • DB2:IBM公司的大型收费数据库产品
  • SQLite:嵌入式的微型数据库。如:作为Android内置数据库
  • MariaDB:开源免费中小型的数据库

2.MySQL数据模型

关系型数据库

关系型数据库是建立在关系模型基础上的数据库,简单说,关系型数据库是由多张能互相连接的二维表组成的数据库

  • 优点:

1.都是使用表结构,格式一致,易于维护。

2.使用通用的SQL语言操作,使用方便,可用于复杂查询。

3.数据存储在磁盘中,安全。

3.SQL简介&通用语法&分类

SQL简介

  • 英文:Structured Query Language,简称 SQL
  • 结构化查询语言,一门操作关系型数据库的编程语言
  • 定义操作所有关系型数据库的统一标准
  • 对于同一个需求,每一种数据库操作的方式可能会存在一些不一样的地方,我们称为"方言"

SQL通用语法

1.SQL语句可以单行或多行书写,以分号结尾。

  1. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。

3.注释

  • 单行注释:-- 注释内容或#注释内容(MySQL特有) 注意:--后面有空格不然报错
  • 多行注释:/*注释*/

SQL分类

  • DDL(Data Definition Language)数据定义语言,用来定义数据库对象:数据库,表,列等
  • DML(DataManipulation Language)数据操作语言,用来对数据库中表的数据进行增删改
  • DQL(Data QueryLanguage)数据查询语言,用来查询数据库中表的记录(数据)
  • DCL(DataControlLanguage)数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户
  • DDL:操作数据库,表等
  • DML:对表中的数据进行增删改
  • DQL:对表中的数据进行查询
  • DCL:对数据库进行权限控制

最重要是DML和DQL

4.DDL--对于数据库的操作

  1. 查询
    SHOW DATABASES;

  2. 创建

  • 创建数据库

CREATE DATABASE 数据库名称;

  • 创建数据库(判断,如果不存在则创建)

CREATE DATABASE IF NOT EXISTS 数据库名称;

3.删除

  • 删除数据库

DROP DATABASE 数据库名称;

  • 删除数据库(判断,如果存在则删除)

DROP DATABASE IF EXISTS 数据库名称;

  1. 使用数据库
  • 查看当前使用的数据库

SELECT DATABASE();

  • 使用数据库

USE 数据库名称;

5.DDL--操作表

  • 创建(Create)
  • 查询(Retrieve)
  • 修改(Update)
  • 删除(Delete)

(1)DDL--操作表-查询&创建

查询表

  • 查询当前数据库下所有表名称

SHOW TABLES;

  • 查询表结构

DESC 表名称;

创建表

注意:最后一行末尾,不能加逗号

(2)DDL--操作表-数据类型

MySQL支持多种类型,可以分为三类:

  • 数值
  • 日期
  • 字符串

(3)DDL--操作表-修改&删除

删除表

  1. 删除表
    DROP TABLE 表名;

2.删除表时判断表是否存在
DROP TABLE IF EXISTS 表名;

修改表

  1. 修改表名
    ALTER TABLE 表名 RENAME TO 新的表名;

  2. 添加一列
    ALTER TABLE 表名 ADD 列名 数据类型;

3.修改数据类型
ALTER TABLE 表名 MODIFY 列名 新数据类型;

4.修改列名和数据类型
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;

  1. 删除列
    ALTER TABLE 表名 DROP 列名;

6.图形化客户端工具Navicate

Navicat

  • Navicat for MySQL是管理和开发MySQL或MariaDB的理想解决方案。
  • 这套全面的前端工具为数据库管理、开发和维护提供了一款直观而强大的图形界面。
  • 官网:http://www.navicat.com.cn

7.DML--操作数据-添加&修改&删除

添加数据

1.给指定列添加数据
INSERT INTO 表名(列名1,列名2..) VALUES(值1,值2...);

  1. 给全部列添加数据
    INSERT INTO 表名 VALUES(值1,值2...);

3.批量添加数据
INSERT INTO 表名(列名1,列名2..) VALUES(值1,值2...),(值1,值2...),(值1,值2...;
INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,..),(值1,值2...;

不建议省略列名

修改数据

1.修改表数据
UPDATE 表名 SET 列名1=值1,列名2=值2..[WHERE条件];
注意:修改语句中如果不加条件,则将所有数据都修改!

删除数据

  1. 删除数据
    DELETE FROM 表名 [WHERE 条件];
    注意:删除语句中如果不加条件,则将所有数据都删除!

8.DQL

查询语法

  • 基础查询
  • 条件查询(WHERE)
  • 分组查询(GROUP BY)
  • 排序查询(ORDER BY)
  • 分页查询(LIMIT)

(1)基础查询

1.查询多个字段
SELECT 字段列表 FROM 表名;
SELECT * FROM 表名;-- 查询所有数据。不要使用!!!

2.去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;

  1. 起别名
    AS:AS 也可以省略

也可以不写as,但是列名和别名需要用空格隔开

(2)条件查询

  1. 条件查询语法
    SELECT 字段列表 FROM 表名 WHERE 条件列表;

(3)排序查询

1.排序查询语法
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2]....;

排序方式:

  • ASC:升序排列(默认值)(从小到大)
  • DESC:降序排列(从大到小)

注意:如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序

(4)聚合函数

聚合函数

1.概念:

将一列数据作为一个整体,进行纵向计算。

  1. 聚合函数分类:

3.聚合函数语法:
SELECT 聚合函数名(列名)FROM 表;
注意:null值不参与所有聚合函数运算

建议count(*)

null不参加任何聚合函数的计算

(5)分组查询

1.分组查询语法
SELECT 字段列表 FROM 表名 [WHERE分组前条件限定] GROUP BY 分组字段名 [HAVING分组后条件过滤];
注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义

where 和 having 区别:

  • 执行时机不一样:where是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。
  • 可判断的条件不一样:where不能对聚合函数进行判断,having可以。

执行顺序:where > 聚合函数 > having

(6)分页查询

1.分页查询语法
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询条目数;

  • 起始索引:从0开始

计算公式:起始索引=(当前页码-1)*每页显示的条数

tips:

  • 分页查询limit是MySQL数据库的方言
  • Oracle分页查询使用rownumber
  • SQL Server分页查询使用top
相关推荐
Shorasul2 小时前
golang如何实现设备数据采集网关_golang设备数据采集网关实现要点
jvm·数据库·python
2301_764150562 小时前
如何用 some 检测数组中是否存在至少一个满足条件的项
jvm·数据库·python
j_xxx404_2 小时前
数据库基础夯实:从零手写DDL与DML,MySQL核心语法实战解析
数据库·mysql
爱学习的小囧2 小时前
VMware NSX-T Data Center 3.2.3.0 部署后账号密码获取及登录配置教程
linux·运维·服务器·网络·数据库·esxi
xiaokangzhe2 小时前
NoSQL之Redis配置与优化
数据库
weixin_408717772 小时前
CSS如何优化大型项目样式_使用SASS预处理器提升开发效率
jvm·数据库·python
2301_813599552 小时前
CSS如何解决CSS引入后的样式覆盖_理解优先级原则避免重写
jvm·数据库·python
lkx097882 小时前
MySQL
数据库·mysql
betazhou2 小时前
TDSQL-PG创建测试表并定时插入数据模拟生产
前端·javascript·数据库·tdsql·tdsql-pg