发一篇怎样在Unix体系情况下安装MySQL数据库
WindowsAzureSQLDatabase并不支持数据压缩和表分区之类的功能,而且SQLDatabase支持的Transact-SQL语言只是完整版的一部分。另外,因为解决方案提供商不能控制物理资源,所以他们不能将数据文件和索引分配给特定的硬件。安装时倡议你为MySQL办理创立一个用户和组。由该组用户运转mysql服务器并实行办理义务。(也能够以root身份运转服务器,可是不保举)<Pstyle="TEXT-INDENT:2em">第一步创立一个用户来运转服务器。在Solaris和unix下,能够用useradd和groupadd利用工具来完成。取一个名字叫mysql吧。(固然,任何你喜好的id都能够)以是在做别的事变之前,使用su命令成为root:<Pstyle="TEXT-INDENT:2em">$su-root<Pstyle="TEXT-INDENT:2em">$groupaddmysql<Pstyle="TEXT-INDENT:2em">$useradd-gmysqlmysql<Pstyle="TEXT-INDENT:2em">选择要安装mysql软件的地位,并将以后目次转换到该目次。一样平常的,将安装到/usr/local,这是MySQL软件的尺度安装地位。如今出来,<Pstyle="TEXT-INDENT:2em">$cd/usr/local<Pstyle="TEXT-INDENT:2em">解开软件包:<Pstyle="TEXT-INDENT:2em">$gunzip-c/tmp/mysql-3.23.xx.tar.gz|tar-xf-<Pstyle="TEXT-INDENT:2em">由于要安装在Solaris服务器上,以是假如安装的是分歧版本的tar,比方GNU的tar,则下面的命令将不会起感化。这是要用上面的命令:<Pstyle="TEXT-INDENT:2em">$gunzip-c/tmp/mysql-3.23.xx.tar.gz|gtar-xf-<Pstyle="TEXT-INDENT:2em">如今能够检察一下新目次,看是不是存在<Pstyle="TEXT-INDENT:2em">$ls-ldmysql*<Pstyle="TEXT-INDENT:2em">total1<Pstyle="TEXT-INDENT:2em">drwxr-xr-x28useruser1024Jul1814:29mysql-3.23.x/<Pstyle="TEXT-INDENT:2em">下一步是创立一个标记链接,以便安装可以指向/usr/local/mysql:<Pstyle="TEXT-INDENT:2em">$ln-smysql-3.23.xmysql<Pstyle="TEXT-INDENT:2em">$ls-ldmysql*<Pstyle="TEXT-INDENT:2em">就会呈现暗示毗连乐成的行来。依照上帖软件安装好后,另有几项设置义务要完成。运转scripts/mysql_install_db创立MySQL允许表:<Pstyle="TEXT-INDENT:2em">$scripts/mysql_install_db<Pstyle="TEXT-INDENT:2em">PReparingdbtalbe<Pstyle="TEXT-INDENT:2em">Preparinghosttable<Pstyle="TEXT-INDENT:2em">Preparingusertable<Pstyle="TEXT-INDENT:2em">Preparingfunctable<Pstyle="TEXT-INDENT:2em">Preparingtables_privtable<Pstyle="TEXT-INDENT:2em">Preparingcolumns_privtable<Pstyle="TEXT-INDENT:2em">Installingallpreparedtables<Pstyle="TEXT-INDENT:2em">01072619:40:05./bin/mysqld:ShutdownComplete<Pstyle="TEXT-INDENT:2em">设置二进制文件的一切权,从而使之回root一切,并属于后面创立的MySQL<Pstyle="TEXT-INDENT:2em">办理员组(这个例子为mysql)<Pstyle="TEXT-INDENT:2em">$chown-Rroot/usr/local/mysql<Pstyle="TEXT-INDENT:2em">$chgrp-Rmysql/usr/local/mysql<Pstyle="TEXT-INDENT:2em">将数据目次的一切权设置为先前创立的MySQL办理用户<Pstyle="TEXT-INDENT:2em">$chown-Rmysql/usr/local/mysql/data<Pstyle="TEXT-INDENT:2em">一切权设置完成<Pstyle="TEXT-INDENT:2em">启动服务器需运转safe_mysqld:<Pstyle="TEXT-INDENT:2em">$bin/safe_mysqld--usr=mysql&<Pstyle="TEXT-INDENT:2em">一样平常要让MySQL在服务器引诱时就运转。为此,能够将support-files/mysql.server复制到体系得当的地位就ok了。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">为了确保MySQL能一般事情,必要运转一些复杂的测试.假如输入了局:BINDIR=/usr/local/mysql/bin,就证实MySQL事情一般.BINDIR的值与下面选择的prefix选项有关。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">--------------------------------------------------------------------------------<Pstyle="TEXT-INDENT:2em">#BINDIR/mysqlshow-p<Pstyle="TEXT-INDENT:2em">+---------------+<Pstyle="TEXT-INDENT:2em">|Databases|<Pstyle="TEXT-INDENT:2em">+---------------+<Pstyle="TEXT-INDENT:2em">|mysql|<Pstyle="TEXT-INDENT:2em">+---------------+<Pstyle="TEXT-INDENT:2em">--------------------------------------------------------------------------------<Pstyle="TEXT-INDENT:2em">一旦你安装了MySQL,它将会主动天生两个数据库。一个用于办理用户、主机和服务器数据库权限。另外一个是测试数据库(testdatabase)。我们可使用测试数据库。可是,我们想复杂快速的向你先容MySQL中一些可以使用的指令的概貌。这还能够确保root被设置为可以完整会见服务器,比方:root能够同意创立数据库、表单等..以是我们将创立一个test2数据库用于今后的测试。在经由过程指令进进MySQL前,体系将提醒输出新创立的root口令。应当记得你已悔改root的口令了。<Pstyle="TEXT-INDENT:2em">--------------------------------------------------------------------------------<Pstyle="TEXT-INDENT:2em">#mysql-uroot-p<Pstyle="TEXT-INDENT:2em">mysql>showdatabases;<Pstyle="TEXT-INDENT:2em">+----------------+<Pstyle="TEXT-INDENT:2em">|Database|<Pstyle="TEXT-INDENT:2em">+----------------+<Pstyle="TEXT-INDENT:2em">|mysql|<Pstyle="TEXT-INDENT:2em">|test|<Pstyle="TEXT-INDENT:2em">+----------------+<Pstyle="TEXT-INDENT:2em">mysql>createdatabasetest2;<Pstyle="TEXT-INDENT:2em">QueryOK,1rowaffected(0.00sec)<Pstyle="TEXT-INDENT:2em">--------------------------------------------------------------------------------<Pstyle="TEXT-INDENT:2em">依照上面两段代码,选择利用新的数据库,并创立一个称号为tst_tbl的表,它有两个字段。第一个字段(field1)为id字段,经由过程它能够看到纪录的id号。从实质上看,这只是一列纯数字。第二个字段为称号字段,在个中能够存储书的称号。这些字段的格局为:field1(id)为长度为3的整数型(int),field2(name)为长度为50的字符串型(char)。我们对id的赋值能够对数据查找和标引。<Pstyle="TEXT-INDENT:2em">--------------------------------------------------------------------------------<Pstyle="TEXT-INDENT:2em">mysql>usetest2;<Pstyle="TEXT-INDENT:2em">Databasechanged<Pstyle="TEXT-INDENT:2em">mysql>CREATETABLEbooks(idint(3)notnull<Pstyle="TEXT-INDENT:2em">->auto_increment,namechar(50)notnull,<Pstyle="TEXT-INDENT:2em">->unique(id),primarykey(id));<Pstyle="TEXT-INDENT:2em">QueryOK,0rowsaffected(0.00sec)<Pstyle="TEXT-INDENT:2em">--------------------------------------------------------------------------------<Pstyle="TEXT-INDENT:2em">如今用上面命令反省库是不是准确。<Pstyle="TEXT-INDENT:2em">--------------------------------------------------------------------------------<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">mysql>showtables;<Pstyle="TEXT-INDENT:2em">+---------------------+<Pstyle="TEXT-INDENT:2em">|Tablesintest2|<Pstyle="TEXT-INDENT:2em">+---------------------+<Pstyle="TEXT-INDENT:2em">|books|<Pstyle="TEXT-INDENT:2em">+---------------------+<Pstyle="TEXT-INDENT:2em">1rowinset(0.00sec)<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">mysql>describebooks;<Pstyle="TEXT-INDENT:2em">+-------+-------------+------+------+----------+----------------+<Pstyle="TEXT-INDENT:2em">|Field|Type|Null|Key|Default|Extra|<Pstyle="TEXT-INDENT:2em">+-------+-------------+------+------+----------+----------------+<Pstyle="TEXT-INDENT:2em">|id|int(3)||PRI|0|auto_increment|<Pstyle="TEXT-INDENT:2em">|name|char(50)||<Pstyle="TEXT-INDENT:2em">+-------+-------------+------+------+----------+----------------+<Pstyle="TEXT-INDENT:2em">2rowsinset(0.00sec)<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">--------------------------------------------------------------------------------<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">注重:describe指令基础刻画出表的结构。<Pstyle="TEXT-INDENT:2em">OK,上面先容一些真正有效的SQL指令:怎样在数据库中拔出和选择数据。如今能够向新建表中到场几笔记录。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">--------------------------------------------------------------------------------<Pstyle="TEXT-INDENT:2em">mysql>INSERTINTObooks(name)values(php4Newbies);<Pstyle="TEXT-INDENT:2em">QueryOK,1rowaffected(0.00sec)<Pstyle="TEXT-INDENT:2em">mysql>INSERTINTObooks(name)values(RedHatlinux6Server);<Pstyle="TEXT-INDENT:2em">QueryOK,1rowaffected(0.00sec)<Pstyle="TEXT-INDENT:2em">--------------------------------------------------------------------------------<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">如今反省一下新的纪录,并熟习一下select指令。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">-------------------------------------------------------------------------------<Pstyle="TEXT-INDENT:2em">mysql>SELECT*frombooks;<Pstyle="TEXT-INDENT:2em">+----+----------------------------------+<Pstyle="TEXT-INDENT:2em">|id|name|<Pstyle="TEXT-INDENT:2em">+----+----------------------------------+<Pstyle="TEXT-INDENT:2em">|1|PHPforNewbies|<Pstyle="TEXT-INDENT:2em">|2|RedHatLinux6Server|<Pstyle="TEXT-INDENT:2em">+----+----------------------------------+<Pstyle="TEXT-INDENT:2em">2rowsinset(0.00sec)<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">--------------------------------------------------------------------------------<Pstyle="TEXT-INDENT:2em">如许MySQL服务器的就已能一般运转了。我们能够持续增添纪录,可是在此就没有更多意义了。<Pstyle="TEXT-INDENT:2em">注重:当你向数据库拔出纪录时,不用指定id。这是由于你创立id字段有主动增添的选项。<Pstyle="TEXT-INDENT:2em">上面先容怎样举行疾速删除。这只是给你一个复杂信息,记着你能够在mysqlweb站点http://www.mysql.com找到一切你所想要的mysql指令和服务器的信息。<Pstyle="TEXT-INDENT:2em">--------------------------------------------------------------------------------<Pstyle="TEXT-INDENT:2em">mysql>deletefrombookswhereid=1;<Pstyle="TEXT-INDENT:2em">QueryOK,1rowaffected(0.00sec)<Pstyle="TEXT-INDENT:2em">mysql>select*frombooks;<Pstyle="TEXT-INDENT:2em">+----+-----------------------------------+<Pstyle="TEXT-INDENT:2em">|id|name|<Pstyle="TEXT-INDENT:2em">+----+-----------------------------------+<Pstyle="TEXT-INDENT:2em">|2|RedHatLinux6Server|<Pstyle="TEXT-INDENT:2em">+----+-----------------------------------+1rowinset(0.00sec)当然,或许这并不是我们拒绝MySQL的一个有说服力的MySQL学习教程,但是对于一些比较守旧的IT经理来说,在为一些关键业务选择平台的时候,平台的成熟性却是必须要考虑的一个因素,在这一点上,MySQL无疑毫无优势。 SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上. 多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。 可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。 这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片? 对一张百万级别的表建游标,同时又没有什么过滤条件,取得游标效率是如果直接SQL查询百万条数据;如果再对每条记录做处理,耗时将更长。 呵呵,这就是偶想说的 需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。 where子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
页:
[1]