MySQL数据库-1
MySQl数据库简介
MySQL是一种关系数据库管理系统,是一种开源软件
由瑞典MySQL AB公司开发,2008年1月16号被Sun公司收购。2009年,SUN又被Oracle收购
MySQL软件采用双授权政策,分为社区版和商业版。由于体积小、速度快、总体拥有成本低,尤其是开放源码特点,一般中小型网站的开发都选择MySQL作为网站数据库。
由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。
MySQL能够工作在众多不同的平台上
端口:3306
默认用户:root
字符集:默认字符集latin1,应设置为gbk或utf-8
安装时可以启动远程登录、创建匿名账户 可安装图形化操作界面,方便操作
MySQL常用命令
连接MySQL
mysql -u root -p
查看当前所有数据库
show databases;
创建数据库
create database 数据库名;
使用(切换)数据库
user 数据库名;
查看当前数据库的所有表格
show tables;
退出
exit;
Oracle数据库基础知识-12
分页查询-rownum当一个表中的数据量特别大的时候,如果一次性全部显示给用户,则造成页面过于庞大,体验极差。使用分页查询可以大大改善
rownum关键字:oracle对外提供的自动给查询结果编号的关键字,与每行的数据没有关系。
注意:rownum关键字只能做< <=的判断,不能进行> >=的判断
实例
查询员工信息的前5条数据 第一页数据
select rownum r,e.* from emp e where rownum <=5;
select * from (select rownum r,e.* from emp e where rownum <=5) t where r>0;
查询员工信息的6-10条数据 第二页数据
select rownum,t.* from (select rownum r,e.* from emp e where rownum <=10) t where r>5;
查询员工信息的11-15条数据 第三页数据
select * from (select rownum r,e. * from emp ...
Oracle数据库基础知识-11
序列-sequence
按照指定的序列初始值,按步长进行增长。数值永不重复
默认没有初始值的,nextval的值默认从1开始,默认每次自增+1
可以使用 序列名.nextval坐为主键使用
创建:
create sequence 序列名
create sequence cnum;
序列名.currval查看当前序列的值。开始是没有的。
select cnum.currval from dual—获取当前序列值
序列名.nextval每次执行都会自增一次,默认步长为1
select cnum.nextval from dual—序列自增后返回当前值
create sequence cc–创建序列
start with 90—设定序列初始值
increment by 5—设定步长
maxvalue 10000—设置最大值
cache 10 —–设置缓存
insert into clazz values(cc.nextval,’402班级’,’强班’);
删除序列:drop sequence cc
索引-index
当表中数据量比较大的时候,使用条件查询就会出现效率的问题。使用索引 ...
Oracle数据库基础知识-10
主键约束-primary key
主键:它的值用于唯一地标识表中的某一条记录,且不能为空
创建:
在确定为主键的字段后添加
primary key关键字:create table student(snum number(10) primary key)
在创建表的后面使用
constraints pk_表名_字段名 primary key(字段名):create table student(snum number(10),constraints pk_student_snum primary key(sum))
在创建表后使用 alter table 表名 add constraints pk_表名_字段名 primary key(字段名)
alter table student add constraints pk_student_snum primary key(snum)
删除主键:alter table 表名 drop constraints pk_表名_字段名
alter table student drop constraints pk_student_snum–删除主 ...
Oracle数据库基础知识-9
数据库表的管理
表的创建
创建表的基本语句:create table 表名(字段名 类型,字段名 类型,字段名 类型….)
创建学生表:学号,姓名,性别,年龄,qq号,邮箱
create table student(snum number(10),—指定学号的数字长度为10sname varchar2(100),—指定姓名的存储上限为100个字节sex char(4),age number,qq number,sal number(6,2),–指定工资的整数位为6和小数位为2mail varchar2(50))
表的修改
添加新字段 alter table 表名 add 字段名 类型
alter table student add phone number(11)
修改字段类型 alter table 表名 modify 字段名 类型
alter table student modify sname varchar2(200)
删除字段 alter table 表名 drop column 字段名
alter table student drop column p ...
Oracle数据库基础知识-8
用户管理
当前用户介绍:权限级别的分配
system:系统账户
sys:超级管理员
scott:普通用户
创建自定义用户: create user 用户名 identified by 密码;
普通用户不具备创建用户的权限,需要使用system账户进行创建。直接创建好的用户不能登录,还需要使用system进行权限的分配(角色:一系列权限的集合)
create user zyp identified by 123456;
给创建的用户赋予角色:grant 角色名,角色名…to 用户名;
grant connect to zyp;–赋予链接库权限
grant resource to zyp;–赋予操作资源权限
grant dba to zyp;–赋予DBA角色
grant dba to zyp
删除用户权限
revoke dba from zyp–删除dba
revoke connect from zyp–删除连接库权限
删除用户
drop user zyp
Oracle数据库基础知识-7
单行子查询
单行子查询
select 内容 from 表名 where 子查询语句
什么时候使用单行子查询?
在不能直接获取有效信息的时候,考虑使用子查询
单行子查询的注意事项?
子查询的结果必须只有一个值
可以直接使用算术链接符
子查询出现在where中,一般出现在条件语句的右边
实例
查询所有比雇员“CLARK”工资高的员工信息
select * from emp where sal>(select sal from emp where ename=’CLARK’)
查询工资高于平均工资的员工的名字和工资
select * from emp where sal>(select avg(sal) from emp) order by sal
查询和soctt属于同一部门且工资比他低的员工资料
select * from emp where deptno=(select deptno from emp where ename=’SCOTT’) and sal<(select sal from emp where ename=’SCOTT’)
查询工资最高的员工 ...
Oracle数据库基础知识-6
sql99学习
笛卡尔积:一件事情的完成需要很多步骤,而不同的步骤有很多种方式,完成这件事情的所有方式称之为笛卡尔积
交叉连接(了解)-cross join
select * from emp cross join dept
查看两表或者多表的笛卡尔积
自然连接-natural join(inner join… on…)
自然链接会自动使用多表中所有相同字段(不但值相同,名字也要相同)进行筛选
前提:多表一定要有同名同值的字段
注意:自然连接会自动使用所有的相同字段进行结果筛选
使用using关键字可以指定字段进行链接查询,但是必须是同名字段 inner join
使用on关键字可以直接在其后书写链接条件,没有限制 inner join
问题:查询员工及员工所在的部门信息
问题1:假如在链接查询的时候不想使用所有相同字段进行筛选怎么办?
使用using关键字 select * from dept join emp using(deptno)
问题2:假如在链接查询中没有同名字段,但是有同值字段怎么筛选?
使用on关键字 select * ...
Oracle数据库基础知识-5
sql92学习
笛卡尔积:一件事情的完成需要很多步骤,而不同的步骤有很多种方式,完成这件事情的所有方式称之为笛卡尔积
select * from emp–14
select * from dept–7
select * from emp,dept order by ename–7*14=98
等值链接,链接条件。等值链接的时候字段的名字可以不相同,但是字段的值要相同。
查询员工姓名,工作,薪资,部门名称select * from emp,dept where emp.deptno=dept.deptno–使用等值链接进行结果筛选select ename,job,sal,dname from emp,dept where emp.deptno=dept.deptno;–使用等值链接查询指定字段数据
多表等值链接查询select ename,job,sal,emp.deptno,dname from emp,dept where emp.deptno=dept.deptno;–多表查询的时候,查看相同字段的值,必须声明所在表select emp.ename,emp.job,emp.s ...
Oracle数据库基础知识-4
插入数据-insert
语法规范 insert into 表名(字段1,字段2,字段3,….)values(‘值1’,’值2’,’值3’…..)
主键:用来唯一标识一条数据的字段通常设置主键,主键是唯一不可以重复的
如果插入的数据是全字段数据,字段可以省略不写。部分字段,必须加上字段说明和字段值,但是主键不能为空
事务:如果一个事件是由多个动作组成,只要有一个动作没有执行成功则自动将数据回滚到原始状态,此们技术称之为事务。保证数据的安全和完整。
事物的提交:使用第三放插件的提交按钮。使用commit语句
实例
在北京新建了一个名为LOL学院的新部门,请插入insert into dept(deptno,dname,loc)values(‘50’,’lol学院’,’北京’);
如果插入的数据是全字段数据,字段可以省略不写。部分字段,必须加上字段说明和字段值,但是主键不能为空insert into dept values(‘80’,’教学部’,’北京’);insert into dept values(‘90’,’教学部’,’北京’);insert into dept values ...