一、SQL语句分类
- 数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等
- 数据操作语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新。关键字:insert,delete,update等
- 数据控制语言:简称DCL(Data Control Language),用来定义数据库的访问权限和安全级别,及创建用户
- 数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录。关键字:select,from,where等
二、数据库操作
- 创建数据库(create)
- 直接创建:
- 创建特定编码的数据库:
- create database 数据库名 character set 字符集;
- 查看数据库
- 查看数据库中:
- 查看数据库定义信息:
- show create database 数据库名;
- 使用数据库
三、表的操作
- 创建表:
- create table 表名(字段名 类型(长度) [约束], 字段名 类型(长度) [约束],
...);
- 查看表:
- 删除表:
- 修改表结构格式:
- 修改表添加列:
- alter table 表名 add 列名 类型(长度) [约束];
- 修改表修改列的类型长度及约束:
- alter table 表名 modify 列名 类型(长度) 约束;
- 修改表修改列名:
- alter table 表名 change 旧列名 新列名 类型(长度) 约束;
- 修改表删除列:
- 修改表名:
- 修改表的字符集:
- alter table 表名 character set 字符集(了解);
- 插入表记录:
- 向表中插入某些字段:
- insert into 表 (字段1,字段2,字段3..) values (值1,值2,值3..);
- insert into 表 values (值1,值2,值3..);
- 注意:
- 值与字段必须对应,个数相同,类型相同
- 值的数据大小必须在字段的长度范围内
- 除了数值类型外,其它的字段类型的值必须使用引号引起。(建议单引号)
- 如果要插入空值,可以不写字段,或者插入 null。
- 修改表
- 更新所有记录的指定字段
- update 表名 set 字段名=值,字段名=值,...;
- 注意:
- 列名的类型与修改的值要一致.
- 修改值得时候不能超过最大长度.
- 除了数值类型外,其它的字段类型的值必须使用引号引起.
- 删除记录
- 单单删除记录
- delete from 表名 [where 条件];
- 初始化表
四、约束
- 主键约束
- PRIMARY KEY
- 主键必须包含唯一的值。
- 主键列不能包含 NULL 值。
- 每个表都应该有一个主键,并且每个表只能有一个主键。
- 添加主键约束
- 创建表时,在字段描述处,声明指定字段为主键
- crtea table 表名 (字段名 字段类型 primary key,字段名 字段类型 ....);
- 创建表时,在constraint约束区域,声明指定字段为主键
- crtea table 表名 (字段名 字段类型,字段名 字段类型 .... ,constraint 主键名 primary key(字段1,字段2...));
- 创建表之后,通过修改表结构,声明指定字段为主键
- alter table 表名 add primary key(字段1,字段2...);
- 删除主键约束
- alter table 表名 drop primary key;
- 自动增长列
- auto_increment
- 一般是主键
- create table 表名 (字段1 字段类型 primary key auto_increment,字段2 字段类型 .....);
- 非空约束
- not null
- create table 表名 (字段1 字段类型 nut null,字段2 字段类型 .....);
- 唯一约束
- unique
- 方式一
- create table 表名 (字段1 字段类型 unique,字段2 字段类型 .....);
- 方式二
- create table 表名 (字段1 字段类型 ,字段2 字段类型 ..... , constranit 约束名 unique(字段));
- 方式三
- alter table 表名 add constraint 约束名 unique(字段);
- 删除唯一约束
- alter table 表名 drop index 约束名;
- 外键约束
- 从表外键的值是对主表主键的引用。
- 从表外键类型,必须与主表主键类型一致。
- 声明外键约束
- alter table 从表 add [constraint] [外键名称] foreign key (从表外键字段名) references 主表 (主表的主键);
- [外键名称] 用于删除外键约束的,一般建议“_fk”结尾
- 使用外键目的:
五、表数据的查询
- 简单查询
- select [distinct] * | 列名[as 别名],列名 from 表名 [as 别名] where 条件;
- distinct 去重
- as 别名 也可以省略 as
- 查询字段可以当做参数进行运算(字段+1...)
- 条件查询
- 比较运算符
- 大于、小于、大于(小于)等于、不等于
- 显示在某一区间的值(含头含尾)
- 显示在in列表中的值
- 模糊查询,Like语句中,%代表零个或多个任意字符,_代表一个字符
- 判断是否为空
- 逻辑运算符
- 排序查询
- SELECT * FROM 表名 ORDER BY 排序字段 ASC|DESC;
- 聚合查询
- count:统计指定列不为NULL的记录行数;
- sum:计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
- max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
- min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
- avg:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
- SELECT 聚合函数名(字段名) FROM 表名;
- 分组查询
- SELECT 字段1,字段2… FROM 表名 GROUP BY分组字段 HAVING 分组条件;
- having与where的区别:
- having是在分组后对数据进行过滤
- where是在分组前对数据进行过滤
- having后面可以使用分组函数(统计函数)
- where后面不可以使用分组函数
- 多表查询
- 交叉连接查询(基本不会使用-得到的是两个表的乘积)
- 内连接查询(使用的关键字 inner join , inner可以省略)
- 隐式内连接:select * from A,B where 条件;
- 显示内连接:select * from A inner join B on 条件;
- 左外连接:
- left outer join
select * from A left outer join B on 条件;
- 右外连接:
- right outer join
select * from A right outer join B on 条件;
MySQL常见操作
原文:https://www.cnblogs.com/mr-zhao/p/9097980.html