一、修改表结构Intert into 修改表结构会影响表中已有的纪录,一般会在写入纪录之前,备份一下,或者是在表结构修改好之后,再写入表纪录。Alter table 数据库.表名 [ 处理动作 ];
//处理动作:添加新字段 add [ add 字段名 字段类型(宽度) 约束条件 first; ] [ add 字段名 字段类型(宽度) 约束条件 after; ]默认新添加的字段追加在已有字段末尾 First 把新添加的字段添加所有字段的上方 After 字段名 把新字段添加在指定字段名的下方删除字段: dropDrop 字段名;Drop 字段名, drop字段名;修改字段类型 modify[ mydify 字段名1 新字段类型(宽度) 约束条件; ] [ mydify 字段名2 新字段类型(宽度) 约束条件; ] [ mydify 字段名3 新字段类型(宽度) 约束条件; ] 更改字段名 change [ Change 源字段名1 新字段名1 字段类型 约束条件, ][ Change 源字段名2 新字段名2 字段类型 约束条件, ][ Change 源字段名3 新字段名3 字段类型 约束条件; ]修改表名Alter table 源表名 rename to 新表名;#这里修改表名之后,/var/lib/mysql对就的目录/文件也会跟着改变。//alter table 表名 add sex enum(“man”,”woman”) not null default “man” after age;添加在age字段的下面改类型 [ alter table 表 modify 纪录名 tinyint(2) unasigned,] [ modify 纪录名 tinyint(2) unasigned; ]//改类型时将不改变的类型原样写下来。
复制表:[ create table newtablename SQL查询语句; ][ create table newname select * from mysql.user; ]//复制表时,如果源表的Key字段有标识时,则新表不会有key属性,就是说不会被复制过去的。查询指定字段的值:[ select host,user,passwd from mysql.user; ]//查询host user passwd这三个类型,其它的不看。
复制源表的表结构[ Select * from 表名 where 字段=”所有值”; ]没有所指纪录,则只剩下空表,及表结构。 [ create table newtablename SQL没有查询结果的语句; ]//查询到的没有结果,那么只会有表结构,复制即可。
二、Mysql索引类型表中的索引,由Key来显示。1,什么是索引 //相当与书的目录写入慢,读取快。索引算法:排列的方式。2,索引的优缺点 优点:加快查询表记录的速度 缺点:会减慢对表记录写(insert update delete)的速度。 索引会占用磁盘空间。 默认情况下会将索引信息存储在 tablename.MYI 保存表索引信息文件tablename.MYD 存放表内的记录,即数据Tablename.frm 存放表结构3,怎么查看表里是否有索引字段[ desc tablename; ] KEY字段。4,怎么查看索引信息 [ show idex from dataname.tablename ] 索引类型 索引字段 索引算法(BTREE)default (B+TREE) hashBTREE(二叉数据算法) 100 1~50 51~100 1~25 26~501~12.5 12.6~255,Mysql支持哪些索引普通索引 index //掌握唯一索引 unique 主 键 primary key //掌握外 键 foreign key //掌握全文索引 fulltext创建普通索引字段1、一个表中可以把多个字段设置为了INDEX字段2、INDEX字段值可以重复3、把经常做查询条件的字段设置为INDEX字段4、INDEX字段的KEY标志是MUL//select 字段,字段,字段 from 表名 where 字段=“XXX”
建表时就创建INDEX字段;Create table 表名(Name varchar(10),Age int(2),Sex enum(“doy”,”gril”) default(“boy”Index (name)//如果要两个索引字段,则再在此处加上即可。也可以”index(name,ID)”);在已有的表内添加INDEX字段。Create index 索引名 on 表名(字段名列表);//索引名一般为字段名。 表名,字段列表则要把那个字段做为INDEX字段。MUL = index查看索引名// show index from 表名;...KEY name...删除索引Drop index 索引名 on 表名; 创建唯一索引一个表中可以有多个unique字段Unique字段值不可以重复Unique字段key标志是UNIUnique字段值允许为NULL,当修改为不允许为NULL时字段限制与主键相同在已有的表中设置unique字段Create unique index 索引名字 on 表名(字段名)Create unique index 索引名字 on 表名创建主键字段-primarykey字段的值不可以重复一个表中只可以有一个primarykey字段当多个字段都做primarykey字段时,叫复合主键,要在建表时一起创建在复合主键的字段,只要字段值不同时重复就可以 Primarykey通常与auto_increment连用//不是主键,不能设置auto_increment功能。要想删除主键功能,则先删除auto_increment。Primarykey字段标志位为PRI删除字段的空值:[ Delete from 表名 where 字段 is null; ]修改t30表的stu_id做主键[ alter table t30 add primary key(stud_id); ]//想让多个字段做主键字段,叫复合主键,只能在建表时一起创建。指定当前值自动增长值+1
[ Alter table t50 modify id int(2) not null auto_increment; ]//即使用字段被删除了,还会接着之前的编号。[ Alter table t40 drop primary key; ]//删除主键功能,(没有自动增长功能)[ Alter table t50 modify id int(2) not null; ][ Alter table t50 drop primary key; ]//先取消自动增长,再删除主键功能重复主键:两个主键的内容不完全一样,就可以写进记录。//创建重复主键mysql> create table sername( -> ip varchar(15), -> port varchar(5), -> sername varchar(10), -> status enum("deny","allow") default "deny", -> primary key(ip,port) -> );普通索引 index唯一索引 unique主 键 primary key创建 查看 删除 使用外 键 使用外键 foreign key多个表中的字段产生关联关系。创建外键字段:Foreign key(当前表里的字段名) references 别一个表名(表名里的字段名)on update cascade //同步更新on delete cascade //同步删除使用外键的条件: 1、表使用的存储引擎要是innodb存储引擎。 2、外键字段的类型要匹配 //两个表内的字段要关联的 3、被参照的字段要有明确的索引(index primary key)6,如何在表里设置索引字段。7,如何删除表中字段的索引