日期:2014-05-16  浏览次数:21053 次

mysql的一点点笔记
--------------------------------
创建数据库:
create database dbname

显示数据库

Show databases
--------------------------------
选择数据库:use dbname
--------------------------------
删除数据库:drop database dbname
--------------------------------
表的创建、复制、删除、和修改
1、创建表:create table tname 字段名 字段类型 字段约束
字段类型有:

int:整形数 

double :双精度浮点数
char :最大长度不超过255个字符的定长字符串
varchar :最大长度不超过255个字符的变长字符串
text :最大长度为65535的字符串
blob :可变数据的二进制类型
date :YYYYMMDD格式表示的日期值

字段约束
1、null or not null指定允许(或不允许)某字段为空,默认为null
2、default 为某字段指定一个默认值
3、auto_increment 自动为某个int字段生成一个递增加1的整数

表级约束
1、primary key:为表指定主键
2、foreign key:为表指定外键
3、index:创建索引
4、unique:为某个字段建立索引,该字段的值必须惟一
5、fulltext:为某个字段建立全文索引

表类型
1、myisam:具有很多优化和增强的特性,是mysql默认的表类型
2、isam:类似myisam,但是功能较少
3、heap:保存在内存中,存取速度快,但存储容量较小,一旦失败就无法恢复
4、bdb:支持事物和页锁定
5、innodb:支持事物、外键和行锁定,它是mysql中最完善的表格式
6、merge:可把多个myisam表构建为一个虚拟表,使得对这些表的查询仿佛在一个表上进行,提高了查询速度和修复效率,并节省了磁盘空间。
------------------------------------------
describe tname 查看所创建表的结构。
注意1、mysql默认将表中第一个字段设为 主键(不变的、惟一的标识符)
2、mysql默认表的类型为myisam
------------------------------------------
复制表
create 新表名 like 源表名;
show tables(显示当前数据库中所有的表)
------------------------------------------
删除表
drop table 表名称
------------------------------------------
修改表
alter table 表名称 更改动作1,更改动作2···
1、增加字段:
例:在表 xtable 中增加一个字段 saddress
alter table xtable add saddress varchar(25);

2、更改字段名和字段类型:
例:将表xtable中字段saddress名称改为sremark
alter table xtable change saddress sremark varchar(25)
注意,即使仅仅改变xtable中的字段名称而不改变字段类型,change子句后也必须给出该字段的字段类型

3、删除字段:
例:要删除表xtable中的字段sremark
(命令)alter table xtable drop sremark;

4、更改表名称:
例:将student表的名称更改为xs
(命令)alter table student rename to xs;
-----------------------------------------------
表中数据的插入、删除和修改
1、插入记录
在mysql中插入记录
例:在表student中插入一组数据
命令:insert into student (字段名1,字段名2···) values(字段1的值,字段2的值,···)


需要注意的几个问题:
@1:如果在insert语句中给出了要插入记录的各个字段名,那么各字段值的顺序只需与各个字段名的顺序相一致,与表中的顺序(可以用describe命令查看)可以不同。但是当使用缩写格式时,各字段值的顺序则必须与表中的顺序相一致。
在插入与前面相同的记录,可以直接使用insert into student values (字段1的值,字段2的值···)
@2:如果字段名列表中没有给出表中的某些字段,当然在字段值列表中也不应给出这些字段的值,那么这些字段的值将会自动设置为默认值。
@3:在一个单独的insert语句中使用多个values子句,可插入多条记录。


2、删除记录
(命令):delete from 表名称 where 条件表达式
例:删除表student中,sno字段,值为‘0321002’的记录
delete from student where sno=‘0321002’;
使用带where子句的delete语句可以删除与制定条件相匹配的记录。只要满足条件,被删除的记录可能只有一条,也可能有多条。
例:从表student中删除sno字段值的前4位为‘0322’的所有记录。
可以使用:delete from student where left(sno,4)=‘0322’
此外如果想删除表中所有记录,则可以不带where子句的delete命令。
(命令):delete from student;
另外一种删除表中所有记录的方法是使用truncate命令
(命令):truncate table student;
相比之下truncate命令比delete命令要快,特别是在表中记录非常多时尤为明显。


3、修改记录
(命令):update 表名称 set 字段1=字段1值,字段2=字段2值··· where 条件表达式;
例:要修改表student中的sno字段值为‘0321002’的记录,将其sbirthday字段值改为19871112、sdepa字段值改为‘math’。
(命令):update student set sbirthday=19871112,sdepa=‘math’ where sno=‘0321002’;
小心!
使用时千万不要忘掉使用where限制语句,否则可能会发生严重后果。
-----------------------------------------------
索引的创建与删除

1、在创建表的同时创建索引
在使用create table 语句创建表student时,使用primary key 子句为该表指定了一个主键sno,mysql就会自动为该表的sno字段创建索引。此外,在创建表时,还可以用index子句或unique子句来创建索引。
例:要创建一个选课课程表course,将课程编号cno字段定义为主键,同时为课程名称cname字段创建一个名为cna的索引。
(命令):create table cource(
->cno varchar (5) not null,
->cname varchar (30) not null,
->teacher varchar (20),
->primary key (cno),
->index cna (cname)
->);
此外如果将index cna (cname)改为unique(cname),则创建的是unique索引,该索引要求索引字段中的值必须是唯一的。也就是说,表中各条记录中该字段的值不能相同。

2、向已存在的表添加索引
使用create index语句:
create (unique)or index 索引名 on