一.最基本的DDL语句
1.创建数据库
命令:created database 数据库名;
2.使用数据库
命令:use 数据库名;
3.删除数据库
命令:drop database 数据库名
二.简单的DML操作
1.增
命令:insert into 表名 (列名) values (数据); //列名可以是多个,列与列之间用逗号分隔,数据类型和顺序与列名一致;
2.改
命令:update 表名 set 列 = 新值 where 条件;//如果不使用where过滤,会修改一整列;
3.删
命令:delete from 表名 where 条件 ;//不使用where删除全部,可用日志恢复;
命令:truncate table 表名;//无法恢复
4.写在where 之后的条件语句
a.运算符:
等于: =
不等于: !=/<>
大于/小于:>/>=/<=
逻辑 :与--and;或--or;
模糊匹配:使用关键字--like ;%表示0个或多个字符;_表示一个字符
例: '%贝%'表示含有贝字的所有内容;'_贝_'表示三个字符贝在中间;注:汉字在数据库需要3个字符表示;
in(1,2,3)--表示列中有这三个数组的满足条件;
not inin(1,2,3)--表示列中有这三个数组的不满足条件;
三.简单的DQL语句
1.基本语法:select 要查询列 from 表名 where 过滤条件 ouder by 排序;
其中 :select和from两个关键字是基本语法;where和 ouder by是可选语法;
2.表名/列 后跟as 再跟别名; //可以给表或列取别名便于在复杂情况下区分;
3.between 数据 and 数据;表示两个数据之间的数据;
4.distince 列名 //去除重复
5.limit 分页;
6.如果需要排序:ouder by 跟上asc 表示升序(默认是升序);跟上desc表示降序;
7.聚合函数
a.count--统计行的数量
命令:select count(技数规范) from 表名;
计数规范:*表示所有的行;
all 列名表示所有的非空行;
distince 列名 所有的非空不重复行;
b.sum--获取单列所有数据的总和;
用法同上,技术规范没有*;
c.avg--获取单列所有数据的平均值;
用法同上,技术规范没有*;
d.max/min--获取单行的最大值/最小值;
8.数据分组
语法:select 列A,聚合函数 from 表 where 过滤条件 group by 列A;
先过滤,然后按照列A对整张表进行分组;分组以后select 所查询的内容只能是列A与聚合函数,否则出现的数据会失去意义(之后查询到每组第一个数据);
having 专门对分组后的数据进行过滤;
执行顺序(先后为):from
where
group by
select
having
order by
9.子查询 --在一个查询中嵌套查询
a.在select后嵌套
例:select 列,(子查询) from 表名;
特点,子查询的结果只能是单行单列
b.from后嵌套--以子查询的结果为表
例:select * from (子查询);
c.where后嵌套--用一个子查询结果作为条件;
⑴.使用运算符
子查询结果为单行单列的情况下;
⑵.in/not in
子查询结果为多行单列的情况;
⑶.all
满足子查询所有结果,为真
⑷.any
满足子查询其中一个结果,为真;
⑸.exists
只有子查询结果里由外部需要的就为真;
10.inner join on 联接--inner join(使用时inner可以省略不写)将多张表以行连接的方式连接成一张大表,on 按照指定的方式过滤掉无效的行;这种多表连接又叫做--笛卡尔积;
例:select 列1,列2 from 表1 join 表2 on 联接关系;
a.内联接
使用运算符匹配两表的所有行,得到有效行
from 表1 inner join 表2;from 表1 join 表2;from 表1,表2 where 条件;效果一样
b.外连接
left join --左外联,只过滤右边的表,左边全显;
right join --右外联,只过滤左边的表,右边全显;
c.自连接--同一张表放在 join两边;