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

展开全部

一、数据库操作示例:

1、创建数据库和表32313133353236313431303231363533e4b893e5b19e31333332626664

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 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."
";

注意,上述代码只是输出结果集中的第一条数据的字段值,如果要输出所有记录,需要循环处理. for($count=0;$count

{

$c_id = mysql_result($rs,$count, "c_id");

$c_name = mysql_result($rs,$count, "c_name");

echo $c_id."--".$c_name."
";

} 注意,如果查询字段名是别名,则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]."
";

}

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
", $row[0], $row[1]);

}

4) mysql_fetch_object()

返回是一个对象。

while($row = mysql_fetch_object($rs))

{

echo $row->c_id."--".$row->c_name."
";

}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
";

}

注意,输出结果与使用的用户权限相关. 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]."
";

}

?>带参数:

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)');

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值