文章目录
- 一、SQL, DB, DBMS 分别是什么, 他们之间的关系?
- 二、什么是表(table)?
- 三、学习通用的 SQL 语句,sql 语句分类:
- 四、导入数据
- 五、什么是sql脚本?
- 六、查看表结构(desc):
- 七、常用命令
- 八、简单的查询语句(DQL 数据查询语言)
- 九、条件查询
- 十、排序(升序、降序)
- 十一、分组函数
- 十二、group by 和 having
- 十三、总结一个完整的DQL语句
一、SQL, DB, DBMS 分别是什么, 他们之间的关系?
DB: DataBase (数据库, 实际上在硬盘上以文件的形似存在)
DBMS: Database Management System(数据库管理系统,常见的有:MySQL, Oracle DB2 Sybase, SqlServer…)
SQL: 结构化查询语言, 是一门标准通用语言, 标准的sql语句适用于所有的数据库产偶
DBMS 负责执行 sql 语句, 通过执行 sql 语句来操作 db 中的数据
DBMS -----(执行)> SQL 语句 -(操作)-> DB
执行
操作
DBMS
SQL语句
DB
二、什么是表(table)?
表(table)是数据库的基本组成单元, 所有的数据都以表格的格式组织 一个表包括行和列:
行: 被称为数据/记录(date) 列: 被称为字段(column) 字符串(varchar)
每个字段名包含哪些信息: 字段名, 数据类型, 相关约束
三、学习通用的 SQL 语句,sql 语句分类:
DQL(数据查询语言):
查询语句, 凡是 select 语句都是 DQLDML(数据操作语言):
insert /delete /update 对表当中的数据进行增删改DDL(数据定义语言):
createdropalter , 对表结构的增删改TCL(事务控制语言):
commit 提交事务, rollback 回滚事务DCL(数据控制语言):
grant 授权, revoke 撤销权限等
四、导入数据
- 第一步:登录mysql数据库管理系统
dos命令窗口
mysql -uroot -p0320 - 第二步:查看有哪些数据库
show databases;(这个不是SQL语句,属于MySQL的命令。) - 第三步:创建属于我们自己的数据库
create database cqnb; (这个不是SQL语句,属于MySQL的命令。) - 第四步:使用cqnb数据
use cqnb; (这个不是SQL语句,属于MySQL的命令。) - 第五步:查看当前使用的数据库中有哪些表?
show tables; (这个不是SQL语句,属于MySQL的命令。) - 第六步:初始化数据
source D:\resources\bjpowernode.sql
五、什么是sql脚本?
xxxxxxx.sql, 这个文件以sql结尾,这样的文件被称为 “sql脚本”。
当一个文件的扩展名是.sql,并且该文件中编写了大量的sql语句,我们称这样的文件为sql脚本。
注意:直接使用source命令可以执行sql脚本。
sql脚本中的数据量太大的时候,无法打开,请使用source命令完成初始化。
删除数据库:drop database xxxxx;
六、查看表结构(desc):
七、常用命令
select datebase(); 查看当前使用的是哪个数据库
select version(); 查看mysql的版本号
\c 命令,结束一条语句
exit 命令,退出mysql
show create table emp; 查看创建表的语句
八、简单的查询语句(DQL 数据查询语言)
语法格式:select 字段1,字段2,字段名,... from 表名;
提示:
- 任何一条sql语句以";"结尾
- sql语句不区分大小写
给查询结果的列重命名?
select ename,sal*12 as yearsal from emp;
select ename,sal*12 as '年薪' from emp;
注意:
标准sql语句中要求字符串使用单引号括起来。倏然mysql支持双引号,尽量别用。
as关键字可以省略。
查询所有字段?
select * from emp; // 实际开发中不建议使用*,效率较低!!!
九、条件查询
语法格式:
select 字段,字段... from 表名 where 条件;
执行顺序:先from,然后where,最后select
between…and… 使用时左小右大[…~…]
between…and…还可以使用在字符串方面[…~…)
模糊查询like //在模糊查询当中,必须掌握两个特殊的符号,一个是 % ,一个是 _
十、排序(升序、降序)
select ename , sal from emp order by sal; //升序(默认)
select ename , sal from emp order by sal asc; //升序
select ename , sal from emp order by sal desc; //降序
select 执行顺序
字段 ------>3
from
表名 ------->1
where
条件 ------->2
order by
… ------->4
order by 是最后执行的。
十一、分组函数
count 计数
sum 求和
avg 平均值
max 最大值
min 最小值
记住: 所有的分组函数都是对"某一组"数据进行操作。
记住:所有的分组函数都是对"某一组"数据进行操作。
select sum(sal) from emp; // 找出工资总和
select max(sal) from emp; // 找出最高工资
select min(sal) from emp; // 找出最低工资
select avg(sal) from emp; // 找出平均工资
select count(*) from emp; // 找出总人数
分组函数一共5个。
分组函数还有另一个名字:多行处理函数。
多行处理函数的特点:输入多行,最终输出的结果是1行
ifnull()空处理函数
ifnull(可能为null的数据,被当做什么处理)
分组函数自动忽略NULL
重点:所有的数据库都是这样规定的,只要有NULL参与的运算结果一定是NULL。
单行处理函数
什是单行处理函数?
输入一行,输出一行。
count(*)和count(具体的某个字段),他们有什么区别?
count(*): 不是统计某个字中数据的个数,而是统计总记录条数。(和某个字段无关)
count(comm): 表示统计comm字段中不为NULL的数量总数量。
十二、group by 和 having
group by : 按照某个字段或者某些字段进行分组。
having : having是对分组之后的数据进行再次过滤。
注意: 分组函数一般都会和group by联合使用,这也是为什么它被称为分组函数的原因。
并且任何一个分组函数(count sum acg max min)都是group by语句执行结束之后才会执行的。
当一条sql语句没有group by的话,整张表的数据会自成一组。
select ename,max(sal),job from emp group by job;
以上在mysql当中,查询结果是有的,但是结果没有意义,在Oracle数据库当中会报错。语法错误。
记住一个规则: 能跟分组函数和参与分组字段。
十三、总结一个完整的DQL语句