MysqlOracle(甲骨文) 大型数据库MySql 中小型数据库DB2SqlServer.....Mysql的发展:瑞典的Mysql AB公司2008年Sun公司(JAVA)2009年Oracle 收购sun公司IBM 69亿美元sun Eclipse(日蚀)Oracle 74亿美元sunMysql的简单使用:1.登陆mysql数据库win+r --->cmdmysql -uroot -p1234修改密码:mysql> set password for rootlocalhost = password('1234');此处可能存在异常情况原因:a、未配置环境变量b、Mysql服务未开启(net start mysql)2.对库的操作a.查看所有的库show databases;系统自带库:information_schema mysql testb.创建库create database day01;(不指定编码,跟随数据库系统编码)create database db1default character set gbk;(指定编码)查看创建库的语句:show create database 库名.修改库的编码:alter database day01default character set utf8;c.删除库drop database 库名.drop database day01;注意:系统自带的三个库不能删除.d.使用库use db1;3.对表的操作表:二维关系表有行有列的关系表.记录:表中的一行数据.字段:表中的一列.常用的字段类型:字符串类型: varchar(长度) 、char数值类型: int(整数) float double(小数)日期类型: datea.创建表员工表:员工号性别年龄职位薪水入职日期create table emp(empno varchar(4),name varchar(30),sex varchar(5),age int(3),job varchar(30),salary int(5),hiredate date);b.查看所有的表show tables;c.查看建表语句show create table 表名.d.查看表结构desc 表名.e.往表中插入数据e1.给表中所有的字段插入数据insert into emp(empno,name,sex,age,job,salary,hiredate)values('1001','zhangsan','m',22,'developer',10000,'2015-12-21');简写形式:insert into emp values('1002','lisi','m',23,'test',8000,'2015-10-10');e2.给表中部分字段插入数据insert into emp(empno,name,sex,age) values('1003','cuihua','w',18);解决插入中文问题:(eclipse中的设置)Connection URL:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk 插入中文:insert into emp values('1005','莫小贝','女',12,'武林盟主',20000,'2015-12-12');f.删除数据delete from emp ;-->删除表中所有数据delete from emp where empno=1004;MyEclipse配置Mysql连接:1.切换到数据库界面.2.在DBBroswer中右键选择new3.配置连接:Driver Template: MySQL Connector/JDriver name: 随便起名字Connection URL: jdbc:mysql://localhost:3306/test本机:localhost127.0.0.l192.168.4.223User name:rootpassword:1234Driver JARs: mysql-connector-java-5.17-bin.jarMysql常见的错误1.Can't create database 'xxx'; database exists不能创建xxx库,因为已经存在2.Can't drop database 'xxx'; database doesn't exist不能删除xxx库,因为已经不存在-- 创建库create database search default character set gbk ;-- 使用库use search;-- 创建表-- 员工信息表create table emp(empno int(4), -- 员工编号ename varchar(30), -- 员工job varchar(30), -- 职位salary int , -- 工资bonus int, -- 奖金age int(3), -- 年龄sex varchar(1), -- 性别hiredate date, -- 入职日期manager int(4), -- 领导编号deptno int -- 部门编号);-- 部门表:create table dept(deptno int, -- 部门编号dname varchar(50),-- 部门名称loc varchar(80) -- 部门位置);-- 往emp表中插入数据null 空:没有不存在insert into emp(empno,ename,job,salary,bonus,age,sex,hiredate,manager,deptno) values(1001,'三丰','老板',20000,100,30,'m','2009-02-02',null,10);insert into emp values(1002,'无忌','程序猿',12000,200,20,'m','2010-03-02',1001,10); insert into emp values(1003,'小龙女','程序猿',10000,300,18,'f','2012-12-02',1001,10); insert into emp values(1004,'过','程序猿',10000,200,22,'m','2012-12-22',1003,10); insert into emp values(1005,'黄蓉','攻城师',15000,100,25,'f','2012-12-28',1001,20); insert into emp values(1006,'郭靖','攻城师',13000,100,28,'m','2013-12-02',1005,20); insert into emp values(1007,'莫愁','秘书',8000,50,22,'f','2013-03-02',1001,30);insert into emp values(1008,'韦小宝','实施',8500,null,29,'m','2013-04-02',1001,30); insert into emp values(1009,'陆无双','实施',6000,100,26,'m','2014-12-12',1001,30); insert into emp values(1010,'黄飞鸿','打手',5000,100,20,'m','2015-03-02',1001,null);-- 给dept表插入数据insert into dept values(10,'研发部','');insert into dept values(20,'运维部','');insert into dept values(30,'实施部','');-- 查询use search ;-- 1.查询emp表中的所有数据select * from emp ;-- * 通配符通配了emp表中的所有列。
select empno,ename,job,salary,bonus,age,hiredate,sex ,manager,deptno from emp ;-- select(选择,筛选..) from(从...地方)-- 执行顺序: from -->select-- 2.查询emp表中员工名字以及员工的薪水select ename,salary from emp ;-- 查询部分字段: select 字段名1,字段名2.... from 表;-- 3.查询薪水大于10000的员工.-- 查什么员工--->ename --->empno --->salary-- 查询条件是什么salary >10000select empno,ename,salaryfrom emp where salary>10000;-- select from where-- 执行顺序: from --> where -->select-- 4.查询薪水大于等于10000并且小于等于18000的员工-- 查什么empno ename salary-- 查询的条件是什么10000=<salary<=18000(数学中的写法) -- salary >=10000 and && salary <=18000select empno,ename,salary from empwhere salary >=10000 and salary <=18000;-- between and:在...之间.select empno ,ename, salary from empwhere salary between 10000 and 18000;select * from emp ;-- 5.查询薪水是10000或者12000的员工.select empno,ename,salary from empwhere salary =10000 or salary =12000;-- in(10000,12000);select empno ,ename,salary from empwhere salary in(10000,12000);-- 6.查询职位是程序猿或者是攻城师并且薪水在10000 到-- 20000之间,并且性别是男的员工-- 查什么empno ename job salary sex-- 查询的条件是什么-- a.职位是程序猿或者是攻城师job in('程序猿','攻城师')-- b.薪水在10000到20000之间salary between 10000 and 20000 -- c.性别是男sex='m'-- a and b and cselect empno ,ename,job, salary ,sex from empwhere job in('程序猿','攻城师') andsalary between 10000 and 20000 andsex = 'm';-- 错误演示select empno ,ename,job, salary ,sex from empwhere job='程序猿' or job='攻城师' andsalary between 10000 and 20000 andsex = 'm';select empno ,ename,job, salary ,sex from empwhere job='攻城师' or job='程序猿' andsalary between 10000 and 20000 andsex = 'm';-- 7.查询奖金为null的员工select ename ,bonus from emp where bonus = null;select * from emp ;-- null: 空没有不存在-- 和null做比较不能使用= > <.. 要使用isselect ename,bonus from empwhere bonus is null ;-- 8.查询奖金不是null的员工select ename ,bonus from empwhere bonus is not null ;-- 9.查询所有员工的年薪12*(salary+bonus)select ename, 12*(salary+bonus) from emp;-- 与null做运算,结果都为null-- 空值处理函数: ifnull()-- ifnull(bonus,0):-- 如果bonus为null,则处理成0-- 如果bonus不为null,则不处理.按照bonus实际的值运算.select ename,12*(salary+ifnull(bonus,0))from emp ;-- 函数: 单行函数组函数(聚合函数)-- 单行函数: 单行函数会对表中的每一条记录进行操作-- 并且每一条记录都会产生一个结果.-- now(): 查询当前时间select now() from emp ;-- 10.查询2012年入职的员工2012-01-01 2012-12-31select ename ,hiredate from empwhere hiredate between '2012-01-01'and '2012-12-31';-- year(date):提取日期中的年份-- year(2012-12-12)--->2012select ename,hiredate from empwhere year(hiredate) = 2012;-- 11.查询员工的工作年限select ename, year(now())-year(hiredate) from emp ;-- 12.查询实现如下结果: 我是xxx,我的职位是xxx-- concat('我是',ename,',我的职位是',job ); 连接函数.将给定的字段连接成字符串。