数据库:(数据库管理系统,简单的sql语句)
常见的数据库管理系统:Oracle(甲骨文),MySQL(原属AB公司,现属于Oracle公司)
Sql, Database(数据库在硬盘上以文件的形式存在),DBMS(数据库管理系统,常见的有mysql,oracle,db2等)
SQL:
结构化查询语言,标准的sql适合所有的数据库产品。
sql属于高级语言,在执行的时候,也会先进行编译,在进行执行(sql语句的编译由DBMS来编写。)DBMS负责执行sql语句,通过执行sql语句来操作DB之中的数据。
DBMS-- -- ---》(执行)SQL---- --- - 》DB
表:
表(table)是数据库的基本组成单元,目的是可读性强。
1.一个表包括行(row)和列(column):
行:被称为数据/记录
列:被称为字段
2.字段包含的属性:
字段名,数据类型,相关的约束。
3.学习mysql主要是学习通用的sql语句。
DQL《数据查询语句》:查询语句,凡是select语句,都是DQL。
DML《数据操作语言》: insert,delete,update,对表中的数据就行修改。
DDL《数据定义语言》:creat,drop,alter对表结构的增删改查。
TCL《事务控制语言》:commit提交事务,rollback回滚事务。(T代表transcational)
DCL《数据控制语言》:grant授权,revoke撤销权限等。
4.导入数据:
查看有哪些数据库:show database(这个不是sql语句,属于mysql命令)
创造一个自己的数据库:create database “名字”;(这个不是sql语句,属于mysql命令)
使用数据库:use “名字”(这个不是sql语句,属于mysql命令)
查看数据库中的表:show tables;
初始化数据:
source G:\mysql\bjpowernode.sql
(“sql”这样的文件称为sql脚本,当一个文件拓展名为sql,并且该文件中编写有大量的sql语句,我们称之为sql脚本)
删除数据库:drop database “名字”
5.查看表的结构:desc “表名”
6.查看表中的数据:select *from “表名”
常用命令:
select database; 查看当前使用的数据库
select version ; 查看mysql的版本号
\c 结束一条语句
exit 退出
show tables from “类名” 查看其他表中的表
show create table “表名”; 查看创建表语句
sql语句:
简单的查询语句(DQL):sql语句以;结尾,并且不区分大小写。
语法结构: select 字段名, 字段名2,字段名3, from 表名;
字段可以参与数学运算
给查询结果的列重新命名。 select 字段,字段as 新字段名字 from 表名。
注意:标准sql语句中要求使用单引号括起来,上述的as关键字可以省略。
条件查询:
语法格式: select 字段,字段 from 表名 where 条件;(字符串用单引号括起来)
= | 等于 |
<> / ! = | 不等于 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
between...and... | 在两个值之间(闭区间)左边是小数字,右边是大数字 |
is null | 为空 |
and | 并且 |
or | 或者 |
in | 包含,相当于多个or |
not | 取非 |
like | 模糊查询, 支持%或者_匹配 |
between 可以在数字之间,还可以在字符串方面
select ename, sal from emp where sal between ‘A’ and ‘C’; (左闭右开区间)
在数据库当中null 不是一个值,不能用等号来代替, 必须是is null 或者 is not null;
and和or在一起运行时,and优先级要大于or,在运算符优先级不确定的时候,加小于号。
in等同与or ;in后边的每一个值不是区间,是一个具体的值。
模糊查询 like:
比如:找出所有名字中带有o的? %代表任意多个字符, _代表任意一个字符。
如果要查询带有“_”的字符串,可以使用转义字符把下划线表示出来。
排序
语法结构:select 字段 from 表名 order by 字段;(默认升序) asc 表示升序,desc表示降序。
select ename ,sal from emp order by sal desc, ename asc;
(按照工资降序排,工资相同按照升序排),越靠前的字段,越先排序,起主导作用,无法排序后才会排序后边的字段。
select ename ,sal from emp order by 2;
(按照第二列来排序)
sql 的执行顺序: select 字段(3) from 表名(1)where 条件(2) order by 条件(4);
分组函数:
count | 计数 |
sum | 求和 |
avg | 平均值 |
max | 最大值 |
min | 最小值 |
注意:所有的分组函数都是对“某一组”的数据就行操作;
mysql> select sum(sal) from emp; // 工资总和
+----------+
| sum(sal) |
+----------+
| 29025.00 |
+----------+
1 row in set (0.01 sec)
mysql> select count(ename) from emp; //计算总人数
+--------------+
| count(ename) |
+--------------+
| 14 |
+--------------+
1 row in set (0.01 sec)
分组函数只有这五个,分组函数还有另一个名字:多行处理函数(输入多行,输出一行)
分组函数自动忽略null
分组函数不能直接写在where之后
count(*)统计总条数,count(字段)统计字段内不为null的条数;
分组函数还可以组合起来使用。
单行处理函数:
一行一行处理的函数: 输入一行,输出一行。
注意:数据库之中,只有有null参与的数据运算,结果一定是null。
ifnull() 处理函数?
ifnull(可能是null的数据,被当做什么处理);
select ename from emp where sal > avg(sal);
ERROR 1111 (HY000): Invalid use of group function