一、数据库介绍
数据库(Database)-----数据集合
1、大量数据、计算机加工、进行高效访问
2、多个数据库:生产库、历史库、镜像库(根据时间节点储存,例如双十一销售额数据,以便比较各年销售业绩)
3、关系型数据库---将所有数据拆分成一个一个表,然后不同数据放在不同表中
原则:一类数据一个表(商品信息表、供应商信息表等)、表之间相互联系(并不一定两两关联,但一定能通过第三张表关联找到信息)
4、二维表结构
(1)访问方式:<表名>.<列名>
(2)列拥有严格的数据类型
5、简单命令:
(1)展示所有数据库 -SHOW DATABASES;
(2)新建数据库-CREATE DATABASES;
(3)使用某个数据库-USE DATABASES;
(4)重复历史快捷键
6、Excel表导入Navicat的一些注意事项:
Excel文件里面的具体数据是没有格式的(加粗之类),不能有网格线。
二、标准SQL语法
1、语句结构
关键字,又叫保留字,不能作为表名、列名,含义或使用方法事先定义好的单词(例如Window中的Ctrl+C),大写
操作对象:数据库表
例如:SELECT ...FROM...
关键字+操作对象;
语句类型:
DDL(数据定义语言)---创建、删除数据库和表对象,对表中数据没影响
CREATE 创建数据库和表对象
DROP 删除数据库和表对象
ALTER 修改数据库和表对象结构
DML(数据操纵语言)---查询、变更表中记录(操作表中数据)
SELECT 查询表中数据(查)
INSERT 向表中插入新数据(增)
UPDATE 更新表中数据(改)
DELETE 删除表中数据(删)
DCL(数据控制语言)---确认、取消对数据库的更改
COMMIT 将SQL语句的执行结果写入数据库表中
ROLLBACK 撤销SQL语句的执行结果
三、单表查询(从一个数据表中,查询出一列或者多列数据)
1、单列查询:SELECT 列名(必需字句1) FROM 表名(必需字句2);
多列查询:SELECT 列名1 ,列名2,列名3 FROM 表名 ;
所有列查询:SELECT * FROM 表名 ;
2、对结果展示的操作(AS)----对库中数据没影响
(1)为指定查询的列设置别名
SELECT 列名1 ,列名2 AS 别名,列名3 FROM 表名 ;
SELECT M.列名1 ,M.列名2,M.列名3 FROM 表名 AS M ;
(2)常数添加(在运行结果表中添加常数列)
SELECT '常数' AS '别名' FROM 表名 ; (常数作为值,如果不用AS添加别名的话该列会默认以该值命名)
(3)四则运算(列与列之间、列与常数之间)
例如:SELECT 列1*0.9 AS '折后价' FROM 表名 ;
3、对结果展示的操作 2
(1)CONCAT 字符拼接(多个字段拼接为一个字段)----拼接后的字段作为新的一列显示在结果表中(纯字段拼接,字段和文本拼接)
适合场景:组合多列信息为一列、对列信息的补充
SELECT CONCAT(列名1,列名2,...) FROM ;
e.g.
SELECT m.*,CONCAT(m.prod_id,m.prod_name,'是',m.net_w,'单价是', m.sale_price,'元') AS '产品信息' FROM milk_tea AS m;
SELECT m.*,CONCAT(m.prod_id,m.prod_name,'(',m.net_w,')') AS '产品信息' FROM milk_tea AS m;
(2)CONCAT_WS 指定拼接符
统一拼接符:SELECT CONCAT_WS('拼接符' ,列名1,列名2,...) FROM 表名 ;
使用场景:
多字段拼接、字段间使用同样的拼接符即拼接时补充的字段是相同的
e.g.
SELECT m.*,CONCAT_WS('是',m.prod_id,m.prod_name,m.net_w, m.sale_price,'元') AS '产品信息' FROM milk_tea AS m;
注:指定拼接符会自动跳过NULL继续拼接;而CONCAT 字符拼接中有列的值为NULL则该条结果为NULL。
SELECT 15*51;-----SQL可以充当计算器,但这并不是严格的SQL语句。
(3)去重函数 DISTINCT(单词中文:不同的,区别的)
适合场景:列有多个相同值,查看值的种类(取出不重复的列值)
SELECT DISTINCT 列名 FROM 表名;
e.g.
SELECT DISTINCT m.valid_month FROM milk_tea AS m ;