1、1会计学MySQL数据库的操作数据库的操作java 简单、免费、扩展性、相对成熟等一直都是简单、免费、扩展性、相对成熟等一直都是MySQL的吸引所在。的吸引所在。最具人气开源数据库,最具人气开源数据库,MySQL绝非浪得虚名绝非浪得虚名Apple,Google、Facebook、Twitter大量使用了大量使用了MySQL,直接点击直接点击“Next”,继续继续,选择选择安装类型安装类型 3个类型个类型:Typical、Complete、Custom。选择选择“自定义自定义”(Custom)安安装装,然后点然后点“Next”下一步下一步,出现出现自定义安自定义安装界面装界面 第四章第四章 My
2、SQL的操作的操作_安装安装 默认情况下默认情况下MySQL将会被安装到将会被安装到C:Program FilesMySQLMySQL Server 5.1文件夹里面。文件夹里面。自己可以改路径,点自己可以改路径,点“Change”更改路径更改路径。点点“OK”后回到后回到自定义安装自定义安装界面,可看界面,可看见路径已经改为见路径已经改为你设置的路径你设置的路径 点点“Next”,准备开始安准备开始安装装 第四章第四章 MySQL的操作的操作_安装安装 第四章第四章 MySQL的操作的操作_安装安装 填完信息后填完信息后,点点“Next”,然后出现预览你刚才填然后出现预览你刚才填的信息的界面
3、的信息的界面,再点再点“Next”出现出现安装完成界面安装完成界面 这里有个这里有个配置向导的选项配置向导的选项(Configure the MySQL Server now),),建议勾选立即配置你建议勾选立即配置你的的MySQL。点击点击“Finish”完成安装完成安装,并并开始配置开始配置MySQL 第四章第四章 MySQL的操作的操作_4.1安装安装 第四章第四章 MySQL的操作的操作_4.1安装安装 选选“Detailed configuration”进入服务类型选择页面。进入服务类型选择页面。选选“Developer Machine”(开发者机器开发者机器),这样占这样占用系统的
4、资源不会很多用系统的资源不会很多 进入进入数据库用法选择数据库用法选择页面。页面。选择选择“Multifunctional Database”进入选择进入选择InnoDB数据存放位置数据存放位置页面页面 不用更改设置不用更改设置,直接放在直接放在Installation Path安装目录安装目录里即可里即可选择选择MySQL的同时联接数的同时联接数 选择选择“Manual Setting”,设设置为置为100(自自己设置己设置)配置配置MySQL在在TCP/IP通讯环境中的通讯环境中的端口端口 选择默认的选择默认的3306端口即可。端口即可。选择选择MySQL中的字符设置中的字符设置 这里的选
5、择将这里的选择将会影响你是否能会影响你是否能在在MySQL中使中使用中文。用中文。选择选择gb2312字字符集以便支持简符集以便支持简体中文体中文,繁体中繁体中文选文选big5 设置设置Windows服务选项服务选项“Install As Windows Service”一定要一定要勾选勾选,这是将这是将MySQL作为作为Windows的服的服务运行。务运行。“Launch the MySQL Server automatically”一定要勾选一定要勾选,这样这样Windows启动时启动时,MySQL就会自动启动服务就会自动启动服务,要不要不然就要手工启动然就要手工启动MySQL。许多人说安
6、装。许多人说安装MySQL后后无法无法启动、无法连接、出现启动、无法连接、出现10061错误错误,原因就在这里。,原因就在这里。设置设置根帐号根帐号root的登录密码的登录密码“Modify Security Settings”是设置是设置根帐号的密码根帐号的密码,输入你设定的密码即可。输入你设定的密码即可。“Create An Anonymous Account”是创建一个是创建一个匿匿名帐号名帐号,这样会导致未经授权的用户非法访问你这样会导致未经授权的用户非法访问你的数据库的数据库,有安全隐患有安全隐患,建议不要勾选。建议不要勾选。点点“Execute”开始配置开始配置,当出现当出现“Se
7、rvice started successfully”时时,说明你的配置完成说明你的配置完成,MySQL服务启动成功服务启动成功 点点“Finish”完成完成,整个整个MySQL的配置完成。的配置完成。MySQL的启动和连接的启动和连接 一、一、查看并启动查看并启动MySQL服务。服务。安装完安装完MySQL后后,它就已经它就已经自动启动自动启动服务服务了了,并且在开始菜单中有其客户端的并且在开始菜单中有其客户端的快捷方式连接快捷方式连接 通过通过Windows的服务管理器的服务管理器查看。查看。“开始开始”“运行运行”,输入输入“services.msc”,回车。回车。弹出弹出Windows
8、的服务管理器的服务管理器,然后就然后就可以看见服务名为可以看见服务名为“mysql”服务项服务项,其右其右边标明边标明“已启动已启动”可以可以通过通过Windows的服务管理器的服务管理器查看。查看。“开始开始”“运行运行”,输入输入“services.msc”,回车回车。弹出弹出Windows的服务管理器的服务管理器,然后就可以看见服然后就可以看见服务名为务名为“mysql”服务项服务项,其右边标明其右边标明“已启动已启动”也可以通过也可以通过“控制面板控制面板”中的中的“管理工具管理工具”如果如果没有没有“已启动已启动”字样字样,说明说明MySQL服务服务未启动未启动,不能连接不能连接,会
9、出现会出现10061错误错误。然后输入然后输入“net start mysql”就启动就启动mysql服务。服务。停止停止mysql服务服务“net stop mysql”(注意注意,这里是输入的这里是输入的MySQL服务的名服务的名字。如果字。如果MySQL服务的名字是服务的名字是DB或其它或其它名字,应该输入名字,应该输入“net start DB”或其它名或其它名)启动启动MySQL服务服务方法一方法一:“开始开始”“运行运行”,输入输入“cmd”,回车,回车弹出弹出XP命令提示符界面。命令提示符界面。假如安装的时候取的服务名是假如安装的时候取的服务名是mysql,那,那么起停数据库服务
10、的命令是:么起停数据库服务的命令是:D:net stop mysqlThe MySQL service is stopping.The MySQL service was stopped successfully.D:net start mysqlThe MySQL service is starting.The MySQL service was started successfully.到到windows的服务管理里手工起停的服务管理里手工起停。启动启动MySQL服务服务方法二方法二:当直接敲入当直接敲入mysql的时候遇到如下错误,说的时候遇到如下错误,说明数据库服务还未启动:明数据库服
11、务还未启动:D:mysqlERROR 2003(HY000):Cant connect to MySQL server on localhost(10061)二、连接和退出二、连接和退出MySQL 格式:格式:mysql-h主机地址主机地址-u用户名用户名-p用户密码用户密码 1、连接到本机上的、连接到本机上的MYSQL。首先首先在打开在打开DOS窗口窗口,然后然后进入目录进入目录Crogram FilesMySQLMySQL Server 5.0bin(安装的时候如果已经把该目录设置到了环境安装的时候如果已经把该目录设置到了环境变量变量PATH里里,不用进入该目录不用进入该目录),再键入命令
12、再键入命令mysql-uroot p,回车后回车后提示你输密码提示你输密码,输入密码输入密码直接回车直接回车即可进入到即可进入到MYSQL中中,MYSQL的提示的提示符是:符是:mysqlWelcome to the MySQL monitor.Commands end with;or g.Your MySQL connection id is 1 to server version:5.1.45-ntType help;or h for help.Type c to mysql 这就说明这就说明连接连接MySQL成功成功,“mysql”说说明已经成功联入明已经成功联入MySQL服务器了,服务
13、器了,可以开始可以开始msql的操作的操作 2、连接到远程主机上的、连接到远程主机上的MYSQL。假设远程假设远程主机的主机的IP为:为:110.110.110.110,用户名为用户名为root,密码为密码为abcd123。则键入以下命令:则键入以下命令:D:mysql-h110.110.110.110-uroot-pabcd123 注:注:u与与root可以不用加空格,其它可以不用加空格,其它也一样。也一样。3、退出、退出MYSQL命令命令:D:exit(回车)(回车)或或D:quit(回车)(回车)你也可以用你也可以用control-D退出。退出。三、修改用户密码三、修改用户密码直接修改直
14、接修改user表的表的root用户口令:用户口令:mysql use mysql;-用名叫用名叫mysql的库作当前库的库作当前库Database changedmysql update user set password=password(1234)where user=root;Query OK,1 row affected(0.00 sec)Rows matched:1 Changed:1 Warnings:0mysql flush privileges;Query OK,0 rows affected(0.14 sec)注:注:flush privileges的意思是的意思是强制刷新内
15、存授权强制刷新内存授权表表,否则用的还是缓冲中的口令。否则用的还是缓冲中的口令。四、四、MYSQL 创建用户创建用户第一方法第一方法 grant 权限权限1,权限权限2,.权限权限n on 数据库名数据库名.表表名名 to 用户名用户名 identified by 连接口令连接口令;GRANT ALL PRIVILEGES ON test.student TO dysnwpu IDENTIFIED BY 123456 WITH GRANT OPTION;grant select on test.SC to dys1 identified by abc;例例1:例例2:第二方法第二方法 crea
16、te user 删除用户删除用户切换用户切换用户五、基本操作命令五、基本操作命令 注:注:如果你打命令时,回车后发现如果你打命令时,回车后发现忘记加忘记加分号分号,你无须重打一遍命令,只要打个分号回,你无须重打一遍命令,只要打个分号回车就可以了。也就是说你可以把一个完整的命车就可以了。也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就完令分成几行来打,完后用分号作结束标志就完成。可以使用光标上下键调出以前的命令。成。可以使用光标上下键调出以前的命令。mysql命令的大小写结果是一致的。命令的大小写结果是一致的。1、建库、建库 2、建表、建表*对数据库元素操作对数据库元素操作必须
17、先打开数据库必须先打开数据库*CREATE TABLE Student (Sno CHAR(9)PRIMARY KEY,Sname CHAR(20)UNIQUE,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20);*对数据库元素操作对数据库元素操作必须先打开数据库必须先打开数据库*2、建表、建表 CREATE TABLE Student (Sno CHAR(9)PRIMARY KEY,Sname CHAR(20)UNIQUE,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20);mysql show databases;3、显示数据
18、库列表:、显示数据库列表:mysql库很重要库很重要,它里面有,它里面有MYSQL的系统的系统信息,我们信息,我们改密改密码和新增用户码和新增用户,实际上就是用这实际上就是用这个库进行操作。个库进行操作。4、显示库中的数据表、显示库中的数据表 mysql use mysql;mysql show tables;4、显、显示库中示库中的数据的数据表表 5、显示数据表的结构:、显示数据表的结构:mysql desc student;原因原因:mysql数据库中没有数据库中没有student表,它存在于表,它存在于testdb库中库中6、显示表中的记录、显示表中的记录 mysql select*fr
19、om student;Empty set(0.00 sec)7、将表中记录清空、将表中记录清空 mysql delete from student;Query OK,0 rows affected(0.00 sec)8、删库和删表、删库和删表 mysql drop table student;Query OK,0 rows affected(0.11 sec)mysql drop database test;Query OK,0 rows affected(0.01 sec)六、建库、建表、改表以及插入数据六、建库、建表、改表以及插入数据 INSERT INTO Student VALUES(
20、20120101,宁俊宁俊,男男,20,IS,2012-10-01);INSERT INTO Student VALUES(20120102,张生岳张生岳,男男,21,MA,2012-10-01);INSERT INTO Student VALUES(20120103,刘阿俊刘阿俊,男男,19,IS,2012-10-01);INSERT INTO Student VALUES(20120104,岳春蕾岳春蕾,女女,18,CS,2012-10-01);INSERT INTO Student VALUES(20120105,郭姗姗郭姗姗,女女,19,IS,2012-10-01);INSERT IN
21、TO Student VALUES(20120106,张珊珊张珊珊,女女,18,IS,2012-10-01);INSERT INTO Student VALUES(20120107,臧珊臧珊,女女,18,IS,2012-10-01);INSERT INTO Student VALUES(20120108,田晓宇田晓宇,女女,18,MA,2012-10-01);INSERT INTO Student VALUES(20120101,宁俊宁俊,男男,20,IS,2012-10-01);建立一个建立一个“课程课程”表表Course CREATE TABLE Course(Cno CHAR(4)PRI
22、MARY KEY,Cname CHAR(40),Cpno CHAR(4),Ccredit SMALLINT);INSERT INTO Course VALUES(1,数据库数据库,5,3);INSERT INTO Course VALUES(2,数学分析数学分析,4);INSERT INTO Course VALUES(3,信息系统信息系统,1,2);INSERT INTO Course VALUES(4,VF,3,3);INSERT INTO Course VALUES(5,JAVA,2);CREATE TABLE SC(Sno CHAR(9),Cno CHAR(4),Grade SMALL
23、INT,CONSTRAINT SC_ibfk_1 FOREIGN KEY(Sno)REFERENCES Student(Sno),CONSTRAINT SC_ibfk_2 FOREIGN KEY(Cno)REFERENCES Course(Cno)ENGINE=InnoDB DEFAULT CHARSET=latin1;建立一个建立一个“选课选课”表表SC 1.两个表必须是两个表必须是 InnoDB表,表,MyISAM表表暂时不支持外码;暂时不支持外码;2.外外码码列必须建立了索引列必须建立了索引,MySQL 4.1.2以以后的版本在建立外后的版本在建立外码码时会自动创建索引时会自动创建索引
24、3.外外码码关系的两个表的列必须是关系的两个表的列必须是数据类型数据类型相似相似,也就是可以相互转换类型的列也就是可以相互转换类型的列,比如比如int和和tinyint可以可以,而而int和和char则不可以则不可以;外码的好处外码的好处:可以使得两张表关联,保:可以使得两张表关联,保证数据的一致性和实现一些级联操作;证数据的一致性和实现一些级联操作;外键的定义语法:外键的定义语法:CONSTRAINT symbol FOREIGN KEY id(index_col_name,.)REFERENCES tbl_name(index_col_name,.)ON DELETE RESTRICT|C
25、ASCADE|SET NULL|NO ACTION|SET DEFAULTON UPDATE RESTRICT|CASCADE|SET NULL|NO ACTION|SET DEFAULT 该语法可以在该语法可以在 CREATE TABLE 和和 ALTER TABLE 时使用,时使用,如果不指定如果不指定CONSTRAINT symbol,MYSQL会自动生成一个名字。会自动生成一个名字。ON DELETE、ON UPDATE表示事件触发表示事件触发限制,可设参数:限制,可设参数:RESTRICT(限制外表中的外键改动)(限制外表中的外键改动)CASCADE(跟随外键改动)(跟随外键改动)S
26、ET NULL(设空值)(设空值)SET DEFAULT(设默认值)(设默认值)NO ACTION(无动作,默认的)(无动作,默认的)INSERT INTO SC VALUES(20120101,2,55);INSERT INTO SC VALUES(20120101,1,75);INSERT INTO SC VALUES(20120102,3,85);INSERT INTO SC VALUES(20120102,1,45);INSERT INTO SC VALUES(20120102,4,75);INSERT INTO SC VALUES(20120103,5,95);INSERT INTO
27、 SC VALUES(20120103,2,95);INSERT INTO SC VALUES(20120104,2,75);INSERT INTO SC VALUES(20120104,4,79);INSERT INTO SC VALUES(20120105,2,85);INSERT INTO SC VALUES(20120106,1,85);INSERT INTO SC VALUES(20120107,2,95);INSERT INTO SC VALUES(20120108,3,78);INSERT INTO SC VALUES(20120105,4,95);INSERT INTO SC
28、VALUES(20120108,2,96);为学生为学生-课程数据库中课程数据库中Student,Course,SC三三个表建立索引。个表建立索引。CREATE UNIQUE INDEX Stusno ON Student(Sno);CREATE UNIQUE INDEX Coucno ON Course(Cno);CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);单单表表查查询询MySQL查询操作查询操作(举例举例)SELECT Sno,Sname,SsexFROM Student;单单表表查查询询MySQL查询操作查询操作(举例举例)SELE
29、CT Sname,2014-SageFROM Student;单单表表查查询询MySQL查询操作查询操作(举例举例)SELECT Sno FROM SC;SELECT DISTINCT Sno FROM SC;单单表表查查询询MySQL查询操作查询操作(举例举例)SELECT Sno,SnameFROM StudentWHERE Sdept=CS;单单表表查查询询MySQL查询操作查询操作(举例举例)SELECT Sno,Sname,SsexFROM StudentWHERE Sage20;单单表表查查询询MySQL查询操作查询操作(举例举例)SELECT SnameFROM StudentW
30、HERE Sdept=IS AND Sage2;SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,GradeFROM Student,SCWHERE Student.Sno=SC.Sno;MySQL查询操作查询操作(连接查询连接查询)SELECT Sno,Sname,SdeptFROM Student S1WHERE S1.Sdept IN (SELECT Sdept FROM Student S2 WHERE S2.Sname=宁俊宁俊);SELECT Sno,Sname,SdeptFROM Student S1WHERE S1.Sdept =(SEL
31、ECT Sdept FROM Student S2 WHERE S2.Sname=宁俊宁俊);或者或者SELECT Student.Sno,Sname FROM Student,SC,Course WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno AND Course.Cname=数据库数据库;SELECT DISTINCT student.Sno,Sname FROM SC,student WHERE Grade60;结果结果=?对吗?对吗?为什么?为什么?SELECT DISTINCT student.Sno,Sname FROM SC,stud
32、ent WHERE Grade desc student;为学生为学生-课程数据库中课程数据库中Student,Course,SC三三个表建立索引。个表建立索引。CREATE UNIQUE INDEX Stusno ON Student(Sno);CREATE UNIQUE INDEX Coucno ON Course(Cno);CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*)2;视图操作视图操作CREATE VIEW IS_S1(Sno,Sname,Grade)AS SELECT Student.Sno,Sname,Grade FROM Student,SC WHERE Sdept=IS AND Student.Sno=SC.Sno AND SC.Cno=1;