1.数据库的创建、修改、删除
创建:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification];
例如:
CREATE DATABASE IF NOT EXISTS test CHARACTER SET ‘gbk‘ COLLATE ‘gbk_chinese_ci‘;
修改:
ALTER {DATABASE | SCHEMA} [db_name] alter_specification;
通常只能修改数据库字符集及排序规则。
删除:
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name;
2.表的创建、修改、删除
创建:表的创建有三种方式
直接定义一张空表
CREATE TABLE [IF NOT EXISTS] tb_name (字段名称 字段定义,...) [table_options];
从其它表中查询出数据,并以之创建新表:字段的格式定义将不会存在
CREATE TABLE [IF NOT EXISTS] tb_name [(字段名称 字段定义,...)] [table_options] select_statement;
以其它表为模板创建一个空表
CREATE TABLE [IF NOT EXISTS] tb_name LIKE old_tb_name;
修改:
ALTER TABLE tbl_name [alter_specification [, alter_specification] ...];
alter_specification:
ADD:添加字段、索引、约束。
CHANGE | MODIFY:修改字段定义,change可以修改字段名称,而modify不行。
DROP:删除字段、索引、约束。
RENAME [TO|AS]:重命名表名。
CONVERT TO CHARACTER SET:修改默认字符集。
删除:
DROP TABLE [IF EXISTS] tbl_name
3.索引的创建、删除
创建:
CREATE INDEX index_name ON tb_name (col_name [(length)] [ASC | DESC],...);
length:索引的长度,表示从最左侧起比较多长的字符。
ASC:升序排序。
DESC:降序排序。
删除:
DROP INDEX index_name ON tbl_name;
4.查询操作
简单查询:投影、选择
SELECT select-list FROM tb WHERE qualification;
FROM子句:要查询的关系。
WHERE子句:
布尔关系表达式:=、<、>、>=、<=。
逻辑关系:AND、OR、NOT。
BETWEEN ... AND...:在谁和谁之间。
LIKE:
%: 任意长度任意字符
_:任意单个字符
REGEXP, RLIKE:和LIKE相似,支持正则表达式。
IN:做离散取值,表示在某个列表当中。
IS [NOT] NULL:是否为空。
ORDER BY field_name [ASC|DESC]:将查询后的结果排序。
字段别名:AS
LIMIT子句:LIMIT [offset,]count
offset:表示偏移量,略过前offset条符合条件的结果。
count:显示前count条符合条件的结果。
聚合:SUM(), MIN(), MAX(), AVG(), COUNT()。
GROUP BY: 分组
HAVING qualification:在分组中过滤条件。
多表查询:
连接:
交叉连接:笛卡尔乘积。
自然连接:具有相同名字的属性上所有取值相同的行。
外连接:以左表或右表为准,如果另一张表中没有对应值则显示NULL.
左外连接:tb_name LEFT JOIN tb_name ON condition
右外连接: tb_name RIGHT JOIN tb_name ON condition
自连接:将同一张表中的查询结果连接在一起。
子查询:
比较操作中使用子查询:子查询只能返回单个值。
IN():在IN中使用子查询。
在FROM中使用子查询。