注意:SQL语句分为四种类型,分别是DQL(数据查询语言),DML(数据操作语言),DDL(数据定义语言),TCL(事务控制语言),DCL(数据控制语言)
1.DQL(数据查询语言)(凡是带select关键字的都是查询语句)
2.DML(数据操作语言)(凡是对表中数据进行增删改操作的都是操作语句,如insert, delete, updata)
3.DDL(数据定义语言)(带有create,drop,alter主要对表结构进行操作的都是定义语言)
4.TCL(事务控制语言)(包括commit, rollback等都属于事务控制语言)
5.DCL(数据控制语言)(包括grant, revoke等都属于数据控制语言)
-----还有一点要注意,以下代码格式不属于标准代码格式,只作为模板参考即可。
以下分别对前三种类型进行总结:
1)登录mysql
- 打开cmd(命令提示符),输入以下代码:
mysql -uroot -p123456
注:这里的“123456”指的是密码
2)mysql常用命令
- 展示数据库
show databases;
- 使用数据库
use 数据库名;
- 展示数据库的表
show tables;
- 展示数据库的表结构
desc 表名;
- 显示当前数据库的版本信息以及连接用户名
select version(),user();
- 退出MySQL
exit;
3)DQL(数据查询语言)
<1>单表查询
- 查询表中全部数据
select * from 表名;
- 查询表中部分数据;
select 列名1, 列名2, … from 表名;
- 给表取别名;
select 列名1 as 新列名1, 列名2 as 新列名2, … from 表名
- 查询表中部分数据中的特定数据(带条件)
select 列名1, 列名2, … from 表名 where 设置条件
设置条件的几种方式:
1, 表示等于: 列名 = 数值或其他;
2, 表示不等于: 列名 <> 数值或其他;
3, 表示大于或小于: 列名 > 数值或其他 或 列名 < 数值或其他;
4, 表示在两值之间: 列名 between 数值或其他 and 数值或其他;
5, 表示不为空或者为空: 列名 is not null 或 列名 is null;
6, 表示并且: 条件 and 条件;
7, 表示或: 条件 or 条件;
8, 表示包含 (相当于多个 or) : in(列名1,列名2,…);
9, 模糊查询:列名 like ‘相关字符+字母或数字’; #引号内的符号位置不唯一
10,模糊查询中的相关字符:
_ 下划线只能匹配一个字符
% 匹配任意个字符
- 查询后进行排序
正序: select 列名1, 列名2, … from 表名 where 设置条件 order by 列明;
倒序:select 列名1,列名2, … from 表名 where 设置条件 order by 列明 desc;
- 查询后对表中数据处理(单行处理)
select 函数名(列名) , … from 表名;
常见函数名:
1,变成小写字母 lower
2,变成大写字母 upper
3, 取长度 length
4, 去空格 trim
5, 取子串 substr(被截取的字符串,起始下标,截取长度)
6, 生成随机数 rand
7, 四舍五入 round
8, 设置千分位 format
注:主要是前五个使用较多
- 分组查询后对表中数据处理(多行处理)
select 函数名(列名) , … from 表名 where 设置条件 order by 列名 ;
常见函数名(以下分组函数必须在分组之后才能使用):
1,求最小值 min
2,求最大值 max
3,求平均数 avg
4,求和 sum
5,计数 count
注:分组函数必须是在分组之后才能对数据进行操作, 即不能出现where当中
- 对数据进行分组查询
select 函数名(列名), … from 表名 where 设置条件 group by 列名 ;
- 对数据进行分组查询时设置条件(having当中可以出现分组函数)
select 函数名(列名) , … from 表名 where 设置条件 group by 列名 having 设置条件 ;
总结:
select 函数名(列名) , … from 表名 where 设置条件 group by 列名 having 设置条件 order by 列名;
执行顺序:
1, from
2,where
3, group by
4, having
5,select
6,order by
7,limit
<2>多表查询
- 把查询结果去除重复记录
select distinct 列名 , … from 表名;
- 内连接
select 新表名1.列名1, 新表名2. 列名2 … from 表名1 新表名1 join 表名2 新表名2 on 设置条件;
- 外连接
左连接: select 新表名1.列名1, 新表名2. 列名2 … from 表名1 新表名1 left join 表名2 新表名2 on 设置条件;
右连接: select 新表名1.列名1, 新表名2. 列名2 … from 表名1 新表名1 right join 表名2 新表名2 on 设置条件;
- 子查询
以下(select…)语句为另一个查询语句
select …(select…) from 表名 (select…) where 设置条件(其中结合select…);
- 语句联合 union(条件是select后面列名 类型和数量 要相等)
select 列名1, … from 表名1 where 设置条件
union
select 列名2, … from 表名2 where 设置条件
- 通用分页 limit
select 函数名(列名) , … from 表名 where 设置条件 order by 列名 limit 起始位置 ,长度;
4)DML(数据操作语言)
- 向表中插入数据
insert into 表名(列名1 , 列名2…) values(对应列名1的插入值, 对应列名2的插入值…);
- 向表中插入全部数据(包括全部列名)
insert into 表名 values(对应列名的插入值…);
- 修改表中数据
update 表名 set 列名1=值1,列名2=值2,列名3=值3…where 设置条件;
注:没有设置条件,会导致表中数据全部更新;
- 删除表中数据 (不彻底删除数据,可以回滚rollback)
delete from 表名 where 设置条件
注:没有设置条件,会导致表中数据全部删除;
- 向表中插入多条数据
insert into 表名(列名1 , 列名2…)
values(对应列名1的插入值, 对应列名2的插入值…),
values(对应列名1的插入值, 对应列名2的插入值…),
values(对应列名1的插入值, 对应列名2的插入值…);
- 复制表
create table 新表名 as select*from 表名;
- 将查询结果插入另一张表中
insert into 另一张表的名 select * from 表名;
5)DDL(数据定义语言)
- 表的创建
create table 表名(
列名1 数据类型(最大长度) 约束条件1
列名2 数据类型(最大长度) 约束条件2
列名3 数据类型(最大长度) 约束条件3
…
);
数据类型:
int----- 整型(最长11)
float----- 单精度浮点类型
double----- 双精度浮点类型
char-----定长字符串
varchar------可变长度的字符串(最长255)
bigint----- 相当于long
date----- 短日期类型
datetime----- 长日期类型
clob----- 字符大对象
blob----- 二进制大对象
约束条件:
1,非空约束----- not null
2,唯一性约束----- unique
3,主键约束----- primary key
4,外键约束----- foreign key
5,默认约束----- default(设置默认值)
- 删除表
drop table 表名 if exists;
- 删除表中数据(彻底删除数据,不可以回滚rollback)
truncate table 表名;
- 增添表中字段(增加列)
alter table 表名 add 新列名 数据类型(最大长度);
6)事务
事务是指将一系列数据操作捆绑成为一个整体进行统一管理,把所有的命令作为一个整体一起向系统提交或者撤销造组偶请求。
事务属性:原子性,一致性,隔离性,持久性。
myISA存储引擎不支持事务。
- 开启事务
start transaction;
- 关闭事务自动提交
set autocommit=0;
- 恢复自动提交
set autocommit=1;
- 提交事务
commit;
- 回滚事务(回到上一次的提交点)
rollback;
- 设置事务隔离级别
set global transaction isolation level 事务隔离级别;
事务隔离级别:
1,读未提交----- read uncommitted(最低级别)
2,读已提交----- read committed
3,可重复读----- repeatable read
4,序列化/串行化 serializable(最高级别)
7)视图
视图是一种查看数据库中一个或多个表中数据的方法,视图是一种虚拟表,作为来自一个或多个表的行或列的子集创建的,视图充当查询中的表筛选器的角色。
- 创建视图
create view 视图名 as select…
- 删除视图
drop view 视图名;
- 查看视图数据
select …from 视图名;
8)索引
索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。
普通数据:允许重复和空值。
唯一索引:不允许出现重复,可以有多个唯一索引。
主键索引:非空,唯一。
复合索引:将多个列组合作为索引。
全文索引:可重复和空值。
空间索引:对空间数据类型的列建立的索引。
- 创建索引
create 索引类型 index 索引名 on 表名 (创建索引的列);
alter table 表名 add index 索引名 (索引列);
- 删除索引
drop index 索引名;
- 查看索引
show index from 表名;
9)导入和导出数据库文件
- 导入数据库文件·
source 文件绝对路径;
- 导出数据库文件
mysqldump 库名 >绝对路径\文件名.sql