一.表中的列的操作
1.1 alter table 表名 add 你添加的名字 属性 (默认在最后 你也可以指定在那列的位置 after/first 列名)
1.2 alter table 表名 drop 列名
1.3show 表名
1.4alter table 表名 change 原来的名字 新名字 新类型 新参数;||只修改列类型 alter table 表名 modify 原名字 新类型 新参数
二.表的操作 (直说重要的)
2.1为什么创建表时加上 not null default ‘’/default 0 不想让表中出现NULL
2.2为什么不想让表中出现NULL呢 因为他不好比较NULL是一种类型 比较是只能用is null 和 is not null 来比较 碰到其他的运算符,一律返回NULL影响效果,不利于优化
2.3修改表名 alter table 表名 rename 新的表名
2.4数据库的名字不能修改
2.5删除表 drop table 表名 一旦删除就没有了
2.6truncate与delete的区别 truncate比delete快因为truncate相当于把整张表删除了在重新建一张同样结构的表delete相当于把数据从表中删除掉
2.7字符集与校对集问题 校对集是字符集的排序规则 注意:声明的校对集必须是字符集合法的校对集.
默认建表一般用utf8, 而我们在windows下窗口是GBK的
所以你要告诉数据你是GBK负责会乱码的 你可以用sql语句看看你是用的什么字符集
show variables like '%charact%'; 会出现以下信息最后一条可能不一样
character_set_client | gbk |你用的字符集
character_set_connection | gbk |处理是默认的字符集
character_set_database | utf8 |数据库中用到的字符集
character_set_filesystem | binary |
character_set_results | gbk |返回时用的字符集
character_set_server | gbk |
character_set_system | utf8 |
character_sets_dir | D:\phpStudy\MySQL\share\charsets\
而我们用的set names utf8 是代表我上面标注蓝色的三句话 这跟数据使用什么字符集没有关系
2.8TEXT文本类型 存放比较大的文本搜索速度稍慢如果不是特别大建议用Varchar,char代替 text不用加默认值(加了也没有啊)
2.9Blob类型 是二进制类型 用了存储二进制信息 它主要的作用是防止字符集的问题导致文件信息丢失
2.0.1如果mysql函数和PHP函数都实现某个功能,优先用哪一个? 用php 为什么呢 mysql中的函数肯定要影响查询的速度
如果确实用到函数 比如时间格式化
在mysql里用date_format,在php里用date可以实现优先放在业务逻辑层,即php层处理这样更灵活 提高了查询速度
如果用了mysql自带函数最大的坏处就是则这列索引将无法使用
如果你针对某列作操作,而此次查询,又使用的此列的索引.
此时,速度将显著变慢.