SQL,DB,DBMS的概念以及三者的关系
DB(DataBase):数据库,数据库在硬盘上实际上是以文件的形式进行存储的。
DBMS(DataBase Management System):数据库管理系统,专门对数据库(表文件)进行调用和管理的,常见的有:Mysql,Orcal,Sqlserver,DB2,Sybase,其中Mysql,Orcal,Sqlserver属于关系型数据库,主要指的是数据库中的数据都是相关联的,不是单一的。目前Mysql是常用的,因为Mysql是免费的,Orcal是收费的,而且价格非常高。
SQL:结构化查询语言,是一门标准通用的语言,标准的SQL适合于所有的数据库产品。SQL语句在执行的时候,实际上在内部先由DBMS进行编译成功,然后再执行SQL语句。
三者之间的关系:
DBMS----(执行)—>SQL语句-------(操作)-------->DB
首先用户通过SQL语句向数据库管理系统DBMS发送请求,然后DBMS编译并执行SQL语句,通过执行SQL语句来操作数据库DB中的数据。
一、SQL语句的分类
学习SQL语句主要是对数据库里面的数据进行增删改查,SQL语句的分类如下:
- DQL:数据查询语言,凡是select语句,都是查询语言
- DML:数据操作语言,insert,update,delete操作语言对表中的数据进行增删改。
- DDL:数据定义语言,create,drop,alter,对表结构进行增删改。
- TCL: 事务控制语言,commit提交事务,rollback回滚事务。
- DCL:数据控制语言,grant授权,revoke撤销权限等等。
二、编程语言命令
1.Mysql命令
show databases;------------->查看有哪些数据库
create database 数据库的名字;----------->创建自己的数据库
use 数据库的名字;------------->使用自己的数据库
show tables;------------------>查看当前自己的数据库有哪些表
source sql脚本的绝对路径;----------->导入数据库脚本,完成数据库的初始化。当一个文件的扩展名为.sql,并且该文件中编写了大量的sql语句,这种就称为sql脚本。
drop database 数据库名;----------->删除数据库。
desc 表名;------------>查看表结构。
select database();------------>查看当前使用的数据库。
select version();------------->查看当前mysql的版本号。
\c;---------------------->命令,结束一条sql语句。
exit;------------------->命令,退出mysql。
2.DQL命令
提示:任何一条sql语句以“;”结束。
sql语句不区分大小写。
2.1 简单的查询语句:
语法格式:select 字段名1,字段名2,字段名3,…from 表名;
给查询结果的列重新命名:当新字段名是中文时,用单引号‘’
select 字段名 as 新字段名 from 表名;
2.2 条件查询:
语法格式:select 字段名1,字段名2 from 表名 where 条件;
条件主要包含以下几个:
(1) between and在使用的时候必须左小右大,当用在数字方面的时候,符合前闭后闭原则;当用在字符串方面的时候,符合前闭后开的原则。
(2) is null 和is not null,null不是一个值,在判断是否为null时,不能使用==。
(3) in 和not in后面主要表示的是一个个具体的值,不是区间。注意:使用Not in的时候记得排除里面数据的null。使用方法:ifnull(可能为null的数据,被当作什么数据处理)。
(4) 模糊查询like:%代表任意多个字符,_代表任意一个字符。
2.3 排序(升序或者降序):
select sal,ename from emp order by sal;默认进行升序排序.
select sal,ename from emp order by sal asc; //升序
select sal,ename from emp order by sal desc; //降序
2.4 分组函数(group by和having):
所有的分组函数都是对“某一组”数据进行操作的,并且自动忽略null。
count:计数;sum:求和;avg:求平均值;
max:最大值;min:最小值
其中count()与count(字段名)的区别:
count():统计表中的总记录条数
count(字段名): 统计表中字段名不为null的条数
group by:按照每个字段或者某些字段进行分组。
having: 对group by分组后的数据进行再次过滤。
注意:分组函数一般都会和group by联合使用,并且任何一个分组函数(count,sum,avg,max,min)都是在group by语句结束之后才会执行的。因此:当一条语句中有group by的话,select后面只能跟分组的字段名以及分组函数。
注意:分组函数不能出现在where语句之后:因为分组函数在group by执行完之后才会执行的,而group by是在where语句结束之后才会执行的。
2.5 查询结果集的去重(distinct):
语法格式:select distinct 字段名1.字段名2 from 表名;
distinct关键字表示去除重复记录,并且distinct关键字只能出现在多个字段名的最前面,表示多个字段联合去重。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了Mysql数据库知识的DQL(select)查询部分,下几篇博客将会介绍连接查询,DML,约束,引擎,事务等知识点。
觉得博主讲的还可以的点个赞呗!我也会努力做好每个知识点的,当然,欢迎大家一起讨论。