一、SQL基础
1、分类:
DDL(Data Definitaion Lanaguages):数据定义语言;如 create drop alter 等
DML(Data Manipulation Lanaguage):数据操纵语言;如 insert delete update select 等
DCL(Data Control Language):数据控制语句,用于控制不同数据段直接的许可和访问级别的语句;如 grant revoke 等
2、DDL语句
-- 修改表
ALTER TABLE tableName MODIFY[COLUMN] column_definition [FIRST|AFTER col_name]
-- 增加字段
ALTER TABLE tableName ADD[COLUMN] column_definition [FIRST|AFTER col_name]
-- 删除表字段
ALTER TABLE tableName DROP[COLUMN] col_name
-- 字段改名
ALTER TABLE tableName CHANGE[COLUMN] old_col_name column_definition [FIRST|AFTER col_name]
-- CHANGE|FIRST|AFTER 这些关键字属于MySQL在标准SQL上的扩展,其他数据库上不一定生效
-- 修改表名
ALTER TABLE tableName RENAME [TO] new_tableName
2、DML语句
-- 插入记录
INSERT INTO tableName(field1,field2,...,fieldN) VALUES(value1,value2,...valueN)
INSERT INTO tableName(field1,field2,...,fieldN) VALUES(value11,value12,...value1N),(value21,value22,...value2N),(value31,value32,...value3N)
-- 更新记录
UPDATE tableName SET field1=value1,field2=value2,...,fieldN=valueN [WHERE CONDITION]
-- 支持同时更新多张表的记录
UPDATE t1,t2,...,tN SET field1=value1,field2=value2,...,fieldN=valueN [WHERE CONDITION]
-- 删除记录
DELETE FROM tableName [WHERE CONDITION]
-- 支持同时操作多张表(使用别名需要同时使用)
DELETE t1,t2,...,tN FROM t1,t2,...,tN [WHERE CONDITION]
-- 查询记录
SELECT * FROM tableName [WHERE CONDITION]
-- DISTINCT|WHERE|>|<|>=|<=|!=|ORDER BY|DESC|ASC
-- 部分查询(起始偏移量,显示的行数)
SELECT * FROM tableName [WHERE CONDITIONS] [LIMIT offset_start,row_count]
-- LIMIT 经常与 ORDER BY 配合进行分页显示;LIMIT 属于MySQL扩展语法,其他数据库可能不适用
-- 聚合
SELECT [field1,field2,...,fieldN] fun_name FROM tableName [WHERE CONDITIONS] [GROUP BY field1,field2,...,fieldN [WITH ROLLUP]] [HAVING where_condition]
-- fun_name 为聚合函数;WITH RULLUP为可选,表示是否对分类聚合后的结果进行再汇总;
-- where & having:having 是对聚合后的结果进行的条件过滤,where 是在聚合前就对结果进行过滤
-- 表连接
-- 内连接仅选出两张表同时匹配的记录,外连接会选出其他不匹配的记录。常用内连接
-- (外连接分为左连接及右连接)
left join ... on || right join ... on
-- 子查询:表连接在很多情况下用于优化子查询
-- 记录联合 union || union all
SELECT * FROM t1 UNION|UNION ALL SELECT * FROM t2;
-- UNION ALL - 结果直接合并;UNION - DISTINCT 去重
3、DCL 语句
-- 赋权
GRANT SELECT,...,INSERT ON dbName.* TO 'username'@'localhost|%' IDENTIFIED BY 'password';
-- 权限回收
REVOKE SELECT,...,INSERT ON dbName.* FROM 'username'@'localhost|%';
4、帮助查询
-- 根据分类依次查询
? contents
? 命令
? data type | ? int | ? show
5、MySQL5.0 提供的新的数据库 information_schema,用来记录 MySQL 中的元数据信息(虚拟数据库)
SHOW TABLES 命令显示的“表”也并不是实际存在的物理表,而全部是视图。