收藏 分享(赏)

网络数据库Mysql介绍.doc

上传人:HR专家 文档编号:11442163 上传时间:2020-04-28 格式:DOC 页数:64 大小:2.21MB
下载 相关 举报
网络数据库Mysql介绍.doc_第1页
第1页 / 共64页
网络数据库Mysql介绍.doc_第2页
第2页 / 共64页
网络数据库Mysql介绍.doc_第3页
第3页 / 共64页
网络数据库Mysql介绍.doc_第4页
第4页 / 共64页
网络数据库Mysql介绍.doc_第5页
第5页 / 共64页
点击查看更多>>
资源描述

1、网络数据库网络数据库(networkdatabase) l 在网络环境中,为了提高系统的性能和可靠性,一般都采用具有“客户服务器数据库引擎”的大型关系数据库系统。l 通常指跨越电脑在网络上创建、运行的数据库。l 目前使用较为广泛的网络数据库平台有SQL Server、MySQL、Oracle等。一、MySQL基础知识l 作为开源软件的代表,MySQL数据库随着其功能的日益完善和可靠性的不断提高,已经成为互联网平台上应用广泛的数据库软件。l 特别是与Apache和PHP/PERL结合,为建立基于数据库的动态网站提供了强大动力。主要内容1. MySQL数据库管理系统概述2. MySQL安装与配置3

2、. MySQL图形化工具的使用1、 MY SQL数据库管理系统概述l 最近几年,随着it技术的发展,开源数据库逐渐流行;l 和传统的商业数据库相比,开源数据库具有完全免费、源码公开、随意下载等特点,并可以用于各种商业目的。这使得开源软件被广泛应用在各个行业中,大大降低了企业的开发运营成本。l MySQL正是这些开源数据库中的杰出代表。1)MySQL历史与发展l 最早源于开源软件mSQL,由David Axmark等三个瑞典人于20世纪90年代开发的一个关系型数据库;l 2000年开始使用GPL许可协议,成为开源软件的一分子;l 2001年开始引入InnoDB存储引擎,于2002年正式宣布MyS

3、QL全面支持事务,满足ACID属性。l 2003年,MySQL 4.0发布,开始支持集合操作;l 2004年, MySQL 4.1发布,增加对子查询的支持;l 2005年, MySQL 5.0发布,增加对视图(View)、存储过程(Procedure)、触发器(Trigger)、服务器游标(Cursor)及分布式事务协议等高级特性的支持,至此,MySQL从功能上已经具备了支持企业级应用的主要特性。l 在实际应用方面,LAMP(Linux + Apache + MySQL + Perl/PHP/Python)也逐渐成了IT业广泛使用的Web应用架构。2)MySQL特点(对比其他数据库)l 一直坚

4、持性能优先的原则;web应用往往需要支持大量的数据和并发请求,性能常常是首要因素;l 可运行在不同操作系统平台上;l 相对来说,MySQL使用比较简单,管理维护相对容易;2. MySQL的安装与配置二、MySQL使用入门l SQL,是Structured Query Language的缩写,是使用关系模型的数据库应用语言;l 正是由于SQL语言的标准化,所以大多数关系型数据库系统都支持SQL语言,它已经发展成为多种平台进行交互操作的底层会话语言。主要内容1、 SQL分类 2、DDL语句 3、DML语句 4、DCL语句1)SQL分类l DDL语句:数据定义语言,常用的语句关键字主要包括creat

5、e、drop、alter等;l DML语句:数据操纵语句,常用的语句关键字主要包括insert、delete、update、select等;l DCL语句:数据控制语句,主要的语句关键字包括grant、revoke等。2)DDL语句l DDL是数据定义语言的缩写,简单的说,就是对数据库内部的对象进行创建、删除、修改的操作语言;l 和DML语句的最大区别是DML只是对表内部数据的操作,而不涉及表的定义、结构的修改,更不会涉及其他对象;l DDL语句更多地被数据库管理员(DBA)所使用。 创建数据库l CREATE DATABASE dbname;l 如:创建数据库test1,命令为Mysql c

6、reate database test1;Query ok,1 rows affected (0.03 sec) -成功显示 常见问题l mysql create database test1; ERROR 1044 (42000): Access denied for user localhost to database test1(用户没有权限) Error 1007(HY000):Cant create database test1;database exists(已经存在这个数据库)l 如果要知道系统存在哪些数据库,可使用命令查看:mysql show databases; 删除数据库

7、可以使用命令查看test数据库中创建的所有数据表运行方式:l Mysql use test1;l Database changedl Mysql show tables;l Empty set(0.00 sec)l 要删除test1数据库,可使用以下语句Mysql drop database test1;Query ok,0 rows affected (0.00 sec) Query ok代表操作成功;在mysql里面,drop语句操作的结果显示都是0 rows affected ; 创建数据表l 在数据库中创建一张表的基本语法如下:Create table tablename (colum

8、n_1 datatype_1 constraints,column_2 datatype_2 constraints, column_n datatype_n constraints)l 例创建一个名称为emp的表。表中包括ename(姓名)、hiredate(雇用日期)和sal(薪水)三个字段,字段类型分别为varchar(10)、date、int(2)。l mysql create table emp(ename varchar(10),hiredate date, sal int(2);l Query ok,0 rows affected (0.08 sec)查看表l 表创建完毕后,如果

9、需要查看表的定义,可使用如下命令:DESC tablename l 若要查看更全面的表定义信息,有时就需要通过查看创建表的SQL语句来得到,可用如下命令:l MysqlShow create table emp G;使记录按字段排列l Mysqldesc emp 修改数据表对于已经创建好的表,经常需要做一些结构上的改变,对于表结构的修改,一般都是用alter table语句;在mysql数据库中,常见的操作有:l 修改字段类型l 增加字段l 删除字段l 字段改名l 修改字段排列顺序l 更改表名修改字段类型l 语法格式:ALTER TABLE tablename MODIFY column_de

10、dinition first | after col_namel 例如修改表emp的ename字段定义,将varchar(10)改为varchar(20)l Mysql alter table emp modify ename varchar(20);l Mysqldesc emp;l 修改成功后的显示: 增加字段l 语法格式:ALTER TABLE tablename ADD COLUMN column_dedinition first | after col_namel 例如表emp上新增字段age,类型为int(3);l Mysql alter table emp add column

11、age int(3);l Mysqldesc emp;删除字段l 语法格式:ALTER TABLE tablename DROP COLUMN column_name l 例如表emp上删除字段age;l Mysql alter table emp drop column age;l Mysqldesc emp;字段改名l 语法格式:ALTER TABLE tablename CHANGE COLUMN column_oldname column_definition first | after col_namel 例如将表emp上字段sal改名为sal1,同时修改类型为int(4);l My

12、sql alter table emp change sal sal1 int(4);l 运行显示修改字段排列顺序l 前面介绍字段增加和修改语法(ADD/CHANGE/MODIFY)中,都有一个可选项first | after col_name,这个选项用来修改字段在表中的位置,默认ADD增加的新字段加在表的最后位置;l 例如将表emp上新增字段birth加在ename字段后;Mysql alter table emp add birth date after ename;更改表名l 语法格式:ALTER TABLE tablename RENAME TO newtable_name l 例如

13、将表emp表名更改为emp1;Mysql alter table emp rename emp1;修改数据表语法格式为ALTER TABLE tablename | MODIFY column_dedinition first | after col_name| ADD COLUMN column_dedinition first | after col_name| DROP COLUMN column_name | CHANGE COLUMN column_oldname column_definition first | after col_name| RENAME TO newtable

14、_name 3)DML语句l DML操作是指对数据库中表记录的操作,主要包括表记录的插入(insert)、更新(update)、删除(delete)和查询(select),是开发人员日常使用最频繁的操作;l 插入记录l 更新记录l 删除l 查询 插入记录l 语法格式:INSERT INTO tablenamefield1, field2, fieldn VALUES(value1, value2, valuen)l 也可以不指定字段名称,但是values后面的顺序应和字段的排列顺序一致;l 在mysql中,insert语句可以一次性插入多条记录;l 插入多条记录语法:INSERT INTO t

15、ablenamefield1, field2, fieldn VALUES(record1_value1, record1_valuen),(record2_value1, record2_valuen),(recordn_value1, recordn_valuen); l 例如对表emp插入记录:ename为zzx1,hiredate为2000-01-01,sal为2000;Mysql insert into emp values(zzx1,null, 2000-01-01, 2000);l 例如对表dept一次插入两条记录;Mysql insert into dept values(5,

16、dept5),(6, dept6); 更新记录l 语法格式:UPDATE tablename SET field1=value1,field2= value2, valuen WHERE condition l 例如将表emp中的ename为lisa的薪水更改为4000;Mysql update emp set sal=4000 where ename=lisa;l 在mysql中,update命令可以同时更新多个表中数据,语法如下:UPDATE t1,t2,tn SET t1.field1=expr1, tn.field1=exprn WHERE condition l 例如:同时更新表em

17、p中的字段sal和表dept中的字段deptname;Mysqlupdate emp e , dept d set e.sal = e.sal*d.deptno , d. deptname=e.ename Where e.deptno=d.deptno; 删除记录l 语法格式:DELETE FROM tablename WHERE condition l 例如将表emp中的ename为dony的记录全部删除;Mysql delete from emp where ename=dony;l 在mysql中,一次可同时删除多个表中数据,语法如下:DELETE t1,t2,tn FROM t1,t2

18、,tn WHERE condition l 例将emp和dept中deptno为3的记录全部删除;Mysqldelete e,d from emp e,dept dwhere e.deptno=d.deptno and e.deptno=3 查询记录l 数据插入到数据库中后,就可以用SELETE命令进行各式各样的查询,使得输出结果符合用户的要求;l 简单语法格式:SELETE * FROM tablename WHERE condition GROUP BY field1,fieldn HAVING condition ORDER BY field1 asc|desc ,对列、行的查询l 查询

19、全部列Selete * from emp;l 查询部分列Selete ename,sal from emp l 更改查询结果列标题Selete ename 姓名,sal 工资 from emp 或者Selete 姓名=ename,工资=sal from emp;l 更改查询结果列内容Select ename 姓名,case when sal=2000 then 高收入 else 收入一般 end 收入情况from emp l 查询不重复的记录Select distinct deptno from emp;l 查询前十条记录Select * from emp order by ename lim

20、it 10; 条件查询l 在where条件表达式中,经常用到的运算符有:l 逻辑运算符not and orl 比较运算符 = = l 指定范围运算符 between andl 集合运算符inl 模糊匹配运算符like l 空值比较运算符is null聚合查询l 在很多情况下,需要进行一些汇总操作,如统计总人数或者每个部门人数,这时就要用到聚 合操作;l 聚合操作语法格式:SELETE field1, fieldn ,fun_name FROM tablename WHERE condition GROUP BY field1,fieldn With rollup HAVING conditio

21、n l 例如统计emp表中公司的总人数;Mysql select count(*) from emp;l 例如统计emp表中各个部门的总人数;Mysql select deptno,count(*) from emp group by deptno;l 统计emp表中人数大于2的各个部门;Mysql select deptno,count(*) from emp group by deptno having count(1) =1; l 统计公司所有员工的平均薪水、最高薪水和最低薪水;Mysql select avg(sal) ,max (sal) ,min (sal) from emp;连接

22、查询l 当需要显示多个表中的字段时,就可以用表连接来实现;l 从大类上分,表连接分为内连接和外连接,他们主要区别是内连接仅选出两张表中互相匹配的记录,而外连接会选出其他不匹配的记录;l 我们最常用的是内连接;l 例,查询出所有雇员的名字和所在部门名称;Mysql select ename,deptname from emp,dept where emp.deptno=dept.deptno;l 例,查询emp中所有雇员名字和所在部门名称;Mysql select ename,deptname from emp left jion dept where emp.deptno=dept.deptn

23、o;子查询/嵌套查询l 某些情况下,当进行查询的时候,需要的条件是另外一个select语句的结果,这个时候需要用到子查询;l 用于子查询的关键字主要包括in、not in、=、!=、exists、not exists等。l 例,查询出emp表中所有部门在dept表的记录;Mysql select * from emp where deptno in (select deptno from dept); 说明:l 如果子查询结果唯一,还可以用=代替in;l 某些情况下,子查询可以转化为表连接;集合查询l 我们会经常碰到这样的应用,将两个表的数据按照一定的查询条件查询出来后,将结果合并到一起显示出

24、来,这个时候,就需要用union 和union all来实现这样的功能;l 语法格式:Select * from t1 union | union allSelect * from t2 union | union allSelect * from tn l 例,将emp和dept表中的部门编号的集合显示出来;Mysql select deptno from emp union all select deptno from dept;Mysql select deptno from emp union select deptno from dept;4)DCL语句l DCL语句主要是DBA用来

25、管理系统中对象权限时使用,一般的开发人员很少使用;l 例,创建一个用户w,具有对test1数据库中所有表的select/insert权限;Mysql grant select,insert on test1.* to w localhost indentified by 123 ;l 例,对用户w的权限变更,收回insert,只能对数据进行select操作;Mysqlrevoke insert on test1.* from w localhost;三、MySQL中常用工具的使用l 在MySQL的日常工作和管理中,会经常用到MySQL提供的各种管理工具;l 如客户端连接工具、对象查看、数据备份

26、、日志分析、数据导入导出等工具,熟练使用这些工具将会大大提高工作效率。主要内容l 客户端连接工具l MySQL管理工具l 数据导出工具l DB对象查看工具l 日志管理工具1. mysql(客户端连接工具)l 在MySQL提供的工具中,DBA使用最频繁的莫过于mysql;l 这里的mysql不是指MySQL服务,也不是指MySQL数据库,而是连接数据库的客户端工具,是操作者和数据库之间的纽带和桥梁。l 基本语法:Mysql options database l Options表示mysql的可用选项,一次可写一个或多个;l Database表示连接的数据库;1) 连接选项l 连接服务器命令:my

27、sql h p u -pl -u,-user=name 指定用户名l -p,-password=name 指定密码l -h,-host=name 指定服务器IP或者域名l -p,-port=# 指定连接端口默认情况下,如果这些选项都不写,mysql将会使用用户localhost和空密码连接本机(localhost)上的3306端口。l 如果客户端和服务器位于同一台机器上,通常不需要指定-h选项,否则要指定mysql服务所在的ip或者主机名。l 如果不指定端口,默认连接到3306端口;l 用root帐号登录192.168.7.55上的3306端口,如下:C:mysqlbinmysql -h192

28、.168.7.55 -p 3306 -uroot -pEnter password:*Welcome to the mysql monitor. Commands end with ; or g.Mysqll 可以查看一下当前的连接用户;Mysqlselect current_user();2) 执行选项l -e,-execute=name 执行SQL语句并退出;l 此选项可以直接在MySQL客户端执行SQL语句,而不用连接到MySQL数据库后再执行,对于一些批处理脚本,这种方式尤为方便。l 另外,按这种方式可以执行多个SQL语句,用英文(;)隔开。l 例1:从客户端直接查询mysql数据库中

29、user表中的user和host字段;mysql uroot p123 mysql e “select user,host from user” l 例2:从客户端连续执行两个SQL语句;mysql uroot p mysql e “select user,host from user” ; “select count(*) from user” 3)格式化选项l -E,-vertical 将输出方式按照字段顺序竖着显示;l -s,-silent 去掉mysql中的线条框显示l “-E”类似于mysql里面执行SQL语句后加“g”,将输出内容比较多的行能够更清晰完整地进行显示,经常和”-e“选

30、项一起使用。l 例1:查询mysql数据库中user表中的user和host字段;mysql -uroot -p123 mysql -e “select user,host from user” -E l 在mysql模式下,”-s“选项可以将输出中的线条框去掉,字段之间用tab进行分隔,每条记录显示一行。4)错误处理选项l -f,-force 强制执行SQLl -v,-verbose 显示更多信息l -show-warnings 显示警告信息l 在一个批量执行的SQL中,若有一个SQL出错,正常情况下,该批处理将停止退出;l 加上”-f“选项,则跳过出错SQL,强制执行后面SQL;l 加上”

31、-v“选项,则显示出错的SQL语句;l 加上-show-warnings ,则会显示全部错误信息。2. mysqladmin(MySQL管理工具)l mysqladmin是一个执行管理操作的客户端程序,可以来检查服务器的配置和当前状态, 创建并删除数据库等;l 和mysql相似,更侧重于一些管理方面的功能;l 语法:mysqladmin options command cmd_options l options有很多选项l create database_name l debugl drop database_name l flush-hostsl flush-logsl shutdownl

32、l 如关闭数据库:mysqladmin -uroot -p shutdownenter password:3. mysqldump(数据导出工具)l mysqldump客户端工具用来备份数据库或在不同数据库之间进行数据迁移。l 备份内容包含创建表或装载表的SQL语句;l mysqldump目前是mysql中最常用的备份工具。mysqldump常用选项l 连接选项(-u -port -h -p)l 输出内容选项 l 输出格式选项l 字符集选项l 其他l 输出内容选项l -add-drop-database每个数据库创建语句前加上drop database语句l -add-drop-table每个

33、数据库创建语句前加上drop table语句 l -n,不包含数据库创建语句l -t,不包含数据表创建语句l -d,不包含数据l 输出格式选项l -compact 输出结果简洁,不包括各种注释 l 其他选项l -F -flush-logs(备份前刷新日志)有3种方式来调用mysqldump:l mysqldump options db_name tables#备份单个数据库或数据库中的部分表l mysqldump options database db1db2,#备份指定的一个或多个数据库l mysqldump options all-database #备份所有数据库导出mysqll 用my

34、sqldump命令行l 命令格式: mysqldump-u用户名-p数据库名数据库名.sql l 范例: mysqldump-uroot-pstustu.sql (导出数据库stu到stu.sql文件)向MySQL导入.sql文件l MySQL数据库的导入,有两种方法:1)导入数据库SQL脚本;2)直接拷贝数据库目录和文件。 l 在不同操作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况发生。所以一般推荐用SQL脚本形式导入。 l 用mysql命令行l 命令格式 mysql-u用户名-p数据库名数据库名.sql l 范例:l mysql-uroot-pstu1mysql -u

35、root -p123 stu1 select * from user where user=root and host =localhost G; l 当用户进行连接的时候,权限表的存取过程有以下两个阶段:l 先从user表中的host、user和password这三个字段中判断连接的IP、用户名和密码是否存在于表中,若存在,则通过身份验证,否则拒绝连接;l 若通过身份验证,则按照以下权限表的顺序得到数据库权限: User db tables_priv columns_priv l 在这几个权限表中,权限范围依次递减,全局权限覆盖局部权限。l 当用户通过身份认证,进行权限分配时,将按照User

36、 db tables_priv columns_priv 顺序进行权限分配;即先查看全局权限表user,l 若user中对应的权限为Y,则此用户对所有数据库的权限都为Y,不再检查db、 tables_priv等;l 若user中对应的权限为N,则到db表检查该用户对应的具体数据库,并得到db中为Y的权限;l 若user中对应的权限为N,若db对应的权限为N,则检查tables_priv对应的具体数据表,以此类推。3)MySQL帐号管理l 主要包括帐号的创建、权限更改和帐号的删除;可使用grant语法创建或直接操作授权表;l 创建帐号及授权语法格式GRANT ON TO userhost ide

37、ntified by password , WITH GRANT OPTION例1:解决帐号不允许从远程登陆,只能在localhost。l 方法1:登入mysql后,更改 mysql数据库里的 user表里的 host选项,从“localhost”改为“%”;l 步骤:Mysql use mysql ;Mysql update user set host=%where user=rootand host=localhost;mysql select user , host from user; 方法2:登入mysql后,授权root用户在任何客户机或指定IP地址登录;l 步骤:Mysqlgra

38、nt all privileges on *.* toroot 218.29.179.85identified by 123;l 测试用户root能否使用指定IP登录;C: mysql -h 218.29.179.85 -uroot -p123;l 例2:创建用户w1,并赋予所有数据库上的所有对象的select权限,只能从本地进行连接;Mysql grant select on *.* to w1localhostidentified by 123;l 测试用户w1是否只能从本地进行连接,且只能对所有数据库进行查询;C: mysql -h 218.29.179.85 -uw1 -p123; error 1405C: mysql -uw1 -p success l 测试用户w1是否只能对所有数据库进行查询;Delete from studenterror1142Create database ceshierror1044Select * from studentl 查看user表中w1用户的所有权限;C: mysql -uw1 -pmysql select * from user where user=w1 G; l

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

当前位置:首页 > 网络科技 > 计算机原理

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报