-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
数据库也是一种软件
可以动态的对数据库软件创建数据库,进行修改和查询
常用的数据库
1、MySQL数据库
2、oracle数据库
3、SqlServer数据库
4、DB2数据库 用于银行较多
数据库的安装
mysql 一步一步安装就行了
oracle的安装注意:安装出错,就要重新安装系统
一般的数据库软件都有对应的客服端,通过客服端来操作数据库
mysql的常用客户端: Navicat
oracle的常用客服端 :sqldeveloper
数据库软件安装后的启动:
我的电脑>右键 管理 服务和应用程序 服务 找到对应数据库的服务
1.MySQL数据库的服务:
1、开启mysql的服务 : 开始--运行--输入 net start MySQL
2、关闭mysql的服务 : 开始--运行--输入 net stop MySQL
mysql的几个命令:
1、show database: 显示所有的数据库
2、use databasename:使用某个数据库
3、show tables:显示某个数据库中的表
2、oracle数据库的服务
1、OracleDBConsoleorcl
2、OracleJobSchedulerORCL
3、OracleOraDb10g_homeliSQL*plus
修改表 创建或者删除表,索引语句
创表 create table 表名(字段名 字段类型,字段名 字段类型)
删表 drop table 表名
插入 insert into 表名 (字段名) values("给值")
查询 select * from 表名
删除数据 delete from 表名 where 字段名= 对应的值
更新数据 update 表名 set username(字段名) = “修改的值” where 字段名 ="原来的值"
修改两个数据 用逗号隔开字段
update 表名 set username(字段名)="" , sex(字段名)= 1 where id(字段名) =12
insert into 表名 (1,2,3,) values(a,b,c,);/*插入多个数据*/
select name as 别称 from 表
distinct 明显的,清楚的 当所有字段名相同时 只显示一条数据
select distinct *from 表
like 模糊查询 (% 代表一个 或多个) (_1只有两个字符并且最后一个字符为1) ( _1% 至少有两个字符且第二个字符为1)
and 和or 的区别 and 同时满足条件 or 只需满足一个条件即可。
对查询结果进行排序 默认
select*from emp(表名) where 1=1 ORDER BY sal(字段名) desc,deptno(字段名) desc //对两条数据排序 后面用逗号隔开,升序 asc 可以不写
SELECT avg(sal) from emp //查询该字段的平均值
SELECT max(sal) from emp //查询该字段的最大值
SELECT min(sal) from emp //查询该字段的最小值
SELECT sum(sal) from emp //查询该字段的和
SELECT count(sal) from emp//查询该字段的个数
分组函数不能用在where 条件中,只能用在select后面
select col1,col2,col3 from 表名 where 条件 group by column
select col1,col2,col3 from 表名 where 条件 group by col1,col2,col3
连表语句 (需要什么查什么)
连接两个表
select e.empno,e.ename,e.sal,e.deptno,d.dname,d.loc from emp e inner join dept d on e.deptno = d.deptno
SELECT e.*,d.* from emp e,dept d where e.deptno = d.deptno
分页
1.mysql 利用关键字limit
2.SqlServer:利用关键字 top
3.oracle:利用关键字 rownum
select * from 表 order by
格式
第一个参数从0 开始
第二个参数查询条数
SELECT * from emp ORDER BY empno limit 4,5 /*分页*/
下面附上一些sql查询的笔记
SELECT * from dept
select*from emp where 1=1 ORDER BY sal desc,deptno desc
SELECT ename,lower(ename) xin from emp
SELECT ename,upper(ename) xin from emp where empno=7902
SELECT concat(empno,ename) xin from emp // 连接两个字段
SELECT LENGTH(empno) from emp
SELECT ename,substr(ename,2,1) from emp
SELECT * from emp where lower(substr(ename,length(ename)-1,2))='th'
SELECT ROUND(3.154,2)from emp
SELECT distinct ROUND(3.154,2)from emp
select round(31.45,-1) from emp
SELECT avg(sal) from emp
SELECT sal from emp WHERE sal>(SELECT avg(sal)from emp)
SELECT max(sal) from emp
SELECT min(sal) from emp
SELECT sum(sal) from emp
SELECT count(sal) from emp
select deptno,avg(sal) from emp GROUP BY deptno
select e.empno,e.ename,e.sal,e.deptno,d.dname,d.loc from emp e inner join dept d on e.deptno = d.deptno
SELECT e.*,d.* from emp e,dept d where e.deptno = d.deptno
SELECT deptno 部门编号 ,sum(sal),count(ename) 部门人数 from emp GROUP BY deptno
SELECT d.dname, e.deptno,sum(sal) from emp e inner join dept d on e.deptno = d.deptno GROUP BY e.deptno
SELECT d.dname ,d.deptno,SUM(sal) from emp e ,dept d where e.deptno = d.deptno GROUP BY d.deptno
select now() from dept/* now()获取服务器上的时间 */
SELECT xin.*,d.dname from (SELECT e.deptno ,sum(sal) from emp e GROUP BY e.deptno) xin INNER JOIN dept d on xin.deptno = d.deptno GROUP BY d.deptno
/*
*/select xin.平均工资,xin.总工资,d.dname from
(SELECT e.deptno,avg(sal) 平均工资,sum(sal) 总工资,count(ename) cc from emp e GROUP BY e.deptno) xin ,dept d WHERE xin.deptno = d.deptno
select deptno,avg(sal) avg_sal from emp GROUP BY deptno HAVING /*having 是过滤*/ /*avg_sal>2000 avg_sal<2500*/ avg_sal BETWEEN 2000 and 2500
SELECT * from emp
SELECT * from emp ORDER BY empno limit 4,5 /*分页*/
/* 查询empno 7900~7903 */
select *from emp where empno = 7900 or empno = 7901 or empno = 7902 /* */
SELECT *from emp where empno BETWEEN 7900 and 7903 /* 针对此表 BETWEEN and 查的是一个区间范围的所有数
*/
select * from emp where empno in (7900,7901,7902)/* */
select e.empno,e.ename,e.sal,e.deptno,d.dname,d.loc from emp e inner join dept d on e.deptno = d.deptno
SELECT e.*,d.* from emp e,dept d where e.deptno = d.deptno