数据库-mysql基本知识-1
sql,DB,DBMS分别是什么?他们的关系。
DB:DataBase(数据库,数据库实际上在硬盘上以文件的形式存在)
DBMS:DataBase Management System(数据库管理系统,常见的有Mysql,Oracle,DB2 Sybase SqlServer…)
SQL:结构化查询语言,是一门标准通用的语言,标准sql适用于所有的数据库产品。sql语句在执行时,内部也会先由DBMS进行编译,然后再执行sql。
DBMS负责执行sql语句,通过执行sql语句来操作DB当中的数据。
表(table):
表是数据库的基本组成单元,所有数据都以表格的形式组织,目的是可读性强。
表包括行和列。
行:被称为数据,记录(data)。
列:被称为字段(colum)。
SQL语句的分类:
DQL(数据查询语言):查询语句,凡是select语句都是DQL。
DML(数据操作语言):insert,delete,update,对表的数据进行增删改。
DDL(数据定义语言):create,drop,alter,对表结构的增删改。
TCL(事务控制语言:commit提交事务,rollback回滚事务。
DCL(数据控制语言):grant授权,revoke撤销权限等。
mysql中doc命令:
1.打开dos命令窗口输入:mysql -uroot -p
2.登录后输入:show databases; 显示有哪些数据库
3.创建自己的数据库:create database mysqldata;
4.使用mysqldata数据库:use mysqldata;
5.查看当前数据库有哪些表格:show tables;
6.desc 表名:查看表结构。
脚本文件:
文件扩展名为.sql,并且文件中编写了大量的sql语句,我们称这样的文件为sql脚本。
常用命令:
创建数据库:create database 数据库名称;
使用数据库:use 数据库名称;
查询当前使用的数据库:select database();
查询数据库版本:select version();
终止一条命令:\c
退出mysql:exit
查看创建表的语句:show create table 表名;
sql语句:
简单的查询语句(DQL):
select 字段名1,字段名2... from 表名;
注意:任何一条语句以";"结尾。sql有语句不区分大小写。
select * from 表名;
代表查询某个表的全部字段。(实际开发中不建议使用)
给查询的结果重命名:
select 字段名1 as 名字,字段名2 as 名字,... from 表名;
注意:as关键字可以省略,当名字是中文时,需要加’’。
条件查询:
select 字段1,字段2 from 表名 where 条件;
注意:字符串要用单引号括起来。
运算符 | 说明 |
---|---|
= | 等于 |
<>,!= | 不等于 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
between…and… | 两个值之间 |
is null | 为空(在查找字段是否为空的时候,要用is null,is not null来判断) |
and | 并且 |
or | 或者 |
in | 包含 |
not | 取非 |
like | 模糊查询 |
模糊查询:用like,%代表任意多个字符,_代表1个字符。
in 举例:
select 字段1,字段2 from 表名 where salary in(1000,5000);
数据排序:
用order by,默认是升序,指定升序或者降序:asc表示升序,desc表示降序。
例如:
select name,number from mysqldata order by salary desc;
order by 字段1(asc/desc),字段2(asc/desc);
只有当字段1相等的时候,才会按字段2来排。
执行顺序:
select
字段 5 (挑选)
from
表名 1
where
条件 2 (过滤)
group by
字段 3 (分组)
having
... 4 (再过滤)
order by
... 6 (排序)
limit
... 7 (取哪几个)
分组函数(多行处理函数):
count: 计数
sum: 求和
avg: 平均值
max:最大值
min:最小值
所有的分组函数都是对某一组数据进行操作的。
注意:分组函数自动忽略null。
单行处理函数:
输入一行,输出一行。
ifnull函数:
ifnull(可能为null的数据,被当作什么)
只要有null参与的运算都是null。
例如:
select name,ifnull(comm,0) from mysqldata;
当comm为空时,默认为0。
group by:
按照某些字段进行分组。
语法:
select 字段 from 表名 group by 需要分组的字段;(可跟多个字段)
注意:分组函数一般会和group by联合使用过,分组函数一定在group by语句执行之后再执行,当一条sql语句没有group by时,整张表的数据自称一组。
注意:当一条语句有group by时,select后面只能跟分组函数和参加分组的字段。
having:
对分组之后的数据再次进行过滤。
select 字段 from 表名 group by 需要分组的字段 having 条件;
提示:能在where中过滤的,尽量在where中过滤。
distinct:
用来去除重复的查询结果,只能出现在所有字段的最前面,表示后面出现的字段联合去重。
例如:
select distinct job from mysqldata;