1、数据库:导入数据
直接在cmd里面写命令来解决
1.dos命令窗口,mysql -u root -p 接着输入密码4444,进入了MySQL的服务器
2.show databases; 查看当前的数据表格
3.create database bjpowernode; 创建数据表格
4.use bjpowernode; 使用创建的数据
5.source 文件路径 初始化数据库,路径为sql后缀的文件
2、desc 查看表的结构
select语句
3、查询语句(简单)
语法格式:
select 字段名1,字段名2,字段名3,等 from 表名;
提示:
结束语句以分号结束
SQL语句不区分大小写
不遇到分号不结束语句的执行,而且长短也没有要求
使用as对列名重命名
4、条件查询
语法格式:
select
字段,字段
from
表名
where
条件;
条件语句这里可以使用between 数据1 and 数据2 来进行连接,要求左小右大,也可以使用字符串
and 和
or 或
not 非
in 包含(针对单一的查询使用,即可以使用括号的形式来进行),但是括号里只是单一的值,而不是一个区间
like 模糊查询(从名称上看,像什么的,在使用时,需要掌握两个特殊的符号,一个是%(代表多个字符),
一个是_(代表任意的一个字符)。
for example : 查找第二个字母为o的,使用 '_o%'
查找'_',也就是下划线字符,可以使用转义字符
is null 为空
is not null 不为空
and和or的优先级为,and比or高,因此为了先执行or,需要使用括号的方式
执行顺序:先from,然后where,最后select
5、排序(升序,降序)
语法格式:
select 字段名 from 表名 order by 类型名1,类型名2,等;
默认为升序,asc表示升序,desc表示降序
在排序时,只有类型1相等时,才会使用类型2来进行排序
和查询混合时,需要将order写在后面
6、分组函数
处理多行,输出一行
count 计数
sum 求和
avg 平均值
max 最大值
min 最小值
语法格式:
select count(字段名) from 表名
多行处理函数,将多行转变为一行来进行处理,在使用时会自动的忽略表格当中的空值NULL
SQL语句当中语法规则,在where字句当中,不可以写分组语句
count(*)和count(字段)的区别,一个只是针对字段当中不为空的记录,一个是整个表格的行数总量
多行处理函数可以并列使用,即select count(字段名) ,sum(字段名) from 表名
7、单行处理函数
处理一行,输出一行
重点:所有的数据库都是一样的规定,只有有NULL参与的运算结果一定是NULL。
因此在处理的时候,需要对于表中的空NULL值进行处理,不然只要包含NULL的空值,就会出错
ifnull()空处理函数
语法规范:ifnull(可能为null的数据——一般为字段名,被当成什么处理)
8、group by 和 having 的区别
group by :按照某个字段或者某些字段进行分组
having: 对分组之后的数据再次过滤
语法:
select 语句 from 表名 group by 字段名1,字段2,...;
分组函数一般会和group by进行联合使用,原有的多行处理函数如果不加group by的话,只会有一行
但是添加了之后,会根据分组情况,再次进行求解,形成多行的格局
从结构上看,group by语句是在分组函数之前才执行的,分组函数,需要先分组之后才可以进行执行
如果没有分组函数,默认为一组
mysql> select ename from emp where mgr>=avg(mgr);
ERROR 1111 (HY000): Invalid use of group function
所以上述错误的主要原因在于avg为分组函数,在group by 语句之后才执行,而where字句在group by语句之前
导致了冲突,因为上述语法需要avg先执行,那么此时where语