#第03章 基本的SELECT语句
#1. SQL的分类
/*
DDL(Data Definition Languages、数据定义语言)
CREATE 创建\ALTER 修改\DROP 删除\RENAME 重命名\TRUNCATE 清空
DML(Data Manipulation Language、数据操作语言)对记录操作的语言
INSERT 插入\DELETE 删除\UPDATE 修改\SELECT 查询
DCL(Data Control Language、数据控制语言)
COMMIT 提交\ROLLBACK 回滚\SAVEPOINT 保存点\GRANT 赋予权限\revoke 回收权限
*/
USE DBTEST1;
/*为了增加可读性,建议句子分行写*/
SELECT
* FROM emp;
/*执行多条语句时,中间语句不能省略分号,最后语句可以省略*/
INSERT INTO emp
VALUES(1005,'萨菲罗斯');#字符串、日期时间类型的变量需要用一对''表示
INSERT INTO emp
VALUES(1006,'Jerry');
/*查看创建表的信息*/
SHOW CREATE TABLE EMP;
/*SQL大小写规范 (建议遵守)
MySQL 在 Windows 环境下是大小写不敏感的
MySQL 在 Linux 环境下是大小写敏感的
数据库名、表名、表的别名、变量名是严格区分大小写的
关键字、函数名、列名(或字段名)、列的别名(字段的别名) 是忽略大小写的。
推荐采用统一的书写规范:
数据库名、表名、表别名、字段名、字段别名等都小写
SQL 关键字、函数名、绑定变量等都大写*/
#三种注释
-- 此注释为单行注释 后面要加上空格
#此注释为单行注释
/*
此注释为多行注释
*/
#导入现有的数据表、表的数据。
#方式1:source 文件的全路径名
#通过 cmd中输入 source d:\atguigudb.sql;
#方式2:基于具体的图形化界面工具可以导入数据.
#比如sqlyog中选择“工具” -- "执行sql脚本"--选中xxx.sql文件即可.
#最基本的查询语句 SELECT 字段1,字段2.... FROM 表名
SELECT 1 + 1,3 * 2;
SELECT 1 + 1,3 * 2
FROM DUAL; #dual: 伪表
# * 表中所有的字段(或列)
SELECT * FROM employees;
SELECT employee_id,first_name,salary
FROM employees;
#列的别名
# as : 全称alias(别名),可以省略
# 列的别名可以用一对双引号引起来"",不要使用''单引号。
SELECT employee_id e,last_name AS sd,department_id sa
FROM employees;
SELECT email AS em,phone_number pm,first_name "as s",department_id "部门",salary *12 annual_salray
FROM employees;
#去除重复行
#查询员工表中一共有哪些部门id?
#没有去重的情况
SELECT department_id
FROM employees;
#去除重复的情况
SELECT DISTINCT department_id
FROM employees;
#错误的情况
SELECT salary,DISTINCT department_id
FROM employees;
#仅仅是没有报错,但没有实际意义
SELECT DISTINCT department_id,salary
FROM employees;
#空值参加运算
#空值:null
# null不等同于0
SELECT * FROM employees;
#空值运算参加运算那么结果一定也为空
SELECT employee_id,salary "月工资",salary*(1+commission_pct)*12 "年工资",commission_pct
FROM employees;
#正确的解决方案
SELECT employee_id,salary "月工资",salary*(1+IFNULL(commission_pct,0))*12 "年工资",commission_pct
FROM employees;
#着重号``
SELECT * FROM ORDER;
#出现字段名和表名相同时 用着重号``区分
SELECT * FROM `ORDER`;
#查询常数
#前面作为常数的字段会跟每行数据匹配
SELECT'尚硅谷',123,employee_id,last_name
FROM employees;
#显示表的结构
#describe描述
DESCRIBE employees; #显示了表中字段的详细信息
DESC employees;
DESC departments;
#过滤数据
#查询90号部门的员工的信息
SELECT *FROM employees
#过滤条件,声明在FROM结构后面
WHERE department_id = 90;
#练习1 查询last_name为'King'的员工信息
SELECT * FROM employees
WHERE last_name='King';