MySQL练习指导.docx

上传人:b****4 文档编号:24279004 上传时间:2023-05-26 格式:DOCX 页数:27 大小:2.15MB
下载 相关 举报
MySQL练习指导.docx_第1页
第1页 / 共27页
MySQL练习指导.docx_第2页
第2页 / 共27页
MySQL练习指导.docx_第3页
第3页 / 共27页
MySQL练习指导.docx_第4页
第4页 / 共27页
MySQL练习指导.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

MySQL练习指导.docx

《MySQL练习指导.docx》由会员分享,可在线阅读,更多相关《MySQL练习指导.docx(27页珍藏版)》请在冰豆网上搜索。

MySQL练习指导.docx

MySQL练习指导

MySQL数据库上机实验

目录

1.Linux下MySQL的安装3

a.Linux下MySQL的二进制安装3

b.Linux下MySQL的源码安装5

2.Windows下MySQL的安装9

3.MySQL的命令练习10

4.MySQLCAPI的应用练习21

5.综合练习25

a.利用API编写代码,实现小组表的创建、插入和查询25

b.带图形界面的查询与显示25

c.拓展实验作业25

1.Linux下MySQL的安装

Linux下MySQL的安装:

熟悉MySQL在Linux下的二进制安装和源码安装过程。

掌握相关Linux安装命令及参数的使用。

a.Linux下MySQL的二进制安装

∙将MySQL的RPM安装包放在/root目录下

∙执行MySQL服务端的RPM安装,在终端输入:

#rpm–ivhMySQL-server-5.0.92-1.i386.rpm

∙安装成功,启动MySQL服务端

∙查看MySQL服务端端口号(为3306),在终端输入:

#netstat–nat

∙执行MySQL客户端的RPM安装,在终端输入:

#rpm–ivhMySQL-client-5.0.92-1.i386.rpm

∙进行登录,在终端输入:

#mysql

b.Linux下MySQL的源码安装

∙将源码安装文件放置于/root目录下

∙解压缩源码安装文件

∙执行配置,设置参数,在终端输入:

#cdmysql-5.0.18

#./configure--prefix=/usr/local/mysql--sysconfdir=/etc--localstatedir=/var/lib/mysql

∙配置完成

∙执行编译,在终端输入:

#make

∙编译完成

∙执行安装,在终端输入:

#makeinstall

∙安装完毕

∙初始化数据库,在终端输入:

#cd/usr/local/mysql/bin

#./mysql_install_db

∙拷贝文件/root/mysql-5.0.18/supportfiles/mysql.server文件到目录/etc/rc.d/init.d

∙将mysql_server文件更名为mysqld

∙切换目录,更改mysqld权限,在终端输入:

#cd/etc/rc.d/init.d

#chmod777mysqld

∙启动mysqld,在终端输入:

#/etc/rc.d/init.d/mysqldstart

∙最后到安装目录下运行MySQL,检查其是否能够工作:

#/usr/local/mysql/bin/mysql–uroot

∙(可选)为了快速启动和关闭MySQL服务端,可以在root下创建两个Shell文件mysqlstart.sh和mysqlstop.sh。

在终端输入:

#cd/root

#vimysqlstart.sh(同理vimysqlstop.sh)

打开vi,编辑该文件,写入/etc/rc.d/init.d/mysqldstart(stop)

生成mysqlstart.sh(mysqlstop.sh)文件。

启动MySQL只需在终端输入:

#mysqlstart.sh

2.Windows下MySQL的安装

∙Windows下熟MySQL的安装:

熟悉MySQL在Windows下的安装过程,了解MySQLGUITools的安装和使用按照书上的步骤进行操作。

3.MySQL的命令练习

∙确保连接上MySQL服务器,执行查询语句,输入:

SELECTVERSION(),CURRENT_DATE;

∙通过一个简单查询语句,将mysql用作一个简单的计算器:

SELECTSIN(PI()/4),(4+1)*5;

∙使用SHOW语句找出服务器上当前存在什么数据库:

SHOWDATABASES;

∙如果test数据库存在,尝试访问它:

USEtest

∙如果管理员在设置权限时为创建了数据库“menagerie”,则可以开始使用它。

否则,需要自己创建数据库:

CREATEDATABASEmenagerie;

∙创建数据库并不表示选定并使用它。

为了使menagerie成为当前的数据库,使用下面命令:

USEmenagerie

∙数据库只需要创建一次,但是必须在每次启动mysql会话时在使用前先选择它。

可以根据上面的例子执行一个USE语句来实现。

还可以在调用mysql时,通过命sp令行选择数据库,只需要在提供连接参数之后指定数据库名称。

例如:

mysql-uroot-pmenagerie

∙创建数据库是空的:

SHOWtables;

∙创建一个名为“pet”的表,并且它应该包含名字(name)、主人(owner)、种类(species),性别(sex)、出生(birth)和死亡日期(death)。

使用一个CREATETABLE语句指定你的数据库表的布局:

CREATETABLEpet(nameVARCHAR(20),ownerVARCHAR(20),speciesVARCHAR(20),sexCHAR

(1),birthDATE,deathDATE);

∙创建了“pet”表后,SHOWTABLES应该产生一些输出:

SHOWtables;

∙为了验证“pet”表是否按照期望的方式创建,使用一个DESCRIBE语句查看表的结构:

DESCRIBEpet;

∙创建表后,需要填入内容。

通过LOADDATA和INSERT语句可以完成该任务。

name

owner

species

sex

birth

death

Fluffy

Harold

cat

f

1993-02-04

Claws

Gwen

cat

m

1994-03-17

Buffy

Harold

dog

f

1989-05-13

Fang

Benny

dog

m

1990-08-27

Bowser

Diane

dog

m

1979-08-31

1995-07-29

Chirpy

Gwen

bird

f

1998-09-11

Whistler

Gwen

bird

1997-12-09

Slim

Benny

snake

m

1996-04-29

创建一个文本文件“pet.txt”,每行包含一个记录,用定位符(tab)把值分开,并且以CREATETABLE语句中列出的列次序给出。

将“pet.txt”放置在Linux目录/usr/local/mysql/bin/下,将文本文件“pet.txt”装载到pet表中,可使用命令:

注:

“pet.txt”文件已经提供,只需拷贝使用。

LOADDATAINFILE'/usr/local/mysql/bin/pet.txt'INTOTABLEpet;

∙如果想要一次增加一个新记录,可以使用INSERT语句。

最简单的形式是,提供每一列的值,其顺序与CREATETABLE语句中列的顺序相同,可以使用下面的INSERT语句添加一条新记录:

INSERTINTOpetVALUES('Puffball','Diane','hamster','f','1993-03-30',NULL);

∙SELECT最简单的形式是从一个表中检索所有记录:

SELECT*FROMpet;

∙如果发现Bowser的生日不对。

发现其正确的出生年是1989,而不是1979。

可以用一个UPDATE语句仅修正错误记录:

UPDATEpetSETbirth='1989-08-31'WHEREname='Bowser';

∙可以从表中只选择特定的行。

例如,如果要验证对Bowser的生日所做的更改,按下述方法选择Bowser的记录:

SELECT*FROMpetWHEREname='Bowser';

∙可以在任何列上指定条件。

例如查询哪个动物在1998以后出生的,测试birth列:

SELECT*FROMpetWHEREbirth>'1998-1-1';

∙可以组合条件,例如,找出雌性的狗:

SELECT*FROMpetWHEREspecies='dog'ANDsex='f';

∙也可以使用OR操作符进行组合条件查询:

SELECT*FROMpetWHEREspecies='snake'ORspecies='bird';

∙AND和OR可以混用,但AND比OR具有更高的优先级。

例如选出公猫或者母狗:

SELECT*FROMpetWHERE(species='cat'ANDsex='m')OR(species='dog'ANDsex='f');

∙选择特殊列,如果查询表中的所有行,就列出查询的列,用逗号分开。

例如,查询动物什么时候出生的,选择name和birth列:

SELECTname,birthFROMpet;

∙找出谁拥有宠物,使用这个查询:

SELECTownerFROMpet;

∙上述查询只是简单地检索每个记录的owner列,增加关键字DISTINCT检索出每个唯一的输出记录:

SELECTDISTINCTownerFROMpet;

∙可以使用一个WHERE子句结合行选择与列选择。

例如,查询狗和猫的出生日期:

SELECTname,species,birthFROMpetWHEREspecies='dog'ORspecies='cat';

4.MySQLCAPI的应用练习

∙已经安装mysql,创建一个名为“LQS”的数据库,执行:

CreateDatabaseLQS;

∙使用数据库:

USELQS

∙给LQS数据库下创建一个名为“students”的表,并添加相应的组员记录:

CREATEtablestudents(idint(3)notnullprimarykey,namechar(10)notnull,ageint(3),sexchar(3),birthdate,othervarchar(50));

Insertintostudents(id,name,age,sex,birth)values(1,'Lily',20,'F','1988-01-01'),(2,'Bob',22,'M','1986-01-03'),(3,'Anny',21,'F','1985-01-05'),(4,'Lucy',21,'F','1984-11-05'),(5,'Tom',19,'M','1989-02-25');

∙编译执行MySQL_test.c文件,使用API进行mysql语句的查询。

∙MySQL_test.c:

#include

#include

#include

staticGtkWidget*entry1;

staticGtkWidget*entry2;

voidPrintAndExit(GtkWidget*widget,GtkWidget*window){

MYSQL*mysql;

MYSQL_RES*mysql_res;

MYSQL_ROWmysql_row;

charquery[256];

introws;

intcount;

if(!

(mysql=mysql_init(NULL))){

printf("mysql_initwrong!

");

mysql_close(mysql);

exit(0);

}

if(!

mysql_real_connect(mysql,"localhost",gtk_entry_get_text(GTK_ENTRY(entry1)),gtk_entry_get_text(GTK_ENTRY(entry2)),"LQS",0,NULL,0)){

printf("connectwrong!

");

mysql_close(mysql);

exit(0);

}

strcpy(query,"select*fromstudents");

if(mysql_query(mysql,query)){

printf("mysql_querywrong!

");

mysql_close(mysql);

exit(0);

}

mysql_res=mysql_store_result(mysql);

rows=mysql_num_rows(mysql_res);

if(rows==0){

printf("returnnull");

mysql_free_result(mysql_res);

mysql_close(mysql);

exit(0);

}

for(count=0;count

mysql_row=mysql_fetch_row(mysql_res);

printf("name:

%s",mysql_row[1]);

printf("age:

%s",mysql_row[2]);

printf("birth:

%s\n",mysql_row[4]);

}

mysql_free_result(mysql_res);

mysql_close(mysql);

gtk_widget_destroy(window);

gtk_main_quit();

}

voidPrintByeAndExit(GtkWidget*widget,gpointerdata){

printf("goodbyeworld!

\n");

gtk_exit(0);

}

intmain(intargc,char*argv[]){

GtkWidget*window,*label1,*label2,*vbox,*hbox1,*hbox2,*button,*separator;

gtk_set_locale();

gtk_init(&argc,&argv);

window=gtk_window_new(GTK_WINDOW_TOPLEVEL);

gtk_window_set_policy(GTK_WINDOW(window),FALSE,FALSE,FALSE);

gtk_signal_connect(GTK_OBJECT(window),"destroy",GTK_SIGNAL_FUNC(PrintByeAndExit),NULL);

gtk_window_set_title(GTK_WINDOW(window),"Mysqltest");

gtk_container_border_width(GTK_CONTAINER(window),0);

vbox=gtk_vbox_new(FALSE,0);

gtk_container_add(GTK_CONTAINER(window),vbox);

hbox1=gtk_hbox_new(FALSE,0);

gtk_box_pack_start(GTK_BOX(vbox),hbox1,FALSE,FALSE,0);

label1=gtk_label_new("username:

");

gtk_box_pack_start(GTK_BOX(hbox1),label1,FALSE,FALSE,0);

entry1=gtk_entry_new();

gtk_entry_set_text(GTK_ENTRY(entry1),"");

gtk_editable_select_region(GTK_EDITABLE(entry1),0,-1);

gtk_box_pack_start(GTK_BOX(hbox1),entry1,FALSE,FALSE,0);

hbox2=gtk_hbox_new(FALSE,0);

gtk_box_pack_start(GTK_BOX(vbox),hbox2,FALSE,FALSE,0);

label2=gtk_label_new("password:

");

gtk_box_pack_start(GTK_BOX(hbox2),label2,FALSE,FALSE,0);

entry2=gtk_entry_new();

gtk_entry_set_text(GTK_ENTRY(entry2),"");

//

gtk_box_pack_start(GTK_BOX(hbox2),entry2,FALSE,FALSE,0);

separator=gtk_hseparator_new();

gtk_box_pack_start(GTK_BOX(vbox),separator,FALSE,FALSE,0);

button=gtk_button_new_with_label("Connect");

gtk_signal_connect_object(GTK_OBJECT(button),"clicked",GTK_SIGNAL_FUNC(PrintAndExit),GTK_OBJECT(window));

gtk_box_pack_start(GTK_BOX(vbox),button,FALSE,FALSE,0);

GTK_WIDGET_SET_FLAGS(button,GTK_CAN_DEFAULT);

gtk_widget_show_all(window);

gtk_main();

return(0);

}

∙将MySQL_test.c文件放置于root目录下。

∙然后编译连接库文件头文件,生成目标文件:

#gcc-Wall-gMySQL_test.c-oMySQL_test`pkg-config--cflags--libsgtk+-2.0`-I/usr/local/mysql/include/mysql-L/usr/local/mysql/lib/mysql–lmysqlclient

∙运行程序:

#./MySQL_test

5.综合练习

a.利用API编写代码,实现小组表的创建、插入和查询

∙使用MySQLCAPI编写代码实现表创建和插入,根据自己所在小组的组员信息创建小组表“group”,字段名可以参考students表:

∙用gcc编译并运行代码

∙显示查询的结果

∙提交相关的代码和运行结果截图

b.带图形界面的查询与显示

∙结合GTK建立图形用户界面,利用MySQLCAPI进行应用开发,建立班级通信录,并能够在图形界面上进行相关主题的查询、学生的添加和删除、学生信息的浏览和相关数据统计。

∙用gcc编译并运行代码

∙在eclipse中编译、执行并调试代码

∙提交相关的代码和运行结果截图

c.拓展实验作业

(1)查阅相关资料,搭建LAMP(Linux+Apache+Mysql+PHP)平台。

(2)查阅相关资料,通过编程实现SQL注入。

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

当前位置:首页 > 工程科技 > 冶金矿山地质

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

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