Chinaunix首页 | 论坛 | 博客
  • 博客访问: 136102
  • 博文数量: 24
  • 博客积分: 2022
  • 博客等级: 大尉
  • 技术积分: 300
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-21 01:00
文章分类
文章存档

2010年(1)

2009年(23)

我的朋友

分类: LINUX

2009-10-23 11:57:29

5.MySQL客户端操作

   用户登录后,可以在MySQL命令提示符(mysql>)后使用SQL语言,进行MySQL客户端操作。

   每个SQL语句都应以“”或“\g”结束,并且是不区分大小写的。

 (1)数据库操作

 【查看数据库】

  使用以下命令可以查看MySQL当前所有可用的数据库

         mysql>show databases;

  从执行的结果可见,MySQL已经创建了三个数据库,information_schemamysqltest。这三个数据库是MySQL安装程序自

  动创建的。其中,mysql库中包含的是5MySQL授权表,information_schema库中是相关信息,而test库是供用户练习使用的。

 【创建数据库】

  MySQL中创建数据库的语名格式为:

         mysql>create  database  数据库名;  

  例如:要创建一个名为e_learning的在线学习数据库,可以输入以下命令:

         mysql>create  database  e_learning;

  默认情况下,所创建的数据库将以目录的形式保存在/var/lib/mysql中,例如,上面创建的e_learning数据库将保存在目录

  /var/lib/mysql/e_learning中。系统不允许有同名的数据库存在。

 【选择数据库】

  所谓选择数据库,就是选定某个数据库成为当前处理所有事务的数据库,可以使用以下SQL语句:

          mysql>use  数据库名;  

  例如:选择e_learning数据库的命令为:

          mysql>use  e_learning;

 【删除数据库】

  当执行删除数据库的命令时,数据库及其所有的表和表中的数据都将被删除,所使用的SQL命令为:

          mysql>drop  database  数据库名;

  例如:若要删除e_learning数据库,则使用以下命令: mysql>drop  database  e_learning;

(2)数据表操作

    在关系型数据库中,数据库由多个数据表有机构成。每个数据表由行和列组成,每一行是一条记录,每个记录可以包含多个列(字段)

    常见的数据表操作包手创建,删除,复制,修改等。

 【创建表】

   MySQL使用以下格式的SQL语句创建表:

         mysql>create  table  表名  (字段1,字段2...字段n [表级约束])  [Type|Engine =表类型|存储引擎]

   其中,字段的格式为:字段名  字段类型  [字段约束]

          ·字段类型:又称列类型,规定了某个字段所允许输入的数据类型,常用的字段类型如下:

                    INTINTEGER--------整型,4个字节

                    FLOAT------------------浮点型,4个字节

                    DOUBLE----------------双精度浮点型,8个字节

                    DATE-------------------日期型,3个字节

                    CHAR(M)---------------字符型,M个字节,0<=M<=255

                    VARCHAR(M)----------字符串型,L+1个字节,其中L<=M0<=M<=65535

                    BINARY(M)------------二进制型,M个字节,0<=M<=255

                    BLOB,TEXT-------------可变二进制型,L+2个字节,其中L<216

                    ENUM('value1''value2'....)-------枚举型,12个字节,取决于枚举值的个数(最多65535个值)

          ·字段约束:进一步对某个字段允许输入的数据进行约束,常用的字段约束如下:

                    Null(Not Null)--------允许字段为空(或不允许字段为空),默认为Null

                    Default------------------指定字段的默认值

                    Auto_Increment--------设置Int型字段能够自动生成递增1的整数 

           ·表级约束:表级约束用于确定表的主键,外键,索引等,常用表级约束如下:

                    Primary Key----------设置主键

                    Foreign Key....References----设置外键

                    Index-----------------设置索引

                    Unique----------------设置唯一索引

                    Fulltext--------------- 设置全文索引

          ·表类型:指明了表中数据的存储格式,MySQL支持数个存储引擎作为对不同类型的处理器。默认的表类型是“MyISAM”,相

                    应的存储引擎为“MyISAM”。下面是常见的表存储引擎:

                    ARCHIVE--------------档案存储引擎

                    BDB-------------------带页面锁定的事务安全表。也称为BerkeleyDB

                    CSV-------------------值之间用逗号隔开的表

                    EXAMPLE--------------示例引擎

                    FEDERATED-----------可以访问远程表的存储引擎

                    InnoDB----------------带行锁定和外键的事务安全表

                    MERGE----------------MyISAM表的集合,作为一个表使用。也称为MRG_MyISAM

                    MyISAM---------------二进制轻便式存储引擎,此引擎是MySQL所用的默认存储引擎

                    NDBCLUSTER---------成簇表,容错表,以存储器为基础的表。也称为NDB

       需要注意的是,表名可被指定为dabase.table的形式。不论是否有当前数据库,都可以通过这种方式创建表。如果使用引号识别名,

    则应对数据库名和表名分别加引号。例如:'dabase'.'table'是合法的表名,而'database.table'则不合法。

       MySQL中,表一旦被创建就会在/var/lib/mysql目录下创建一个以表名为名称的目录,通过该目录中的.frm表格式/定义文件表示

    每个表。表的存储引擎也可能会创建其他文件。对于MyISAMG表,存储引擎可以创建数据和索引文件。因此,对于每个MyISAM

    tbl_name,有三个文件,如下表:

                                         MyISAM表文件

文件

作用

tbl_name.frm

表格式(定义)文件

tbl_name.MYD

数据文件

tbl_name.MYI

索引文件

 


  
例如:创建teacher教师表,存放教师有关信息,可输入如下命令:

            mysql>create  table  teacher (

                    teacherID  varchar(10)  not  null

                    name  varchar(20)  not  null

                    sex  char(1)  default  'm'

                    birthday  date

                    department  char(20)

                    primary  key  (teacherID)

                    )

          创建完成后,可以使用describe命令查看所创建表的结构:

             mysql>describe  teacher

 【复制表】

   MySQL中,可以使用以下语句复制表结构:

         mysql>create  table  新表名 like  源表名

   该语句对表的复制,不仅包含表结构,还包含表中的数据和键。

   例如:将表teacher复制为另一个表teacher_table,可以输入如下命令:

         mysql>create  table  teacher_table  like  teacher

 【删除表】

   MySQL中,可以使用以下语句删除一个或多个已创建的表:

         mysql>drop  table  表名1[,表名2....]

   一旦drop table语句执行后,表结构和表中的数据都将被删除。

   例如:删除上例复制的teacher_table表,可以使用以下命令:

         mysql>drop  table  teacher_table

         mysql>show  tables      

 【修改表】

   修改表是指对表结构的改动,包括添加,删除,修改字段,更改表名或类型等。使用“Alter”语句,基本语法格式为:

         mysql>alter  table  表名  操作1[,操作2....]

   这些操作包括addchangemodifydroprename等。下面通过举例说明

  例如:在teacher表中增加一个字段email,可以使用add命令:

         mysql>alter  table  teacher  add  email  varcher(20)

         mysql>describe  teacher

  例如:将teacher表中的email字段改名为fax,并把类型设置为text,可以使用change命令:

         mysql>alter  table  teacher  change  email  fax  text

         mysql>describe  teacher

  例如:将teacher表中的department字段名称改为dept,同样可以使用change命令:

         mysql>alter  table  teacher  change  department  dept  char(20)

         mysql>describe  teacher

  例如:将teacher表中的dept字段的类型改为varchar,可以使用modify命令:

         mysql>alter  table  teacher  modify  dept  varchar(20)

         mysql>describe  teacher

  例如:将teacher表中的fax字段删除,可以使用以下drop命令:

         mysql>alter  table  teacher  drop  fax

         mysql>describe  teacher

  例如:将teacher表的表名改为teacher_info,可以使用rename命令:

         mysql>alter  table  teacher  rename  to  teacher_info

         mysql>show tables

(3)处理表的数据

   在创建了数据库和表之后,需要对表中存储的数据进行进一步的处理,常见的SQL操作包括插入,删除,修改表中的记录。

 【插入记录】

   MySQL中,向表中插入/添加记录应使用以下格式的SQL语句:

         mysql>insert  into  表名(字段名1,字段名2....)  values  (字段1的值,字段2的值,....)

   例如:向teacher表中插入/添加一条记录可以使用如下的命令:

         mysql>insert into teacher(teacherID,name,sex,birthday,dept)

                 values ('1001','Kelly','m',' 1964-11-26','computer')

         mysql>select  from  teacher

   在使用insert语句时,应注意以下几个问题:

   ·如果在insert语句中给出了要插入记录的各个字段名,那么字段值的顺序要与所给出的字段名的顺序相同,但可以与表中实际的字段

     顺序不同。但如果insert语句中没有给出各个字段名,则字段值的顺序就应该与表中字段的顺序相同。

   ·对于在insert语句中既没有给出字段名,也没有给出字段值的字段,在插入表时,该字段的值自动设置为默认值。

   ·当在一个独立的insert语句中使用多个values子句时,表示插入多条记录。

   例如:向teacher表中再插入一条记录,但没有给出sex字段名,其字段值将自动设置为默认值:

         mysql>insert into teacher(teacherID,name,birthday,dept)

                 values ('1002','Sullivan','1976-1-18','computer')

         mysql>select  from  teacher

   例如:向teacher表中插入多条记录,在insert语句中使用多个values子句,中间用逗号隔开即可:

         mysql>insert into teacher(teacherID,name,sex,birthday,dept)

                 values ('1003','tjj1','m','1981-11-26','computer')('1004','tjj2','m','1982-10-12','computer')

                        ('1005','tjj3','m','1983-01-21','computer')

         mysql>select from  teacher

 【修改记录】

   修改记录是更新表中数据的手段,MySQL使用update语句修改记录,基本格式为:

         mysql>update  表名  set  字段名1=字段值1 [,字段名2=字段值2....]

   例如:将teacher表中的name字段值为‘Kelly’的记录,将其sex字段值改为‘f’,可以使用如下SQL语句:

         mysql>update  teacher  set  sex=f where  name=Kelly’;

 【删除记录】

   MySQL中,用以下格式的SQL语句从表中删除记录:

         mysql>delete  from  表名  where  条件表达式;

   使用where子句的delete语句可以删除与指定条件相匹配的一条或多条记录。

   例如:要删除teacher表中teacherID为‘1002的记录,SQL语句为:

         mysql>delete  from  teacher  where  teacherID=1002

   如果要删除表中的所有记录,可使用不带where子句的delete语句,SQL语句为:

         mysql>delete  from  teacher

   此外,truncate语句也可以完成删除表中所有记录的功能,SQL语句为:

         mysql>truncate  table  teacher

   注意delete语句与truncate语句两者的区别在于,delete语句依次删除表中的每条记录,而truncate语句先删除表结构再新建表,

         因此,在删除包含大量数据的表时,truncate语句的处理速度更快。

(4)建立索引

   建立索引的目的是为了加快数据据查询的速度。MySQL允许用户为一个表的特定字段设置索引。可以在创建表时直接建立索引,也可以

   通过create index语句向已存在的表中添加索引。 

 【在创建表时建立索引】

   在创建表时,可以使用index子句或unique子句创建索引。

   例如:创建一个表名为schedule的日程表,并将日程编号sno字段定义为主键,同时为日程名称sname字段创建一个名为

         index_sname的索引。

         mysql>create  table  schedule (

                 sno  varchar(10)  not  null

                 sname  varchar(20)  not  null

                 book  varchar(20)

                 primary  key(sno)

                 index  index_sname(sname)

                 )

   若将index语句换为unique语句,则创建的索引类型为unique,此索引要求索引字段中的值必须是唯一的,也就是说,表中各个

   记录中该字段的值不能相同。(可防止某字段有重复的记录出现)

 【向已存在的表中添加索引】

   向已存在的表中添加索引应使用create index语句,其基本格式如下:

         mysql>create  [unique]  index  索引名  on  表名  (字段名1  [(长度)....]);

 

   例如:为teacher表中的name字段创建名为index_name的索引,可以使用以下命令:

         mysql>create  index  index_name  on  teacher  (name)

   如果在创建索引时没有指定索引名,则MySQL会自动使用索引所在字段的字段名作为索引名。

 【删除索引】

   要删除索引,可以使用drop index语句,其基本格式为:

         mysql>drop  index  索引名  on  表名;

   例如:要删除teacher表中索引名为index_name的索引,可以使用以下命令:

         mysql>drop  index  index_name  on  teacher

阅读(1728) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~