MySQL 基本的SELECT语句

一.SQL分类

SQL语言在功能上分为三大类:

  • DDL(Data Definition Language,数据定义语言)

    这些不仅定义了不同的数据库,表,视图,索引,等数据库对象,还可以用来创建,删除,修改数据库和数据表的结构

    • 主要关键字 CREATE,DROP,ALTER

  • DML(Data Manipulation Language,数据库操作语言)

    用于添加,删除,更新和查询数据库记录,并检查数据的完整性

    • 主要关键字 INSERT,DELETE,UPDATE,SELECT

    • SELECT是SQL语言基础,最为重要

  • DCL(Data Control Language,数据库控制语言)

    用于定义数据库,表,字段,用户的访问权限和安全级别

    • 主要关键字 GRANT,REVOKE,COMMIT,ROLLBACK,SAVEPOINT

  • DQL(数据查询语言)

  • TCL(Transaction Control LAnguage,事务控制语言)

    • 主要关键字 COMMIT,ROLLBACK

二.SQL语言的规范与规则

1.基本规则

  • SQL可以写在一行或多行,为了提高可读性,各字句分行写,必要时使用缩进

  • 每条命令以 ; 或 \g 或 \G 结束

  • 关键字不能被缩写也不能分行

  • 关于标点符号:

    • 必须保证所有的(),单引号,双引号是成对结束的

    • 必须使用英文状态下的半角输入方式

    • 字符串类型和日期时间类数据可用单引号(' ')表示

    • 列的表名,尽量使用双引号(" "),而且不建议省略as

简单操作

USE test1;
SELECT * FROM emp;
INSERT INTO emp;
VALUE(1002,'TOM');

2.SQL大小写规范

  • MySQL在Windows下对大小写不敏感

  • 在linux下对大小写敏感,因此有的要区分大小写

    • 数据库名,表名,表的别名,变量名严格区分大小写

    • 关键字,函数名,列名(或字段名),列的别名(字段的别名)忽略大小写

  • 推荐使用统一编写规范:

    • 数据库名,表名,表的别名,字段名,字段的别名等都使用小写

    • SQL关键字,函数名,绑定变量等都使用大写

3.注释

  • 单行注释: # 注释文字

    --注释文字(--后面必须包含一个空格)

  • 多行注释: /* 注释文字 */

4.命名规则

  • 数据库,表名不得超过30个字符,变量名限制为29个字符

  • 数据库名,表名,必须只能包含A-Z,a-z,0-9,_共63个字符

  • 数据库名,表名,字段名等对象名中间不要包含空格

  • 同一个MySQL软件中,数据库名不能同名;同一个库中,表不能重名;同一个表中,字段不能重名

  • 必须保证字段中没有和保留字,数据库系统或常用方法冲突

  • 必须保证字段名和类型的一致性,在命名字段并为其指定数据类型时一定要保证一致性

5. 数据导入指令

①source 文件名的全路径

如: source d:\test.sql;

②基于具体图形化界面工具

如: SQLyog中: 选择"工具"--"执行脚本"--"选中xxx.sql文件"

三.基本的SELECT语句

0.SELECT...

SELECT 1;  #没有任何字符
SELECT a/2;

1.SELECT...FROM表名(中间可以添加多个字段)

  • 语法:

    SELECT #标识选择哪些列
    FROM   #标识从哪个表中选择

例如

SELECT 1+1,2*3
FROM DUAL;  #DUAL为伪表
  • 选择全部列

    SELECT * 
    FROM departments;  #生产环境下不推荐使用SELECT * 查询
                       #SELECT * 代表查询表中的所有字段(或列)

  • 选择特定列

    SELECT employees_id,last_name
    FROM employees;

2.列的别名

as:

  • 全称为alias(别名),使用时可以省略

  • 列的别名也使用一对" "引起来,不能使用' '.

    SELECT employees_id emp_id,last_name AS lname,department_id "部门id";

3.去除重复行

  • 默认情况下,查询会返回全部行,包括重复行

  • 在SELECT语句中使用关键字DISTINCT去除重复行

    SELECT DISTINCT department_id  #这样就去除了数据中的重复行
    FROM employees;

注:

①DISTINCT需要放在所有列名的前面

写 SELECT salary,DISTINCT department

FROM employees 会报错

②DISTINCT 其实是对后面所有列名的组合去重

4.空值参与 运算

  • 所有运算符或列值遇到NULL值,运算结果均为NULL

  • 注:

    • 在MySQL中,空值不等于空字符串,一个空字符串的长度为0,而一个控制的长度为空

    • 且在MySQL中,空值是占用空间的

  • 处理方法: 引入IFNULL

    SELECT employees,salary "月工资",salary * (1 + IFNULL(commission_pct,0))*12 "年工资"
    FROM employees;

5.着重号``

  • 出现字段名或表名与关键字,保留字重名时,需要加着重号

6.查询常数

  • 只要后面字段来自某张表,前面作为常数出现的每行都会匹配

四.显示表结构

  • 使用DESCRIBE 或 DESC 命名表的显示表结构

    DESCRIBE employees;
    或
    DESC employees;

显示了表中字段的详细信息

五.过滤数据

  • 语法:

    SELECT 字段1,字段2
    FROM 表名
    WHERE 过滤条件
  • 使用WHERE子名,将不满足条件的行过滤掉

  • WHERE字句紧随FROM字句

    SELECT employees_id,last_name
    FROM employees
    WHERE LAST_NAME = 'King';  #此处的''中应该注意大小写,MySQL中大小写执行标准不规范,因此当写错时也会查询出来
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不会写代码的菜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值