*基础知识
- SQL语句种类:
- DDL(Data Definition Language):数据定义语言,用来创建或删除表或数据库。(
CREATE
、DROP
、ALTER
) - DML(Data Manipulation Languahe):用来查询或变更表中的记录。(
SELECT
、INSERT
、UPDATE
、DELETE
) - DCL(Data Control Language):用来确定或取消对数据的变更,还可以设置RDBMS用户的权限。(
COMMIT
、ROLLBACK
、GRANT
、REVOKE
)
- DDL(Data Definition Language):数据定义语言,用来创建或删除表或数据库。(
- SQL不区分关键字的大小写。
- 命名规则:1. 只能使用半角英文字母、数字、下划线作为数据库、表和列的名称;
2. 名称必须以半角英文字母开头。
- 基本数据类型:
- INTERGER型:整数
- CHAR型:定长字符串,可用
CHAR(LEN)
指定可存储的最大长度;当列中存储的字符串长度达不到最大长度时,使用半角空格进行补足。 - VARCHAR型:可变长字符串,同样可用
VARCHAR(LEN)
指定最大长度;当列中字符数未达最大长度,不会用半角空格补足。 - DATE型:指定存储日期。
- 注释语法:①单行注释:
--
②多行注释:/*
…*/
- 约束:对整个表或某列中的数据追加限制。
- 列约束:写在列定义的最后,常见:
NOTNULL
- 表约束:写在表定义的最后,常见:
PRIMARY KEY(field_name)
- 列约束:写在列定义的最后,常见:
- 空白字符的使用:SQL以
;
作为一条语句的结尾,且在一条SQL语句中可随意使用换行符。
*基础语句
-
列出数据库:
SHOW DATABASES;
-
选择数据库:
USE <数据库名称>;
-
创建数据库:
CREATE DATABASE <数据库名称>;
-
列出当前库的表:
SHOW TABLES;
-
创建表:
CREATE TABLE <表名>;
CREATE TABLE <表名> (<列名1> <数据类型> <该列所需约束>, <列名2> <数据类型> <该列所需约束>, ... <该表的约束1>,<该表的约束2>, ... )
-
重命名表:
RENAME TABLE <NAME1> to <NAME2>;
(MySQL) -
删除表:
DROP TABLE <表名>;
-
表更新:
①列更新:ALTER TABLE <表名> ADD/DROP (COLUMN) <列定义>/<列名>;
②行插入:
INSERT INTO <表名> VALUES ('数据1','数据2'...);
-- 行的插入较特殊 BEGIN TRANSACTUIN; INSERT INTO <表名> VALUE ('数据1','数据2',...); ... COMMIT;
-
显示服务器状态:
SHOW STATUS;
-
显示用户权限:
SHOW GRANTS
-
显示警告信息:
SHOW ERRORS
-
显示错误信息:
SHOW ERRORS
一. 运算符
1.加减乘除四则运算符
所有包含NULL的计算,结果一定为NULL。
2. 比较运算符
运算符 | 含义 |
---|---|
= | 相等 |
<> | 不等 |
>= | 大于等于 |
> | 大于 |
<= | 小于等于 |
< | 小于 |
对于字符串类型的字段之间的比较都是采取”字典排序规则“进行的(包括数字字符串)。
不能对NULL数据进行任何比较,对NULL的任何比较都不会选中任意数据(包括同为NULL的数据);但可以使用
IS NULL
与IS NOT NULL
运算符来判断是否为NULL。
3. 逻辑运算符
组合逻辑条件
运算符 | 说明 |
---|---|
NOT | 逻辑非,不能单独使用,必须与其他查询条件组合使用。 |
AND | 逻辑与 |
OR | 逻辑或 |
AND
运算符优先于OR
运算符。含有
NULL
的真值判断:SQL中使用的是三值逻辑,对NULL
的判断结果是真假之外的第三种值”不确定“,而含有结果”不确定“在AND
与OR
运算符的使用中又有不同的判断规则,故一般会使用NOT NULL
约束。
二. 查询
1.SELECT 查询
通过SELECT
语句查询并从表中选出必要的数据。
基本SELECT语句:
SELECT [DISTINCT] <列名1> [AS name1],
<列名2> [AS name2],
...
FROM <表名>;
SELECT
子句需与FROM
子句搭配。
- 查询多列时,需用逗号进行分割,查询结果中列的顺序与
SELECT
子句中顺序相同。
- 若要查询出所有列,可以使用通配符
*
代替列名列表。而且此时无法指定列的显示顺序,此时顺序为CREATE TABLE
时定义的列顺序。
SELECT
子句中不仅可以写列名,还可以写常数,所得结果中对应列均为该常数,且必须使用关键字AS
为该列起名。
① AS 关键字
在使用SELECT
从表中选出列时,可用AS
关键字为每一列起别名。别名可用使用中文,
使用中文的时候需用双引号 " 括起来,而数据中的中文字符则无需用双引号括起。
② DESTINCT 关键字
DESTINCT
关键字用于在SELECT
语句中,删去结果中的重复行。
DESTINCT
只能出现一次,且只能用在第一个列名之前。
- 永久地从表中删除,而不仅仅是所展示的视图。
- 使用
DISTINCT
时,NULL也被视为一类数据,若NULL存在于多行中,也会被合并为一条。
- 若
DESTINCT
后面
2. WHERE 选择
WHERE
语句与SELECT
语句搭配以指定查询数据的条件。
基本WHERE语句:
SELECT <列名>,...
FROM <表名>
WHERE <条件表达式>;
- 判断是否相等使用的是
=
而非==
。
- 可以用不被选取的字段作为查询条件。
- 先通过
WHERE
子句查询出符合条件的记录,再选取出SELECT
语句指定的列。
三. 聚合查询
在使用SELECT
查询数据时,可对查出的数据调用某个函数再展现出来。
用于汇总(对所有数据进行遍历)的函数称为聚合函数。所谓聚合,就是统计列中的每一项数据,输入多行而输出一行。
常见聚合函数:
COUNT
:计算表中的记录数(行)。SUM
:计算表中数值列中的合计值。AVG
:计算表中数值列中的平均值。MAX
:计算表中某一列中数据的最大值。MIN
:计算表中某一列中数据的最小值。
- 函数使用:传入一个字段,但不能同时传入多于一个的字段名。
- 对于函数
COUNT()
而言,其参数可为通配符*
,但也只有COUNT()
函数能使用*
作为参数。
SUM/AVG
函数只能用于数值型数据,而MAX/MIN
函数能用于任何数据类型的列。
- 以上的聚合计算不包含值为NULL的记录。如
COUNT(field_name)
的结果可能会少于表的记录数,因field_name
值为NULL的记录不会被算进去;对于SUM()
函数来说,其结果是所有非NULL记录的合计值。
- 聚合函数可在参数中使用关键字
DISTINCT
来删除重复值。SELECT COUNT(DISTINCT field_name) FROM table_name;