1.SQL分类
SQL语言在功能上主要分为如下3大类:
1)DDL(Data Definition Languages、数据定义语言):这些语句定义了不同的数据库、表、视图、索引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。
- 主要的语句关键字包括
CREATE
、DROP
、ALTER
等。
2)DML(Data Manipulation Language、数据操作语言):用于添加、删除、更新和查询数据库记录,并检查数据完整性。
- 主要的语句关键字包括
INSERT
、DELETE
、UPDATE
、SELECT
等。
3)DCL(Data Control Language、数据控制语言):用于定义数据库、表、字段、用户的访问权限和安全级别。
- 主要的语句关键字包括
GRANT
、REVOKE
、COMMIT
、ROLLBACK
、SAVEPOINT
等。
因为查询语句使用的非常的频繁,所以很多人把查询语句单拎出来一类:DQL(数据查询语言)。
还有单独将COMMIT
、ROLLBACK
取出来称为TCL (Transaction Control Language,事务控制语言)。
2.SQL大小写规范
1)MySQL在Windows环境下是大小写不敏感的
2)MySQL 在 Linux 环境下是大小写敏感的
3)推荐书写方式:
- 数据库名、表名、表别名、字段名、字段别名等都小写
- SQL 关键字、函数名、绑定变量等都大写
- 字符串型和日期时间类型的数据可以使用单引号(’ ')表示
- 列的别名,尽量使用双引号(" "),而且不建议省略as
3.注释
1)可以使用如下格式的注释结构
- 单行注释:#注释文字(MySQL特有的方式)
- 单行注释:-- 注释文字(–后面必须包含一个空格。)
- 多行注释:/* 注释文字 */
4.基本的SELECT语句
1)0 SELECT…
语法:
SELECT 1; #没有任何子句
SELECT 9/2; #没有任何子句
2)1 SELECT … FROM
语法:
SELECT 标识选择哪些列
FROM 标识从哪个表中选择
选择全部列:
SELECT *
FROM 表名 ;
选择指定列:
SELECT 字段1, 字段2
FROM 表名;
5.列的别名
1)在列名和别名之间加入关键字AS,别名使用双引号
SELECT last_name as "name" #在学生表中将列名last_name改为name
FROM Student;
2)AS可以省略,别名紧跟列名
SELECT last_name "name" #在学生表中将列名last_name改为name
FROM Student;
6.去除重复行
1)默认情况下,查询会返回全部行,包括重复行,在SELECT语句中使用关键字DISTINCT去除重复行。
SELECT DISTINCT sno #在学生表中将重复的学号去除
FROM Student;
7.空值参与运算
1)所有运算符或列值遇到null值,运算的结果都为null。
2)空值不等于空字符串。
3)一个空字符串的长度是 0,而一个空值的长度是空。
4)空值是占用空间的。
8.着重号
1)如果表中的字段、表名等和保留字、数据库系统或常用方法冲突(相同),使用``(着重号)将字段、表明引用起来。
语法:
SELECT `name` #如果学生表中学生姓名字段为name,使用时可以将name用着重号引用起来
FROM Student;
9.显示表结构
1)使用DESCRIBE 或 DESC 命令,表示表结构。
DESCRIBE Student; #显示学生表结构
或
DESC Student; #显示学生表结构
其中,各个字段的含义分别解释如下:
- Field:表示字段名称。
- Type:表示字段类型,这里 barcode、goodsname 是文本型的,price 是整数类型的。
- Null:表示该列是否可以存储NULL值。
- Key:表示该列是否已编制索引。PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多次。
- Default:表示该列是否有默认值,如果有,那么值是多少。
- Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。
10.使用WHERE过滤数据
1)使用WHERE 子句,将不满足条件的行过滤掉。
2)WHERE子句紧随 FROM子句。
语法:
SELECT 字段1,字段2
FROM 表名
WHERE 过滤条件;