MySQL基础———SQL语句
概述
SQL语句可以分为四类:
(1)DDL:数据库定义语言
(2)DQL:数据库查询语言
(3)DML:数据库操作语言
(4)DCL:数据库控制语言
下面将介绍以下这些语言的基础语法:
1.DDL
以数据库为操作对象:
(1)show databasess 查看所有的数据库。
(2)create database [if not exists] 数据库名 创建数据库
(3)use 数据库名 选中数据库
(4)drop database 数据库名 删除数据库
以表为操作对象:
(1)创建表
create table 表名
(
字段创建
)comment '备注';
(2)表中的字段创建
格式:字段名 字段类型 约束(约束包含主键约束(primary key),外键约束,唯一约束(unique),非空约束(not null)等);
下面是一个具体的例子:
在实际操作中数据库的创建和表的创建多使用图形化的工具实现。
(3)修改表
添加字段: alter table 表名 add (字段名 字段类型 [ 约束]);
修改字段:alter table 表名 modify(字段名 字段类型 [ 约束]);
(如果一次批量添加或修改多个字段,用逗号隔开)
(4)删除表 drop table 表名
2.DML
(1)添加记录:
insert into 表名 [字段1,字段2....]values (值1,值2.,...);
批量添加用逗号隔开。
示例:
(2)删除记录:
delete from 表名 where 条件
(3)修改记录
update 表名 set 记录1=值1,记录2=值2 where 条件;
3.DQL(重点)
单表查询
(1)基本查询:
查询某表的所有信息 select *from 表名 (实际中尽量不使用这样的形式,原因:不直观且性能低)
查询某表的某些字段信息 select 字段1[as xx],字段2[as xx]...from 表名 (as xx 可以给该字段指定一个别名显示)
(2)条件查询:
格式为 : select 字段名.... from 表名 where 条件
以下例子:
以下要特别注意:
在模糊查询中,要匹配对应字数的条件,使用‘__’有几个下划线就是查询几个字的,而对于任意长度的模糊查询用% 要查询以x开头:x%, 包含x:%x%, 以x结尾:%x
(3)聚合函数:
聚合函数主要包括以下几个:SUM()、COUNT()、AVERAGE()、MAX()、MIN()
依次为和,计数,平均,最大,最小
(注:聚合函数统计的都是非空记录)
(4)分组查询:
select 字段名,聚合函数 from 表名 group by 字段名 having 条件;
如果在分组后还要按某个条件显示记录,则需使用having
示例:
(5)排序查询
在语句后接order by asc/desc (asc为升序,desc为降序,默认为升序,所以asc往往省略不写)
(6)分页查询
在语句后接 limit 起始索引(从0开始),每页记录条数 起始索引的计算公式:起始索引=(页码-1)*每页记录条数
(7)if 语句
if(条件表达式,(为true时展示的),(为false时展示的))xx (xx为表头信息)
(8)case语句
case 表达式 when 值1 then 结果1,when 值2 then 结果2,when 值3 then 结果3 ...else...end
多表查询
(1)连接查询:内连接
内连接相当于是表A和表B相交集的部分
通常使用where 条件来消除无效的笛卡尔积(笛卡尔积总记录条数等于表1记录条数*表2记录条数)
隐式内连接:
select 字段名 from 表1,表2 [where 表1的某个字段=表2的某个字段]
多表查询时表名可以简单化,在from后的表名后面直接空格再添加即可设置表别名
显示内连接:
select 字段名 from 表1 inner join 表2 on 表1的某个字段=表2的某个字段 [where 条件] (inner 可省略不写)
(2)连接查询:外连接
外连接可分为左,右外连接两种 , 左/右外连接的结果完全包含左/右部分的数据及相交部分的数据。(即可为null)
select 字段名 from 表1 left/right join 表2 on 表1的某个字段=表2的某个字段 [where 条件]
(注:显示内连接和外连接在表1 left join 后接的语句是 on 确定关联的表的字段,如果还有条件就接where并写入条件)
(3)子查询:标量子查询
子查询式嵌套式的select语句
标量子查询中查询的条件是单个标量,通常是在查询条件中某个字段 (大于/小于/等于/不等于)(select语句)。
示例:
(4)子查询:列子查询
列子查询中查询条件是一列,常使用 in/not in
示例:
(5)子查询:行子查询
行子查询中查询条件是行,可以是多列, 常使用 (字段1,字段2)= (select语句)
示例:
(6)子查询:行子查询
表子查询中通常用其他查询的查询结果当作临时表作为下一个查询的查询对象
示例:
网友评论