免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1131 | 回复: 0
打印 上一主题 下一主题

MySQL命令大搜集(不断更新ing):第5次更新 更新日期:06-06-25 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-28 18:10 |只看该作者 |倒序浏览

希望更多高手多多帮忙补充,有更多高级命令回帖即可,谢谢各位。
注意:每条命令结尾可以用分号“;”结束也可以用“\g”结束。
1:查看版本号和当前日期: select version(),current_date();
2:查看mysql当前数据库: show databases;
3:查看mysql当前表: show tables;
   当表太多,想找到是否有此表的时候可以用like关键字:
   show tables like '%field%';
4:指定要使用的数据库: use DBName;
5:创建一个新的数据库   
      create database database_name;
      create database if exists db_name;
6:创建一个新表
   create table table_name (字段1 类型(类型长度),字段2 类型(类型长度),...,primary key (字段));  
   其中primary key是指定主键,还可以使用unique修饰字符指定输入字段的值是唯一的,即值不能重复。AUTO_INCREMENT修饰符表明MySQL要将为这个字段自动生成一个数字,该修饰符只适用于数字字段

7:修改表
   alter table table_name add new_field new_field_type;
   alter table table_name modify old_field new_field_type;
8:删除表或数据库
   drop table table_name;
   drop database db_name;    //将删除指定数据库所有表和目录
   drop database if exists db_name;  //避免删除不存在的库
9:插入字段:
   两种形式,1)指明字段 2)不指明字段,这种情况下字段名顺序和创建表时候顺序一样。
   insert into table_name (field1,field2,...,fieldn) values (value1,value2,...,valuen);
其中(field1,field2,...,fieldn)可选,或者一次输入多条记录
   insert into table_name values (value1,value2,...,valuen),(value1,value2,...,valuen),...,(value1,value2,...,valuen);

10:删除表记录:
    delete from table_name;
    这将产出表中所有记录。也可以使用where子句删除指定行
    delete from table_name where field_name = value;
11:更新字段
     update table_name set field_name=value;  更改该字段所有值
     也可以象delete语句一样使用where子句,这里就不重复了。但要注意的是,可以修改多个字段,如:
     update table_name set field_one=ValueOne, fiele_two=ValueTwo where field_name=Value;
     要修改的字段之间用逗号分开

12:mysql中可以用的6个比较预算符:
    =、>=、、
13:
排序和限制结果集
使用Limit关键字,可以限制结果集中记录个数,该关键字有两个参数,用来指定开始的行位置和要显示行的个数,注意第一行数为0;还可以联合order by使用
Eg:select * from table_name  order by desc limit 0,2;
得到最新的两个数据

14:修改自增字段起始值
     ALTER TABLE TABLE_NAME AUTO_INCREMENT=VALUE;
15:查看表字段信息
     desc table_name;
     describe table_name;
16:算术运算符:
用字符串表示的数字在任何可能便于计算的地方都被自动转换为数字。有两个基本规则:
1)  如果第一位是数字的字符串被用于一个算是运算中,那么它被转换为这个数字的值。
2)  如果一个包含字符和数字的混合字符串不能被正确的转换为数字,则被转换成0。
Eg:
mysql> select '400'+'002','123a'+'33','adf12'+'223a','1a2'+'asdfa2';
+-------------+-------------+----------------+----------------+
| '400'+'002' | '123a'+'33' | 'adf12'+'223a' | '1a2'+'asdfa2' |
+-------------+-------------+----------------+----------------+
|         402 |         156 |            223 |              1 |
+-------------+-------------+----------------+----------------+

6月10更新
DATABASE():返回当前数据库名称
USER():当前用户
VERSION():当前MySQL版本信息
CONNECTION_ID():检索访问服务器的客户端的连接ID,而LAST_INSERT_ID()返回向AUTOINCREMENT字段插入数据时又MySQL自动产生最后一个ID。
MySQL还有三个特意为实现客户之间的应用层锁定设计的函数,这些客户是运行在单个机
器上的。具体函数如下:
GET_LOKC(,):有两个参数,锁定的名字和持续的时间(秒),然后尝试创建具有那个名
字的锁定,并指定秒数。如果成功返回1,否则返回0或者NULL。
RELEASE_LOCK():解锁。成功1,失败0错误NULL
IS_FREE_LOCK():检查给定名字的锁定是否存在,根据这个锁定是自由的或者是正在使用的情况返回1或0

注意:任何时候都不能有多于一个的锁定处于活动状态,多次调用GET_LOCK()将释放前
面产生的锁定。
Eg:
mysql> select get_lock('20040610',60);
+-------------------------+
| get_lock('20040610',60) |
+-------------------------+
|                       1 |
+-------------------------+
1 row in set (0.00 sec)

mysql> select get_lock('20050610',60);
+-------------------------+
| get_lock('20050610',60) |
+-------------------------+
|                       1 |
+-------------------------+
1 row in set (0.00 sec)

mysql> select release_lock('20040610');
+--------------------------+
| release_lock('20040610') |
+--------------------------+
|                     NULL |
+--------------------------+
1 row in set (0.01 sec)

mysql> select release_lock('20050610');
+--------------------------+
| release_lock('20050610') |
+--------------------------+
|                        1 |
+--------------------------+
1 row in set (0.00 sec)
这三个函数使多个MySQL客户的同步活动变得非常容易,使用普通锁定的客户可以使用这
些函数避免和其他用户混淆。

6月15日更新
字段约束
NULL和NOT NULL修饰符
可以在每个字段定义后面放置NULL或NOT NULL来指定该字段是否可以为空还是不许添上数据。默认情况下MySQL指定为NULL。如果字段被指定为NOT NULL,则不允许向该字段插入空值,但是在自增列和TIMESTAMP字段中,这个规则并不适用;向这些字段插入NULL值,将会导致插入下一个自动增加的值或者当前时间戳。
DEFAULT修饰符
指定一个默认值。当插入记录时,如果没有向字段中插入值就会使用默认值。
Eg: mysql> create table MemberShips (User varchar(6) NOT NULL,dept varchar(25) default 'MS');
     insert into Memberships values ('Ross');
注意:如果该字段没有指定DEFAULT修饰符,MySQL会依据这个字段是NULL还是NOT NULL自动设置默认值。如果指定字段可以为NULL,MySQL默认插入NULL。如果为NOT NULL字段,MySQL对于数值类型插入0,字符串类型插入空字符串,时间戳类型插入当时日期和时间,ENUM类型插入枚举组的第一条。
AUTO_INCREMENT
    MySQL表只能有一个该字段,而且这个字段必须被定义为键(PRIMARY KEY)

6月25日更新:
索引
索引:为了加快搜索速度,减少查询执行时间。用来简化查询中定位特定记录的任务。可以很大程度上提高速度。
通过create table语句中添加index修饰符来创建索引,
   Eg:  create table Stocks (aaa int, bbb int, index a (aaa));             //单个索引
        Create table Another(id int not null auto_increment, fname varchar(5) not null, lname varchar(5) not null, index (fname), index (lname), primary key (id));    //多个索引
通过连接所有被索引的字段(最多不能超过15个)创建的多个索引,可以用逗号间隔字段
名来创建,如:
Create table Another(id int not null auto_increment, fname varchar(5) not null, lname varchar(5) not null, index (fname, lname), primary key (id));
添加索引:
    Create index index_name on table_name (field_name1,field_name2,…);
对于BLOB  TEXT字段可以强制性指定字符个数来为他们添加索引。这可以通过向create
Index 语句中的字段后的圆括号中插入需要的索引长度来实现;
Eg:create index synopsis on books (synopsis(100));
CHAR 和 VARCHAR也可以如此
注意:如果没有指定索引名字,MySQL自动指定相应字段名为索引命名。
删除索引:DROP INDEX INDEX_NAME ON TABLE_NAME;
除了常规索引,MySQL还支持另外两种索引:UNIQUE和FULLTEXT索引。
UNIQUE索引
用来指定输入字段中的值必须是唯一的,也就是不能与其他行重复。
注意:unique字段允许存储NULL值
FULLTEXT索引???????????????????????????????(不理解,哪位明白的给讲讲)
它是为MyISAM表中进行全文检索而特意设计的,称为FULLTEXT索引。可以对纯文本字
符串中已经经过索引的列进行查询,并且只返回那些包含与搜索字符串类似的记录。



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/15276/showart_119338.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP