一、数据库的基本概念
1.什么是数据库
- 数据库的全称:数据库管理系统(database management system),简称 DBMS
- 数据库的定义:数据库是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合,其本质是一个文件系统
- 数据库的用途:数据库是一个存储数据的软件,允许用户通过简单直观的SQL语句对数据库中的数据进行复杂的处理。
- 数据库的分类:数据库分为两类,分别为 关系型数据库 RDBMS 和 非关系型数据库 NOSQL
- RDBMS:关系型数据库:Oracle、MySQL、SQL Server、PgSQL、DB2……
- 主要用于业务系统存储,如订单数据、用户数据、商品数据、支付数据、快递数据、配送数据
- 其特点:稳定、安全、性能慢
- NOSQL:非关系型数据库:Redis、MongoDB、Hbase、TiDB……
- 高并发高性能存储
- 性能快,稳定和安全性差
2.数据库中有哪些对象
- 数据库管理系统
- 数据库(database):用于对数据按照不同类别进行划分,第一级划分结构,一个数据库管理系统中可以有多个数据库。
- 数据表(table):用于对同类别但不同内容的数据进行划分,第二级划分结构,一个数据库中可以包含多个数据表。
- 数据行(row):用于表示数据表中的一行数据,一行可以包含多列数据。
- 数据列(column):用于表示数据表中的一列数据,一列可以包含多行数据
3.对数据库的简单理解
- 叫法的歧义性:
- 实际上数据库应为数据库管理系统
- 但是一般我们把 数据库软件 称为数据库
- 数据库与excel:
- 数据库与excel高度类似,都具有存储数据,并通过操作对数据进行处理
- 类比
- 数据库管理系统 => 数据库 => 数据表 => 数据库的行和列
- 文件资源管理器 => excel文件 => sheet表格 => excel的行和列
- 数据库相较于excel的优点:
支持的数据量更大:百万级别
支持各种复杂的数据操作:分组、排序、各种复杂处理函数
支持快速的数据读写:底层性能非常强大
支持非常简单易用的开发接口SQL:实现复杂数据处理的时候可以通过类人类语言实现数据处理
NOSQL非关系型数据库中的 'NO' 为 not only , 关系型数据库(RDBMS)支持 SQL ,而大部分 非关系型数据库(NOSQL)不支持 SQL ,但是一般可以使用插件使其支持SQL语言。
二、SQL的基本概念
1.什么是SQL
- SQL(Structured Query Language)是“结构化查询语言”,是一种专为数据统计分析而设计的编程语言,可以利用SQL对数据库中的对象【数据库Database、表Table】进行管理,对数据进行增删改查的操作 。
- SQL 可以用在所有关系型数据库中,但很多数据库还都有标准之后的一些语法,我们可以称之为“方言”。例如 MySQL 中的 LIMIT 语句就是 MySQL 独有的“方言”,其它数据库都不支持,同样的其他关系型数据库也具有其独特的“方言”。
2.语法规则
- SQL 语句由多个关键词组成,一般来说不建议用关键词作为库名、表名、列名;
- 关键词之间要使用空格隔开;
- SQL语句结束符,默认分号。
3.语法分类
DDL(Data Definition Language): 数据定义语言:数据库和表的管理,创建、删除:create、drop、show
DML(Data Manipulation Language): 数据操作语言:表中数据的增删改:insert、delete、update
DQL(Data Query Language): 数据查询语言:表中数据的读取查询:select
DCL(Data Control Language): 数据控制语言:SQL权限管理:grant、revoke
4.SQL的基本规则
- SQL的用法
- 通过关键词根据需求组合成SQL语句:create、drop、show、insert、delete、update、select等
- 每个关键词的语法之间必须使用空格隔开
- 每条SQL语句结束,必须加上结束符,默认的SQL结束符为分号 ;
- SQL的注释
- 单行注释:# 注释内容 或者 -- 注释内容 ,注意:'' -- '' 与注释内容之间要加上空格隔开才可以生效。
# 这是一行注释 -- 这是一行注释
- 多行注释:/* 注释内容 */
/* 这是多行注释 */
5.SQL通用数据类型
数据类型 描述 CHARACTER(n) 字符/字符串。固定长度 n。 VARCHAR(n) 或
CHARACTER VARYING(n)字符/字符串。可变长度。最大长度 n。 BINARY(n) 二进制串。固定长度 n。 BOOLEAN 存储 TRUE 或 FALSE 值 VARBINARY(n) 或
BINARY VARYING(n)二进制串。可变长度。最大长度 n。 INTEGER(p) 整数值(没有小数点)。精度 p。 SMALLINT 整数值(没有小数点)。精度 5。 INTEGER 整数值(没有小数点)。精度 10。 BIGINT 整数值(没有小数点)。精度 19。 DECIMAL(p,s) 精确数值,精度 p,小数点后位数 s。例如:decimal(5,2) 是一个小数点前有 3 位数,小数点后有 2 位数的数字。 NUMERIC(p,s) 精确数值,精度 p,小数点后位数 s。(与 DECIMAL 相同) FLOAT(p) 近似数值,尾数精度 p。一个采用以 10 为基数的指数计数法的浮点数。该类型的 size 参数由一个指定最小精度的单一数字组成。 REAL 近似数值,尾数精度 7。 FLOAT 近似数值,尾数精度 16。 DOUBLE PRECISION 近似数值,尾数精度 16。 DATE 存储年、月、日的值。 TIME 存储小时、分、秒的值。 TIMESTAMP 存储年、月、日、小时、分、秒的值。 INTERVAL 由一些整数字段组成,代表一段时间,取决于区间的类型。 ARRAY 元素的固定长度的有序集合 MULTISET 元素的可变长度的无序集合 XML 存储 XML 数据
6.MySQL常见关键词
关键词 关键词 关键词 ADD ALL ALTER ANALYZE AND AS ASC ASENSITIVE BEFORE BETWEEN BIGINT BINARY BLOB BOTH BY CALL CASCADE CASE CHANGE CHAR CHARACTER CHECK COLLATE COLUMN CONDITION CONNECTION CONSTRAINT CONTINUE CONVERT CREATE CROSS CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURSOR DATABASE DATABASES DAY_HOUR DAY_MICROSECOND DAY_MINUTE DAY_SECOND DEC DECIMAL DECLARE DEFAULT DELAYED DELETE DESC DESCRIBE DETERMINISTIC DISTINCT DISTINCTROW p DOUBLE DROP DUAL EACH ELSE ELSEIF ENCLOSED ESCAPED EXISTS EXIT EXPLAIN FALSE FETCH FLOAT FLOAT4 FLOAT8 FOR FORCE FOREIGN FROM FULLTEXT GOTO GRANT GROUP HAVING HIGH_PRIORITY HOUR_MICROSECOND HOUR_MINUTE HOUR_SECOND IF IGNORE IN INDEX INFILE INNER INOUT INSENSITIVE INSERT INT INT1 INT2 INT3 INT4 INT8 INTEGER INTERVAL INTO IS ITERATE JOIN KEY KEYS KILL LABEL LEADING LEAVE LEFT LIKE LIMIT LINEAR LINES LOAD LOCALTIME LOCALTIMESTAMP LOCK LONG LONGBLOB LONGTEXT LOOP LOW_PRIORITY MATCH MEDIUMBLOB MEDIUMINT MEDIUMTEXT MIDDLEINT MINUTE_MICROSECOND MINUTE_SECOND MOD MODIFIES NATURAL NOT NO_WRITE_TO_BINLOG NULL NUMERIC ON OPTIMIZE OPTION OPTIONALLY OR ORDER OUT OUTER OUTFILE PRECISION PRIMARY PROCEDURE PURGE RAID0 RANGE READ READS REAL REFERENCES REGEXP RELEASE RENAME REPEAT REPLACE REQUIRE RESTRICT RETURN REVOKE RIGHT RLIKE SCHEMA SCHEMAS SECOND_MICROSECOND SELECT SENSITIVE SEPARATOR SET SHOW SMALLINT SPATIAL SPECIFIC SQL SQLEXCEPTION SQLSTATE SQLWARNING SQL_BIG_RESULT SQL_CALC_FOUND_ROWS SQL_SMALL_RESULT SSL STARTING STRAIGHT_JOIN TABLE TERMINATED THEN TINYBLOB TINYINT TINYTEXT TO TRAILING TRIGGER TRUE UNDO UNION UNIQUE UNLOCK UNSIGNED UPDATE USAGE USE USING UTC_DATE UTC_TIME UTC_TIMESTAMP VALUES VARBINARY VARCHAR VARCHARACTER VARYING WHEN WHERE WHILE WITH WRITE X509 XOR YEAR_MONTH ZEROFILL