帮忙做一个MySQL数据库操作的作业

如果帮我做好大号给你200分... 如果帮我做好 大号给你200分 展开
 我来答
匿名用户
2013-08-13
展开全部
一、数据库操作示例:
1、创建数据库和表
drop database if exists mysqlDB;
create database mysqlDB;
use mysqlDB;
create table dept
(
deptno int primary key auto_increment,
dname varchar(14) unique not null,
loc varchar(10)
)ENGINE = innodb CHARSET=gbk;create table emp
(
empno int primary key auto_increment,
ename varchar(10) unique,
job varchar(9) not null,
mgr int,
hiredate datetime,
sal float(7,2) not null,
comm float(7,2),
deptno int,
index par_ind (deptno),
foreign key(deptno) references dept(deptno)
)ENGINE = innodb CHARSET=gbk;2、插入数据:(中文乱码:MY.INI文件)
insert into dept(dname,loc) values ('财务部','美国'),('业务部','中国');
insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values
(1001,'小明','员工',1002,now(),1200,200,1),
(1002,'苍天','主管',1002,now(),1500,500,1),
(1003,'大地','经理',1002,now(),1800,1000,2),
(1004,'无声','文秘',1002,now(),1200,200,2);
或:
insert into tablename(list....)
select <list...> from tablename3、MYSQL脚本批处理执行:
将以上命令写入一个文本文件中,假设为DBscript.sql,命令行下执行:
mysql -u root -p密码 < c:/DBscript.sql;
或者进入命令行后使用
mysql> source c:/DBscript.sql; 。4、批量导入数据:
下列数据分别是dept、emp表的内容,复制到相应文件中,每列用TAB键空开,
dept:
1 ACCOUNTING NEW YORK
2 RESEARCH DALLAS
3 SALES CHICAGO
4 OPERATIONS BOSTON
emp:
7369 SMITH CLERK 7902 1980-12-17 900.00 2
7521 WARD SALESMAN 7698 1981-2-22 1350.00 500.00 3
7566 JONES MANAGER 7839 1981-4-2 3075.00 2
7654 MARTIN SALESMAN 7698 1981-9-28 1350.00 1400.00 3
7698 BLAKE MANAGER 7839 1981-5-1 2950.00 3
7782 CLARK MANAGER 7839 1981-6-9 2550.00 1
7788 SCOTT ANALYST 7566 1987-4-19 3100.00 2
7839 KING PRESIDENT 1981-11-17 5100.00 1
7844 TURNER SALESMAN 7698 1981-9-8 1600.00 0.00 3
7876 ADAMS CLERK 7788 1987-5-23 1200.00 2
7900 JAMES CLERK 7698 1981-12-3 1050.00 3
7902 FORD ANALYST 7566 1981-12-3 3100.00 2
7934 MILLER CLERK 7782 1982-1-23 1400.00 1 加载数据:LOAD DATA LOCAL INFILE 'f:/dept.txt' INTO TABLE dept;
5、复制表/结构
create table new_contents select * from emp ;
create table new_contents_struct select * from emp where 0=1;6、查询
SELECT ename, sal, deptno FROM emp WHERE sal BETWEEN 1000 AND 1500;
SELECT ename, sal, deptno FROM emp WHERE sal NOT BETWEEN 1000 AND 1500; SELECT ename, sal, deptno FROM emp WHERE EMPNO IN(7521,7654,7844);
SELECT ename, sal, deptno FROM emp WHERE EMPNO NOT IN(7521,7654,7844);

SELECT ename, sal, deptno FROM emp WHERE ename like '%a%'; SELECT ename, sal, deptno FROM emp WHERE mgr is null; SELECT ename, sal, deptno FROM emp limit 3,6;7、连接查询
SELECT dept.dname,emp.ename
FROM dept INNER JOIN emp
ON dept.deptno=emp.deptno
WHERE dept.dname='sales'; SELECT dept.dname,emp.ename
FROM dept,emp
WHERE dept.deptno=emp.deptno; SELECT dept.dname,emp.ename
FROM dept RIGHT JOIN emp
ON dept.deptno=emp.deptno;
8、子查询
select ename from emp where deptno=
(select deptno from dept where dname='sales');
9、事务控制10、存储过程
a:
mysql>delimiter //
mysql>create procedure con_proc (out param1 int)
begin
select count(*) into param1 from contents;
end; //
mysql>delimiter ;
mysql>call con_proc(@a);
mysql>select @a;b:
create procedure list_emp(eno int)
begin
select ename
from emp
where empno=eno;
end;//c:
create procedure list_emp(deptname varchar(20))
begin
select emp.ename
from emp inner join dept
on emp.deptno=dept.deptno
where dept.dname=deptname;
end;//d:
create procedure test_proc1 ()
begin
set @a = 'wanghao';
set @b = 'l';
insert into test_table(name,sex) values (@a,@b);
end; //e:
create procedure test_proc1 ()
begin
declare a int;
declare b int;
set @a = 'wanghao';
set @b = 'l';
insert into test_table(name,sex) values (@a,@b);
end; //11、函数
a:
mysql> create function hello (s char(20))
-> returns char(50)
-> return concat('Hello, ',s,'!');
-> //
mysql> select hello('world');b:
mysql> create function hello (s int)
returns char(50)
begin
declare a char(50);
select name into a from test_table where id=s;
return a ;
end;//
mysql> select hello(1);6、备份与还原数据库
#mysqldump -u root -p db_name > db_name_bak090805.sql;
#mysql –u root –p db_name < db_name_bak090805.sql
7、建立数据库连接, @$conn=mysql_pconnect('localhost','root','root')
or die("无法连接数据库!"); @mysql_select_db('guest_book')
or die('数据库不存在!'); @$rs=mysql_query('select * from contents',$conn)
or die('查询语句错误,请检查关键字或对象是否正确!'); 问题:中文乱码:
1、需要在连接语句后设置:
mysql_query("SET NAMES 'gbk'"); 2、my.ini文件修改:
[mysql]
default-character-set = gbk

8、获取和显示数据
1) mysql_result()
从$rs的指定row 中获取一个field 的数据. 简单但是效率低.
$c_id = mysql_result($rs,0, "c_id");
$c_name = mysql_result($rs,0, "c_name");
echo $c_id."--".$c_name."<br>";

注意,上述代码只是输出结果集中的第一条数据的字段值,如果要输出所有记录,需要循环处理. for($count=0;$count<mysql_numrows($rs);$count++)
{
$c_id = mysql_result($rs,$count, "c_id");
$c_name = mysql_result($rs,$count, "c_name");
echo $c_id."--".$c_name."<br>";
} 注意,如果查询字段名是别名,则mysql_result中就使用别名. 2) mysql_fetch_row()
从result_set中获取整行,把数据放入数组中.
while(list($id, $name) = mysql_fetch_row($rs))
{
echo "content: $name ($id)";
}
或者:
while($row = mysql_fetch_row($rs))
{
echo $row[0].$row[1]."<br>";
}

3) mysql_fetch_array()
mysql_fetch_row()的增强版. 将result_set的每一行获取为一个关联数组或/和数值索引数组.
默认获取两种数组,result_type可以设置:
MYSQL_ASSOC:返回关联数组,字段名=>字段值
MYSQL_NUM:返回数值索引数组.
MYSQL_BOTH:获取两种数组.因此每个字段可以按索引偏移引用,也可以按字段名引用.
while($row = mysql_fetch_array($rs, MYSQL_BOTH))
{
printf ("ID: %s Name: %s<br>", $row[0], $row[1]);
}

4) mysql_fetch_object()
返回是一个对象。
while($row = mysql_fetch_object($rs))
{
echo $row->c_id."--".$row->c_name."<br>";
}9、所选择的记录和受影响的记录 1) mysql_num_rows()
返回result_set中的行数.
echo "此次查询有".mysql_num_rows($rs)."条记录!"; 2) mysql_affected_rows()
获取insert/updata/delete查询影响的记录数
@$rs=mysql_query("update contents set c_content='mini' where c_id=3",$conn)
or die('查询语句错误,请检查关键字或对象是否正确!'); echo "有".mysql_affected_rows()."条记录被更新!";
10、获取数据库和表的信息
1) mysql_list_dbs()
resource mysql_list_dbs([resource link_id])
获取服务器上所有数据库名称.
举例:
mysql_connect("localhost", "root","root");
$dbs = mysql_list_dbs();
while (list($db) = mysql_fetch_row($dbs)) {
echo "$db <br>";
}
注意,输出结果与使用的用户权限相关. 2) mysql_db_name()
string mysql_db_name(resource result_set, interger index)
获取在mysql_list_dbs()返回的result_set中位置为index的数据库名.

3) mysql_list_tables()
resource mysql_list_tables(string database [,resource link_id])
获取database中的所有表名.
$rs = mysql_list_tables("guest_book");
while ($row = mysql_fetch_row($rs)) {
print "Table: $row[0]\n";
} 4) mysql_tablename()
string mysql_tablename(resource result_set, interger index)
获取mysql_list_tables()返回的result_set中位置为index的表名.
11、调用存储过程:
不带参数:
create procedure select_count()
begin
select * from contents;
endcall select_count1()<?php
define('CLIENT_MULTI_RESULTS', 131072);
mysql_connect('localhost','root','root',1,CLIENT_MULTI_RESULTS);
mysql_select_db('guest_book');
mysql_query("SET NAMES 'gbk'");
$rs=mysql_query('call select_count()');
while($row = mysql_fetch_row($rs))
{
echo $row[0].$row[1]."<br>";
}
?>带参数:
create procedure select_count1(id int)
begin
select * from contents where c_id=id;
endcall select_count1(5)$rs=mysql_query('call select_count1(5)');
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式