1、查询某个变量
status或者show variables like ‘%你变量的一部分%’
2.查看创建语句
show create database databasename;
show create table tablename;
3、字段增加属性
比如:table student 下的s_name 增加注释
alter table student change column s_name s_name varchar(4) comment'小孩子';
4、change与modify的区别
1、change可以修改字段名,modify不可以
2、change修改字段名时需要写出新的字段名,即使不变,也需要重写一遍,modify不需要
alter table student change s_id s_id int(3);
alter table student modify s_id int(3);
5、mysql自增长主键,删除数据后,将主键顺序重新排序
1,删除原有主键:
ALTER TABLE `table_name` DROP `id`;
2,添加新主键字段:
ALTER TABLE `table_name` ADD `id` int NOT NULL FIRST;
3,设置新主键:
ALTER TABLE `table_name` MODIFY COLUMN `id` int NOT NULL AUTO_INCREMENT,ADD PRIMARY KEY(id);
6、MySQL创建相同表和数据命令
创建和表table结构和数据一样的表newtable
create newtable like table;
复制表数据到新表
insert into newtable select * from table;
7、mysql两张表一起查询
select *from table1 table2;
8、当创建好数据表时添加外键约束
添加的两个要求:
1、添加的外键与主表的主键
2、具有主键约束或者唯一性约束(可以通过alter table tbname add unique(column);来添加)
如果要添加的外键已经有数据,那么如果对应数据一致可以添加成功,如果不一致,可以删除后重现添加。
alter table user add foreign key(key) references table(uid);
删除外键约束命令为:
alter table tablename drop foreign key foreignkeyname;
可以添加级联属性,即在外键的声明语句后面添加update/delete
但是foreign key的名字是通过show create table命令查看的下列语句中的studentlearn_ibfk_1,而不是s_id
CONSTRAINT studentlearn_ibfk_1
FOREIGN KEY (s_id
) REFERENCES student
(s_id
)
10、添加自增属性
需要的两个条件:
1、值不能为空
2、必须为键(主键)
不为空添加自增属性的命令是
alter table tablename modify column columnname int not null auto_increment;
为了同时满足两个条件可以用
alter table tablename modify column columnname int not null auto_increment primary key;
11、查看是否使用索引
只需要在select之前加入explain
explain select *from tablename where id=1;
12、主键和唯一键之间的主要区别
1、当一个属性声明为主键时,它将不接受NULL值。声明为Unique的属性时(包含的值不能重复,1,2可以1,1就不行),但它可以接受一个NULL值,并且可以有多个null值。
2、表中只能有一个主键,但可以有多个唯一键。
3、定义主键时自动创建聚簇索引。相反,Unique键生成非聚集索引。
13、唯一性约束
DROP INDEX indexname ON tablename;
13、外键依赖造成删除数据出错
MYSQL: Cannot delete or update a parent row: a foreign key constraint fails
这可能是MySQL在InnoDB中设置了foreign key关联,造成无法更新或删除数据。
通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。
SET FOREIGN_KEY_CHECKS = 0;
删除完成后设置
SET FOREIGN_KEY_CHECKS = 1;
14、修改表字符集
ALTER TABLE tablename CHARACTER SET utf8;15
15、有NULL参与的计算结果都为NULL
可以使用IFNULL函数IFNULL(a,b)
a是要查询的字符,b表示查到NULL的替换值,如
IF NULL(age,1)
表示把查到的年龄中的NULL替换为1
16、在特定位置增加列
mysql> alter table t add column name varchar(20) after age;