0基础学MySQL数据库—从小白到大牛(2)SQL概述+基本SELECT语句


一、SQL概述

1.1SQL背景知识

SQL结构化查询语言,是使用关系模型的数据库应用语言,与数据直接打交道,由IBM上世纪70年代开发出来,后由美国ANSI开始指定SQL标准。

1.2SQL语言排行

自从SQL加入了编程语言排行榜,一直保持在前Top10。
在这里插入图片描述


1.3SQL分类

  • 主要分为三类
  • DDL(数据定义语言)这些语句定义了不同的数据库、表、视图、索引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。
    主要语句关键字包括CREATEDROPALTER
  • DML(数据库操作语言)用于添加、删除、更新和查询数据库记录、并检查数据的完整性。
    主要语句关键字包括INSERTDELETEUPDATESELECT
    SELECT是SQL最基础的也是最为重要的
  • DCL(数据库控制语言)用于定于数据库的表、字段、用户的访问权限和安全级别
    主要语句关键字包括GRANTREVOKECOMMITROLLBACKSAVEPOINT

因为查询语句使用的非常的频繁,所以很多人把查询语句单独拿出来:DQL(数据查询语言)
还有单独讲COMMIT、ROLLBACK取出来为TCL(事务控制语言)

学习技巧:大处着眼、小处着手。

二、SQL语言的规则和规范

2.1基本规则

  • SQL可以在一行或者多行。为了提高可读性,各句子分行写,必要时使用缩进。
  • 每条命令以;或 \g 或 \G 结束(单独一句语句执行可以不用;多行语句执行需要;)
  • 关键字不能被缩写也不能分行
  • 关于标点符号
    • 保证所有的()、单引号、双引号是成对结束的
    • 必须使用英文状态下的半角输入方式
    • 字符串型和日期时间类型的数据可以使用单引号表示
    • 列的别名,尽量使用双引号。

2.2SQL大小写规范

  • MySQL在Windows环境下大小写是不敏感的
  • MySQL在Linux环境下大小写是不敏感的
    • 数据库名、表名、表的别名、变量名是严格区分大小写的
    • 关键字、函数名、列名、列的别名是忽略大小写的
  • 推荐采用统一的书写规范
    • 数据库名、表名、表别名、字段名、字段别名都是小写
    • SQL关键字、函数名、绑定变量等都是大写

2.3注释

可以采用以下的注释方式:

单行注释:#注释文字(MySQL特有的方式)
单行注释:-- 注释文字(-- 后面要有空格)
多行注释:/* 注释文字 */

2.4命名规则

  • 数据库和表名不得超过30个字符,变量名限制为29个
  • 必须只能包含A-Z、a-z、0-9、_共63个字符
  • 数据库名、表名、字段名等对象名中间不要包含空格
  • 同一个MySQL软件中数据库不能同名,同一个库中,表不能同名,同一个表中,字段不能同名
  • 必须保证字段没有和保留字、数据库系统或常用方法冲突。如果坚持使用,在SQL语句中使用`(着重号)引起来
  • 保持字段名和类名的一致性,在命名字段并为其指定数据类型的时候一定要保证一致性。

三、基本SELECT语句

3.1最基本查询-SELECT…

#1
SELECT 1;
#2,DUAL伪表.查询效果1,2一样
SELECT 1+1 FROM DUAL;
#简单查询示例
SELECT 字段1,字段2,... FROM 表名;
#表中所有字段
SELECT * FROM DUAL;

一般情况下,除非需要表中的所有字段数据,最好不要使用*,使用通配符可以节省输入查询的时间,但是获取不需要的列数据通常会降低查询和所使用的程序效率。通配符的优势是在不知道需要的列名情况下,可以通过*获取它们

#选择特点的列
SELECT dish.`name` FROM dish;

在这里插入图片描述

3.2列的别名

SELECT dish.`name` 菜名 FROM dish; 
也可以引入AS效果都是一样的,可以省略。
SELECT dish.`name` AS 菜名 FROM dish;
也可以使用一对""引起来
SELECT dish.`name` "菜名" FROM dish;

在这里插入图片描述

3.3去除重复行

  • DISTINCT去除重复数据
SELECT DISTINCT dish.`name` FROM dish;

错误的写法

#错误的写法
SELECT price DISTINCT dish.`name` FROM dish;
#仅仅没报错,但是没有实际意义
SELECT DISTINCT dish.`name`,dish.`price` FROM dish;

3.4空值参与运算

  • 空值:null
  • null不等同于0,'','null'
  • 空值参与运算:结果一定为空
SELECT `name`,price "单价",buynum "购买数量",price*(1 + buynum) "最少购买一个的价格" FROM dish;
会出现都是Null的情况
只要空值参与运算结果一定为Null
实际问题解决方法:引入IFNULL
SELECT `name`,price "单价",buynum "购买数量",price*(1 + IFNULL(buynum,0)) "最少购买一个的价格" FROM dish;
如果是NULL的话就用0来替换,保证结果不会为NULL

在这里插入图片描述

3.5着重号

错误的示范

#查询ORDER表里面的name字段-错误的
SELECT name FROM ORDER;

在这里插入图片描述因为ORDER是排序的关键字

#查询ORDER表里面的name字段-添加着重号的
SELECT name FROM `ORDER`;

一般情况下不加,因为可能会降低可读性,如果你的表名和字段名和关键字重复,就要加``着重号

3.6查询常数

SELECT '小白学数据库',`name` FROM dish;
#'小白学数据库'为常数

在这里插入图片描述

3.7显示表结构

DESCRIBE dish;#显示表中详细信息
DESC dish;#显示表中详细信息
两个方法都可以

在这里插入图片描述

3.8过滤数据

SELECT 字段1,字段2
FROM 表名
WHERE 过滤条件
  • 使用WHERE子句,将不满足条件的行过滤掉
  • WHERE子句紧随FROM子句
#查询金额大于10000元的商品信息
SELECT * FROM dish WHERE price >10000;

在这里插入图片描述
此文章仅作学习记录用,不做商用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白努力学数据库

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值