目录
1、数据准备及常用命令
1.1、常见的数据库管理系统
IBM-->eclipse。Oracle甲骨文(Sun:太阳)Oracle做数据库起家的。Oracle-->MySQL AB公司
- Oracle MySQL DB2 Sybase “MS SQLSever 支持标志sql的数据库管理系统”
1.2、MySQL的安装与配置(略)
1.3、MySQL卸载
- 双击安装包,下一步,remove;
- 手动删除Program Files中的MySQL目录;
- 手动删除ProgramData目录(隐藏目录)中的MySQL。
1.4、SQL、DB、DBMS关系
- DB:DataBase(数据库,实际上在硬盘上以文件形式存在)
- DBMS:DataBase Management System(数据库管理系统,常见的有:MySQL、Oracle、DB2、Sybase、sqlServer。。)
- SQL:结构化查询语言,是一门标准通用的语言。标准的sql适用于所有的数据库产品。SQL属于高级语言,SQL语句在执行的时候,实际上内部也会先进行编译,然后再执行sql。(sql语句的编译由DBMS完成。)
DBMS负责执行sql语句,通过执行sql语句来操作DB中的数据。
DBMS -(执行)-> SQL -(操作)-> DB
1.5、表Table
- 表:table是数据库的基本组成单元,所有的数据都以表格的形式组织,目的是可读性强。
表包括行和列:
- 行:数据/记录(data)
- 列:字段(column)
每个字段包括的属性:字段名、数据类型、相关的约束。
学号(int) 姓名(varchar) 年龄(int)
110 张三 20
1.6、SQL语句的分类
DQL(数据查询语言):查询语句,凡是select语句都是DQL。
DML(数据操作语言):insert、delete、update,对表当中的数据进行增删改。
DDL(数据定义语言):create、drop、alter,对表结构的增删改。
TCL(事务控制语言):commit提交事务,rollback回滚事务。(TCL中的T是Transaction)
DCL(数据控制语言):grant授权、revoke撤销权限等。
1.7、导入数据
- 登录mysql数据库管理系统,dos命令窗口:mysql -uroot -p
- 查看有哪些数据库:show databases;(这个不是SQL语句,属于MySQL的命令。)
- 创建数据库:create database bjpowernode;(MySQL命令)
- 使用数据库:use bjpowernode;(MySQL命令)
- 查看当前使用的数据库中有哪些表格:show tables;(MySQL命令)
- 初始化数据: source E:\MySQL\bjpowernode\bjpowernode.sql,然后show tables;数据初始化完成后看到有三张表。
- 删除数据库:drop database bjpowernode;
1.8、sql脚本
bjpowernode.sql文件以sql结尾,被称为“sql脚本”。
sql脚本:当一个文件的拓展名是.sql,并且该文件中编写了大量的sql语句,即称为sql脚本。
注意:直接使用source命令可以执行sql脚本。
sql脚本中的数据量太大的时候无法打开,可以使用source命令完成初始化。
1.9、查看表结构
desc dept;
dept部门表,emp员工表,salgrade工资等级表
DEPTNO部门编号,DNAME部门名称,LOC部门位置;
EMPNO员工编号,ENAME员工姓名,JOB工作岗位,MGR上级领导编号,HIREDATE入职日期,SAL月薪,COMM补助/津贴,DEPTNO部门编号;
GRADE等级,LOSAL最低薪资,HISAL最高薪资。
1.10、查看表中的数据
select * from emp;
1.11、其他常用命令
- 查看当前使用的数据库:select database();
- 查询数据库版本:select version();
- 终止一条语句:\c
- 退出mysql:exit
1.12、查看创建表的语句
show create table emp;
2、查询
2.1、简单的查询语句(DQL)
select 字段名1,字段名2,字段名3,... from 表名;
注意:
- 任何一条sql语句以“;”结尾。
- sql语句不区分大小写。
mysql> select ENAME from emp;
mysql> select EMPNO,ENAME from emp;
mysql> select empno,ename from emp;
mysql> SELECT EMPNO,ENAME FROM EMP;
mysql> SELect EMPno,ename FROm emP;
mysql> select
-> empno,ename
-> from
-> emp;
- 查询员工的年薪:select ename,sal * 12 from emp;(字段可以参与数学运算。)
- 给查询结果的列重命名:select ename,sal * 12 as yearsal from emp;
- 别名中有中文:select ename,sal * 12 as '年薪' from emp;(用单引号括起来)
- as关键字可以省略:select empno,ename,sal * 12 yearsal from emp;
- 查询所有字段:select * from emp;(实际开发中不建议使用*,效率较低。)
注意:标准sql语句中要求字符串使用单引号括起来,虽然mysql支持双引号,尽量别用。
2.2、条件查询
select 字段,字段,... from 表名 where 条件;
执行顺序:先from,然后where,最后select
- 查询工资等于5000的员工姓名:select ename from emp where sal = 5000;
- 查询SMITH的工资:select sal from emp where ename = 'SMITH';(字符串varchar使用单引号括起来,可以用desc emp;查看表结构。)
- 查询工资高于、低于3000的员工:
- select ename,sal from emp where sal > 3000;
- select ename,sal from emp where sal >= 3000;
- select ename,sal from emp where sal < 3000;
- select ename,sal from emp where sal <= 3000;
- 查询工资不等于3000的员工:
- select ename,sal from emp where sal <> 3000;
- select ename,sal from emp where sal != 3000;
- 找出工资在1100和3000 之间的员工,包括1100和3000:
- select ename,sal from emp where sal >=1100 and sal <=3000;
- select ename,sal from emp where sal between 1100 and 3000;(between...and...是闭区间。[1100,3000])
- select ename,sal from emp where sal between 3000 and 1100;(即>=3000 and <=1100,查询不到任何数据。)
between and在使用的时候必须左小右大。
between and除了可以使用在数字方面之外,还可以使用在字符串方面。(数字左右都是闭区间,字符左闭右开)
select ename from emp where ename between 'A' and 'C'; (左闭右开,不含C)
select ename from emp where ename between 'A' and 'D';
- 找出哪些人津贴为NULL:select ename,sal,comm from emp where comm is null;(在数据库中NULL不是一个值,代表什么也没有,为空。NULL不能用等号衡量,必须使用is null或者is not null。)
- 找出哪些人津贴不为NULL:select ename,sal,comm from emp where comm is not null;
- 找出哪些人没有津贴:select ename,sal,comm from emp where comm is null or comm = 0;
- 找出工作岗位是MANAGER和SALESMAN的员工:select ename,job from emp where job = 'MANAGER' or job = 'SALESMAN';
- and和or联合起来用 -- 找出薪资大于1000的并且部门编号是20或30部门的员工:select ename,sal,deptno from emp where sal > 1000 and (deptno = 20 or deptno =30);(注意:当运算符的优先级不确定的时候加小括号。)
- in等同于or -- 找出工作岗位是MANAGER和SALESMAN的员工:
- select ename,job from emp where job = 'MANAGER' or job = 'SALESMAN';
- select ename,job from emp where job in ('MANAGER' , 'SALESMAN');
- select ename,job from emp where sal in (1000,5000);(找出工资等于1000或等于5000的员工,in后面的值不是区间,是具体的值。)
- select ename,sal from emp where sal in (800,5000);
- select ename,job,sal from emp where sal not in (800,5000);(not in:不在这几个值当中。)
模糊查询like:(在模糊查询中,必须掌握两个特殊的符号,一个是%,一个是_。)
%代表任意多个字符,_代表任意一个字符。
- 找出名字当中含有O的:select ename from emp where ename like '%O%';
- 找出名字中第二个字母是A的:select ename from emp where ename like '_A%';
- 找出名字中第三个字母是A的:select ename from emp where ename like'__A%';
- 找出名字中有下划线的(新建一张表t_user):select name from t_user where name like '%\_%';(转义\)
- 找出名字中最后一个字母是T的:select ename from emp where ename like '%T';