jdbc 之 mysql.docx

上传人:b****7 文档编号:9521762 上传时间:2023-02-05 格式:DOCX 页数:19 大小:109.19KB
下载 相关 举报
jdbc 之 mysql.docx_第1页
第1页 / 共19页
jdbc 之 mysql.docx_第2页
第2页 / 共19页
jdbc 之 mysql.docx_第3页
第3页 / 共19页
jdbc 之 mysql.docx_第4页
第4页 / 共19页
jdbc 之 mysql.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

jdbc 之 mysql.docx

《jdbc 之 mysql.docx》由会员分享,可在线阅读,更多相关《jdbc 之 mysql.docx(19页珍藏版)》请在冰豆网上搜索。

jdbc 之 mysql.docx

jdbc之mysql

◆mysql介绍

(1)mysql数据库是瑞典AB开发

(2)mysql->sun->oracle

(3)mysql数据库的特点

1.开源

2.免费

3.跨平台(windows/linux/unix/苹果)

4.处理并发性(13000个)/安全/稳定

5.该数据库轻(对资源要求不高.)安装文件37.7m,而且对cpu/内存要求不高.

◆安装和配置

1.一般说,一台机器装一个mysql.

2.安装和配置过程见mysql安装图解

◆mysql 使用

1.可以使用windowdos登录到mysql数据库.

基本语法

在dos下输入

mysql–u用户名-p密码

特别说明:

-p后面的密码不要有空格/使用该命令的时候,需要配置一下环境变量.

2.mysql数据库也提供图形化界面来登录mysql数据库

演示:

3.如何在mysql中创建数据库

基本语法

createdatabase数据库名

•创建一个名称为mydb1的数据库。

createdatabasemydb1;【sql】

•创建一个使用utf-8字符集的mydb2数据库。

createdatabasemydb2charactersetutf8

•创建一个使用utf-8字符集,并带校对规则的mydb3数据库

createdatabasemydb3charactersetutf8collateutf8_general_ci;

◆mysql的一些常用指令

①如何查看,创建数据库的指令:

showcreatedatabse数据库名;

②显示数据库

指令showdatabases;

③查看创建数据库的指令

showcreatedatabase数据名;

④删除数据库:

dropdatabase数据库名

⑤如何指定使用某个数据库

use数据库名;

⑥如何备份和恢复数据库.

mysqldump–u用户名–p密码数据名>存放路径

该指令,需要在dos控制台下直接执行

恢复数据库:

1.创建一个数据库mydb2,但是这个数据库目前是空.

2.use数据名

3.在mysql控制台下使用source备份文件路径

◆创建表

基本语法

createtable表名(

列名列的数据类型,

....

)characterset字符集名称collate校对规则

案例 :

创建一张用户表

createtableusers(

idint,

namevarchar(64),

pwdvarchar(64),

birthdaydate)

◆mysql数据类型(重点)

1数值型:

1.bit(m)m默认为1最大64

案例

createtabletest1(idbit

(1));---//这里显示乱码?

2.tinyint[unsigned]如果是有符号则表示-128到127,如果是无符号0-255

案例

createtabletest3(numtinyint)---128到127

createtabletest4(numtinyintunsigned)0---255

4.smallint

samllint是两个字节表示的.

带符号是负的2的15次方到2的15次方-1,无符号2的16方-1

其它的数值类型,见下图即可

6.float

FLOAT[(M,D)][UNSIGNED]是定长

m:

表示有效位

d:

表示小数点有几位

案例:

createtabletest5(numfloat);

createtabletest6(numfloat(5,1));

7.double

其用法和float类似,只是表示的范围更大,也是定长

8.numeric(m,d)

用于表示小数,或者整数

createtabletest7(numnumeric);//这样其实就是可以存放整数.

createtabletest8(numnumeric(5,2));//这样就可以表示有效为5,小数点有两位的数

2字串类型

一览图:

常用的有

(1)char(m)

m范围是0-255,定长.

char(20)如果你存放‘abc’字串,实际在表‘abc’;

案例:

createtabletest11(namechar(20));

☞小技巧:

mysql自带的client默认支持utf8码,所有我们在添加中文的时候,需要设置让client支持gbk

*showvariableslike‘char%’;//显示关于字符的设置参数

*setcharacter_set_client=gbk;//可以存中文

*setcharacter_set_results=gbk;//可以看中文

(2)varchar(m)

m表示大小,范围0-65535,变长

varchar(20)如果你存放‘abc’字串,实际在表‘abc’;

案例省略...

建议:

如果表的某列长度固定,比如产品编号..学号...而且在255内,我们应当使用char

如果长度不能取得,或者长度大于255小于65535则使用varchar

(3)text

该类型,可以表示更大的字串.

3日期类型

(1)date

日期(年-月-日)

createtabletest12(birthdaydate);

对于date只保存年-月-日

(2)datetime

日期时间类型

createtabletest13(hiredatedatetime);

(3)timestamp

邮戳:

该类型可以保存年-月-日:

时:

分:

它和datetime最大的区别是,当你update某条记录的时候,该列值,最自动更新

createtabletest14(namevarchar(64),salfloat,hiredate1timestamp,hiredate2datetime);

建议:

如果不知道该不该用timestamp,就不要用.

◆创建表综合案例

字段

属性

Id

整形

name

字符型

sex

字符型或bit型

brithday

日期型

Entry_date

日期型

job

字符型

Salary

小数型

resume

大文本型

createtableemp(

idint,

namevarchar(64),

sexchar

(2),

birthdaydate,

Entry_datedate,

jobvarchar(32),

salaryfloat,

resumetext)

◆修改表结构

--添加新的列

altertable表名add列名数据类型

--修改列(列的类型和大小)

altertable表名modify列名新的数据类型

--删除某列

altertable表名drop 列名

renametable原表名to新表名

altertable表名characterset字符集名;

altertableuserchangecolumnnameusernamevarchar(20);

案例:

•在上面员工表的基本上增加一个image列。

altertableempaddimageblob;

•修改job列,使其长度为60。

altertableempmodifyjobvarchar(60);

•删除sex列。

altertableempdropsex;

•表名改为user。

renametableemptouser;

•修改表的字符集为utf-8

altertableusercharactersetutf8;

•列名name修改为username

altertableuserchangecolumnnameusernamevarchar(30);

如何显示创建表的指令:

showcreatetable表名;

◆insert语句

基本语法:

insertinto表名[列名.....]values(值....);

●插入的数据应与字段的数据类型相同。

比如:

createtabletest15(namevarchar(64));

insertintotest15(name)values(‘aaa’);

insertintotest15(name)values(34);

createtabletest16(ageint);

insertintotest16(age)values(34);

insertintotest16(age)values(‘aaa’);(错)

insertintotest16(age)values(‘111’);(虽然ok,但是不是好的写法.)

●数据的大小应在列的规定范围内,例如:

不能将一个长度为80的字符串加入到长度为40的列中。

●在values中列出的数据位置必须与被加入的列的排列位置相对应。

createtabletest17(idint,namevarchar(64));

insertintotest17(id,name)values(3,’aaa’);

insertintotest17(name,id)values(’aaa’,3);

●字符和日期型数据应包含在单引号中。

●插入空值,不指定或insertintotablevalue(null)

◆update语法

基本语法:

update表名set列名=表达式...where条件

说明:

如果where后面没有条件,则相当于对整个表进行操作。

●UPDATE语法可以用新值更新原有表行中的各列。

●SET子句指示要修改哪些列和要给予哪些值。

●WHERE子句指定应更新哪些行。

如没有WHERE子句,则更新所有的行。

将所有员工薪水修改为5000元。

updateemployeesetsal=5000;

●将姓名为’zs’的员工薪水修改为3000元;

updateemployeesetsal=3000wherename=’zs’;

●将wu的薪水在原有基础上增加1000元

updateemployeesetsal=sa+1000wherename=’wu’;

◆delete语句

基本语法

delelefrom表名where条件;

注意:

●如果不使用where子句,将删除表中所有数据。

所有要小心使用.

●Delete语句不能删除某一列的值(可使用update)

●使用delete语句仅删除记录,不删除表本身。

如要删除表,使用droptable语句。

●同insert和update一样,从一个表中删除记录将引起其它表的参照完整性问题,在修改数据库数据时,头脑中应该始终不要忘记这个潜在的问题。

●删除表中数据也可使用TRUNCATETABLE语句,它和delete有所不同,参看mysql文档。

truncatetable表名,可以删除表的记录,速度快,但不能回滚..

在mysql中事务的特殊说明:

(1)mysql控制台是默认自动提交事务(dml)

(2)如果我们要在控制台使用事务,应该这样

●setautocommit=false;

●savepoint保存点

●//操作...

●rollbackto保存点.

◆select语句

基本语法

select列名....,列(可以运行)from表名where条件;

注意事项:

●Select指定查询哪些列的数据。

●column指定列名。

●*号代表查询所有列。

select*from表名;

●From指定查询哪张表。

●DISTINCT可选,指显示结果时,是否剔除重复数据

selectdistinct*from表名

●练习:

●查询表中所有学生的信息。

select*fromstudent;

●查询表中所有学生的姓名和对应的英语成绩。

selectname,englishfromstudent;

●过滤表中重复数据。

selectdistinct*from表名

●练习

●在所有学生分数上加10分特长分(即查询所有学生总分再加10分)。

selectenglish+math+chinese+10,namefromstudent;

●统计每个学生的总分。

●使用别名表示学生分数。

selectenglishas‘英语’,mathas数学,chinesefromstudent;

●使用where子句,进行过滤查询。

练习:

●查询姓名为wu的学生成绩

selectenglish,namefromstudentwherename=‘wu’;

●查询英语成绩大于90分的同学

select*fromstudentwhereenglish>90;

●查询总分大于200分的所有同学

select*fromstudentwhere(math+english+chinese)>200;

◆where子句如何使用

案例:

●查询英语分数在80-90之间的同学。

select*fromstudentwhereenglish>=80andenglish<=90;

●查询数学分数为89,90,91的同学

select*fromstudentwheremathin(89,90,91);

●查询所有姓李的学生成绩。

select*fromstudentwherenamelik‘李%’;

●查询数学分>80,语文分>80的同学。

select*fromstudentwherematn>80andchinese>80;

◆orderby子句

●练习:

●对数学成绩排序后输出。

selectname,mathfromstudentorderbymath;

●对总分排序后输出,然后再按从高到低的顺序输出

selectmath+english+chineseasallfen,namefromstudentorderbyallfen;

●对姓李的学生成绩排序输出

select(math+english+chinese)asallfen,namefromstudentwherenamelike‘李%’orderbyallfen;

◆count

◆练习:

●统计一个班级共有多少学生?

selectcount(*)fromstudent;

●统计数学成绩大于90的学生有多少个?

selectcount(*)fromstudentwheremath>90;

●统计总分大于250的人数有多少?

selectcount(*)fromstudentwhere(math+english+chinese)>250;

◆sum的用法

练习:

⏹统计一个班级数学总成绩?

selectsum(math)fromstudent;

⏹统计一个班级语文、英语、数学各科的总成绩

selectsum(math),sum(english),sum(chinese)fromstudent;

⏹统计一个班级语文、英语、数学的成绩总和

selectsum(math+english+chinese)fromstudent;

⏹统计一个班级语文成绩平均分

selectsum(chinese)/count(*)fromstudent;

◆avg的用法

◆练习:

⏹求一个班级数学平均分?

selectavg(math)fromstudent;

⏹求一个班级总分平均分

selectavg(math+english+chinese)fromstudent;

◆groupby用法

练习:

对订单表中商品归类后,显示每一类商品的总价

selectproduct,sum(price)fromordersgroupbyproduct;

◆having用法

练习:

查询购买了几类商品,并且每类总价大于100的商品

selectproduct,sum(price)fromordersgroupbyproducthavingsum(price)>100

◆日期和时间函数

CURRENT_DATE( )

当前日期

CURRENT_TIME( )

当前时间

CURRENT_TIMESTAMP()

当前时间戳

DATE(datetime)

返回datetime的日期部分

DATE_ADD(date2,INTERVALd_valued_type)

在date2中加上日期或时间

DATE_SUB(date2,INTERVALd_valued_type)

在date2上减去一个时间

DATEDIFF(date1,date2)

两个日期差(结果是天)

TIMEDIFF(date1,date2)

两个时间差(多少小时多少分钟多少秒)

NOW( )

当前时间

YEAR|Month|DATE(datetime)

年月日

案例:

selectcurrent_date()fromdual;得到当前日期

selectcurrent_time()fromdual;得到请求时间;

date_add()date_sub()的用法

说:

 有一个留言表

createtablemessage(idint,titlevarchar(64),publishdatedatetime);

请查询出,两个小时内,发布的消息:

select*frommessagewheredate_add(publishdate,interval2hour)>=now();

特别说明

date_add(日期/date/datetime/timestamp,interval数type)

type可以使用如下值:

字符函数:

,常用函数一览图:

CHARSET(str)

返回字串字符集

CONCAT(string2 [,...])

连接字串

INSTR(string,substring)

返回substring在string中出现的位置,没有返回0

UCASE(string2)

转换成大写

LCASE(string2)

转换成小写

LEFT(string2,length)

从string2中的左边起取length个字符

LENGTH(string)

string长度

REPLACE(str,search_str,replace_str)

在str中用replace_str替换search_str

STRCMP(string1,string2)

逐字符比较两字串大小,

SUBSTRING(str,position [,length])

从str的position开始,取length个字符

LTRIM(string2)RTRIM(string2)trim

去除前端空格或后端空格

把ename列的smiTh第一个字母大写,其它全部小写,怎么办?

selectUCASE(SUBSTRING(LCASE(‘smiTh’),1,1))fromdual;

//首先把‘smiTh’的首字母取出,转成大写

ucase(substring(‘smiTh’,1,1))

//把‘smiTh’去掉首字母后,余下的部分取出,//转成小写

lcase(substring(‘smiTh’,2,length(‘smiTh’)-1))

//最后拼接

select

concat(ucase(substring(‘smiTh’,1,1)),lcase(substring(‘smiTh’,2,length(‘smiTh’)-1)))fromdual;

结果:

selectconcat(lcase(substring('smiTh',1,1)),ucase(substring('smiTh',2,length('smiTh')-1)))fromdual;

◆数学函数

!

!

!

◆mysql的常见约束

1primarykey(主键)

特点:

主键是用于唯一标识一条记录的约束,一张表,最多只能有一个主键,主键不能为null,也不能重复

createtableuser1(idintprimarykey,namevarchar(32));

2auto_increment

可以自增长.

举例:

createtableuser2(idintprimarykeyauto_increment,namevarchar(32));

3unique(唯一)

特点:

表的某列的值,不能重复,可以为null(可以有多个null),一张表中可以有多个unique.

createtableuser4(idintunique,namevarchar(32));

4notnull(非空)

mysql的表的列,默认情况下可以为null,如果不允许某列为空,则可使用notnull说明

createtableuser5(idintprimarykey,namevarchar(32)notnull);

5外键foreignkey

从理论上说明,我们先建立主表,再建从表

--部门表

createtabledept(idintprimarykey,

namevarchar(64));

insertintodeptvalues(1,’财务部’);

--雇员表

createtableemp(idintprimarykey,

namevarchar(32),

deptidintreferencesdept(id));

上面的建立外键的写法是错误的。

应该这样.(表级定义)

createtableemp(idintprimarykey,

nam

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1