目录
一、SQL概述与SQL分类
1.SQL概述
SQL:结构化查询语言
SQL的半衰期非常长
不同数据库生产厂商都支持SQL语句,但都有特有内容
2.SQL语言的分类
DDL:数据定义语言 CREATE \ ALTER \ DROP \ RENAME \ TRUNCATE
DML:数据操作语言 INSERT \ DELETE \ UPDATE \ SELECT(重中之重)
DCL:数据控制语言 COMMIT \ ROLLBACK \ SAVEPOINT \ GRANT \ REVOKE
学习技巧:大处着眼、小处着手。
二、SQL语言的规则与规范
1.基本规则
SQL可以写在一行或者多行。为了提高可读性,各子句分行写,必要时使用缩进
每条命令以 ; 或者 \g 或 \G 结束
关键字不能被缩写也不能被分行
标点符号必须保证括号,引号都是成对结束的
必须使用英文状态下的半角输入方式
字符串型和日期时间类型的数据可以使用单引号表示
列的别名,尽量使用双引号,且不建议省略as
2.SQL大小写规范
MySQL在Windows环境下时大小写不敏感的
MySQL在Linux环境下大小写是敏感的
采取规范:
数据库名、表名、表别名、字段名、字段别名等都是小写
SQL关键字、函数名、绑定变量等都大写
3.注释
单行注释:#注释文字(MySQL特有的方式)
单行注释:-- 注释文字
多行注释:/* 注释文字 */
三、最基本的SELECT...FROM结构
1.最基本的SELECT语句
SELECT 字段1,字段2,...FROM 表名
SELECT 1+1,3*2;
SELECT 1+1,3*2;
FROM DUAL;
# DUAL:伪表
表中所有字段(或列)
SELECT * FROM 表名
2.列的别名
# 别名三种方式
SELECT 字段名1 别名1,字段名2 AS 别名2,字段名1 "别名1",...
FROM 表名;
as:全称(alias 别名),可以省略
" ":引号别名适用于别名中有空格的情况
3.去除重复行
SELECT DISTINCT 列名
FROM 表名;
# 联合去重
SELECT DISTINCT 列名1,列名2
FROM 表名;
4.空值参与运算
空值:null
null不等同于 0 ,' ' ,'null'
空值参与运算结果也一定为空(null)
实际解决方法:
SELECT 字段1,字段2,字段2*(1+IFNULL(字段3,0)),字段3
FROM 表名;
5.着重号 ``
字段名或表名与关键字冲突
SELECT * FROM `ORDER`
6.查询常数
给每一行都匹配一个常数
SELECT '贡橙',123,字段1
FROM 表名
7.显示表结构
DESCRIBE 表名;
8.过滤数据
SELECT *
FROM 表名
WHERE 字段名=xx;