首页 电脑 电脑学堂 查看内容

Mysql数据库介绍

2010-11-12 17:07 904 0

摘要:     MySQL是一个真正的多用户、多线程SQL数据库服务器。SQL(结构化查询语言)是世界上最流行的和标准    化的数据库语言。MyS...
关键词: nbsp MySQL 索引 一个 文件 目录 数据库 服务器 数据 table

    MySQL是一个真正的多用户、多线程SQL数据库服务器。SQL(结构化查询语言)是世界上最流行的和标准    化的数据库语言。MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的    客户程序和库组成。    SQL是一种标准化的语言,它使得存储、更新和存取信息更容易。例如,你能用SQL语言为一个网站检索    产品信息及存储顾客信息,同时MySQL也足够快和灵活以允许你存储记录文件和图像。    MySQL 主要目标是快速、健壮和易用。最初是因为我们需要这样一个SQL服务器,它能处理与任何可不昂    贵硬件平台上提供数据库的厂家在一个数量级上的大型数据库,但速度更快,MySQL就开发出来。自1996年以    来,我们一直都在使用MySQL,其环境有超过 40 个数据库,包含 10,000个表,其中500多个表超过7百万行    ,这大约有100 个吉字节(GB)的关键应用数据。    Mysql数据库特点    1.  使用核心线程的完全多线程。这意味着它能很容易地利用多CPU(如果有)。    2.  可运行在不同的平台上。    3.  多种列类型:1、 2、 3、4、和 8 字节长度的有符号/无符号整数(INT)、FLOAT、DOUBLE、CHAR、    VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、SET和ENUM类型。    4.  利用一个优化的一遍扫描多重联结(one-sweep multi-join)非常快速地进行联结(join)。    5.  在查询的SELECT和WHERE部分支持全部运算符和函数。    6.  通过一个高度优化的类库实现SQL函数库并且像他们能达到的一样快速,通常在查询初始化后不应该有任    何内存分配。    7.  全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函数( COUNT()、COUNT(DISTINCT)、AVG()、STD()、    SUM()、 MAX()和MIN() )。    8.  支持ANSI SQL的LEFT OUTER JOIN和ODBC语法。    9.  你可以在同一查询中混用来自不同数据库的表。    10. 一个非常灵活且安全的权限和口令系统,并且它允许基于主机的认证。口令是安全的,因为当与一个服    务器连接时,所有的口令传送被加密。    11. ODBC for Windiws 95。    12. 具备索引压缩的快速B树磁盘表。    13. 每个表允许有16个索引。每个索引可以由1~16个列或列的一部分组成。最大索引长度是 256 个字节(在    编译MySQL时,它可以改变)。一个索引可以使用一个CHAR或VARCHAR字段的前缀。    14. 定长和变长记录。    15. 用作临时表的内存散列表。    16. 大数据库处理。我们正在对某些包含 50,000,000 个记录的数据库使用MySQL。    17. 所有列都有缺省值,你可以用INSERT插入一个表列的子集,那些没用明确给定值的列设置为他们的缺省    值。    18. 一个非常快速的基于线程的内存分配系统。    19. 没有内存漏洞。用一个商用内存漏洞监测程序测试过(purify)。    20. 包括myisamchk,一个检查、优化和修复数据库表的快速实用程序。    21. 全面支持ISO-8859-1  Latin1 字符集。    22. 所有数据以 ISO-8859-1  Latin1 格式保存。所有正常的字符串比较是忽略大小写的。    23. DELETE、INSERT、REPLACE和UPDATE 返回有多少行被改变(受影响)。    24. 函数名不会与表或列名冲突。例如ABS是一个有效的列名字。对函数调用的唯一限制是函数名与随后的    "("不能有空格。    25. 所有MySQL程序可以用选项--help或-?获得联机帮助。    26. 服务器能为客户提供多种语言的出错消息。    27. 客户端使用TCP/IP 连接或Unix套接字(socket)或NT下的命名管道连接MySQL。    28. MySQL特有的SHOW命令可用来检索数据库、表和索引的信息,EXPLAIN命令可用来确定优化器如何解决一    个查询。    MySQL服务器的启动与停止    一、启动服务器的方法    启动服务器由三种主要方法:    1、 直接调用mysqld。    #./mysqld&    这可能是最不常用的方法,建议不要多使用。    2、调用safe_mysqld脚本,最好的方法。    #./safe_mysqld -O join_buffer=128M -O key_buffer=128M -O record_buffer=256M -O sort_buffer=128M -O table_cache=2048 -O tmp_table_size=16M -O max_connections=2048 &    3、调用mysql.server脚本。    safe_mysqld脚本安装在MySQL安装目录的bin目录下,或可在MySQL源代码分发的scripts目录下找到。    mysql.server脚本安装在MySQL安装目录下的share/mysqld目录下或可以在MySQL源代码分发的support_files    目录下找到。如果你想使用它们,你需要将它们拷贝到适当的目录下mysql/bin下。    #./mysql.server start    Sun Solariys开机自动启mysql的方法    写一个启动和关闭的批处理文件Web (在路径/etc/init.d 下), 内容如下:    #!/bin/sh    OPT_=$1    case "$OPT_" in    start)    /bin/echo "$0 : (start)"    #    # Your service startup command goes here.    #    /usr/local/apache/bin/apachectl start    /home3/mysql/bin/safe_mysqld -O join_buffer=128M -O key_buffer=128M -O record_buffer=256M -O sort_buffer=128M -O table_cache=2048 -O tmp_table_size=16M -O max_connections=2048 &    # NOTE: Must exit with zero unless error is severe.    exit 0    ;;    stop)    /bin/echo "$0 : (stop)"    #    # Your service shutdown command goes here.    #    /usr/local/apache/bin/apachectl stop    # NOTE: Must exit with zero unless error is severe.    exit 0    ;;    *)        /bin/echo ''    /bin/echo "Usage: $0 [start|stop]"    /bin/echo "       Invalid argument ==> \"${OPT_}\""    /bin/echo ''    exit 0    ;;    esac    确认此文件有可执行的权利    #chmod 500 web    #cd /etc/rc2.d    #ln -s ../init.d/web S99mysql    在系统启动时,S99mysql脚本将自动用一个start参数调用。注意头字母必须大写。    二、停止服务器的方法    1、要手工停止服务器,使用mysqladmin:    #mysqladmin -u 用户名 -p'密码' shutdown    2、 调用mysql.server脚本,最好的方法。    #./mysql.server stop    3、 直接杀掉OS的进程号    #kill -9 进程号    这可能是最不常用的方法,建议不要多使用。    要自动停止服务器,你不需做特别的事情。只需要加另外一个关闭程序。    #cd /etc/rc0.d    #ln -s ../init.d/web K01mysql    在系统启动时,K01mysql脚本将自动用一个stop参数调用。    MySQL目录结构和常用命令    一、 数据目录的位置    这是默认的mysql目录结构    bin        info       libexec    share      var    include    lib        man        sql-bench    一个缺省数据目录被编译进了服务器,如果你从一个源代码分发安装MySQL,典型的缺省目录为    /usr/local/var,如果从RPM文件安装则为/var/lib/mysql,如果从一个二进制分发安装则是    /usr/local/mysql/data。    作为一名MySQL管理员,你应该知道你的数据目录在哪里。如果你运行多个服务器,你应该是到所有数据目录    在哪里,但是如果你不知道确切的位置,由多种方法找到它:    1、使用mysqladmin variables从你的服务器直接获得数据目录路径名。查找datadir变量的值,在Unix上,其输出类似于:    %mysqladmin -u username -p'*****' variables    +----------------------+----------------------+    | variable_name        | Value                |    +----------------------+----------------------+    | back_log             | 5                    |    | connect_timeout      | 5                    |    | basedir              | /var/local/          |    | datadir              | /usr/local/var/      |    ....    2、查找mysql运行的路径    %ps -ef | grep mysqld    二、数据目录结构    每个数据库对应于数据目录下的一个目录。    在一个数据库中的表对应于数据目录下的文件。    数据目录也包含由服务器产生的几个状态文件,如日志文件。这些文件提供了关于服务器操作的重要信息。    对管理特别在出了问题而试图确定问题原因时很有价值。    1、数据库表的表示    数据库目录中有3种文件:一个样式(描述文件)、一个数据文件和一个索引文件。每个文件的基本名是表    名,文件名扩展名代表文件类型。扩展名如下表。数据和索引文件的扩展名指出表使用老式IASM索引或新式    MyISAM索引。    MySQL文件类型    文件类型        文件名扩展名                        文件内容    样式文件        .frm                                描述表的结构(它的列、列类型、索引等)    数据文件        .ISD(ISAM)或.MYD(MyISAM)        包含表里所有的数据    索引文件        .ISM(ISAM)或.MYI(MyISAM)        包含数据文件上的所有索引的索引树    当你发出一条CREATE TABLE tbl_name时语句定义表的结构时,服务器创建一个名为tbl_name.frm的文件,它    包括该结构的内部编码,同时也创建一个空数据和索引文件,初始化为包含指出无记录和无索引的信息(如    果CREATE TABLE语句包括索引指定,索引文件反映出这些索引)。对应于表的文件的属主和模式被设置为只    允许MySQL服务器用户访问。    下面介绍一下常用的mysql命令    进入mysql数据库    #./mysql -u 用户名 -p'密码'    查看所有的数据库    mysql> show databases;    进入一个特定的数据库    mysql> use 数据库名;    查看数据库里所有的表    mysql> show tables;    把表改名    mysql> alter table 表名1 rename 表名2;    例子:mysql>alter table dept rename dept2;    2、 建索引的注意事项:    先要把要加索引的字段设为非空    mysql> alter table 表名 change 字段名 字段名 字段描述 not null;    例子:    我们创建这样一个表    mysql> create table employee    ( id int(5) not null,    depno int(5),    name varchar(20) not null,    cardnumber bigint(15) not null);    mysql> alter table employee change depno depno int(5) not null;    加索引    mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]);    例子: mysql> alter table employee add index emp_name (name);    加主关键字的索引    mysql> alter table 表名 add primary key (字段名);    例子: mysql> alter table employee add primary key(id);    加唯一限制条件的索引    mysql> alter table 表名 add unique 索引名 (字段名);    例子: mysql> alter table employee add unique emp_name2(cardnumber);    查看某个表的索引    mysql> show index from 表名;    例子: mysql> show index from employee;    删除某个索引    mysql> alter table 表名 drop index 索引名;    例子: mysql>alter table employee drop index emp_name;
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部