对mysql数据库表的相关操作

虫师博客(Python使用MySQL数据库(新)): https://www.cnblogs.com/fnng/p/3565912.html

1.更改表的结构,增加一个字段放置新增的属性

alter table table_name add column_name type

2.更改已经建立的数据库属性的数据类型

alter table table_name modify column_name newtype

3.修改表的列属性名

alter table 表名 change 原列名 新列名 类型;

4.删除表的某一列

alter table 表名 drop 列名;

5.mysql删除表中的某一行(假设n到m,表的行号是从0开始的),此时一定要存在主键,这里假设为id,table_name是你建立的数据库表

delete from table_name where exists(select *from (select id from table_name limit n,m)as a where a.id=table_name.id);

6.修改表名

alter table 表名 rename 新表名;

或者

rename table 原表名 to 新表名;

7.删除表内的数据,但并不删除表本身

TRUNCATE TABLE table_name

8.给已经建立的表创建一个 auto-increment 字段:

AUTO_INCREMENT 会在新记录插入表中时生成一个唯一的数字(自动增加,单调,可以跳过一段数字,但是不可以和表中已有的数字重复)

alter table table_name change column_name newcolumn_name new_type not null auto_increment primary key;

让 AUTO_INCREMENT 序列以其他的值起始(假设是n):

ALTER TABLE table_name AUTO_INCREMENT=n;

注意:给已有表新建 auto_increment 的那一列一定要是主键,不然会报错

9.mysql查询数据库中各表的主键、自增标识

查询数据库中所有表的自增主键:

SELECT
t.TABLE_NAME,
c.COLUMN_NAME,
ts.AUTO_INCREMENT
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS t,
information_schema.TABLES AS ts,
information_schema.KEY_COLUMN_USAGE AS c
WHERE
t.TABLE_NAME = ts.TABLE_NAME
AND ts.TABLE_NAME = c.TABLE_NAME
-- AND t.TABLE_SCHEMA = 数据库名称
AND t.CONSTRAINT_TYPE = 'PRIMARY KEY'
ORDER BY ts.AUTO_INCREMENT DESC;

查询数据库中所有表的主键及数量:

SELECT
t.TABLE_NAME,
t.CONSTRAINT_TYPE,
c.COLUMN_NAME,
c.ORDINAL_POSITION
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS t,
INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS c,
information_schema.TABLES AS ts
WHERE
t.TABLE_NAME = c.TABLE_NAME
-- AND t.TABLE_SCHEMA = 数据库名称
AND t.CONSTRAINT_TYPE = 'PRIMARY KEY';

举个例子:

select k.column_name
from information_schema.table_constraints t
join information_schema.key_column_usage k
using(constraint_name,table_schema,table_name)
where t.constraint_type='primary key'
and t.table_schema='test'
and t.table_name='person';

改变一个字段的默认值

alter table table_name alter column_name set default new_value;

mysql 修改、添加、删除表主键:

在我们使用mysql的时候,有时会遇到须要更改或者删除mysql的主键,我们能够简单的使用alter table table_name drop primary key;来完成。以下我使用数据表table_test来作了样例。

1、首先创建一个数据表table_test:

create table table_test(
"id" varchar(100) NOT NULL,
"name" varchar(100) NOT NULL,
PRIMARY KEY ("name")
)ENGINE=MyISAM DEFAULT CHARSET=gb2312;

2、如果发现主键设置错了,应该是id是主键,但如今表里已经有好多数据了,不能删除表再重建了,仅仅能在这基础上改动表结构。

先删除主键

alter table table_test drop primary key;

然后再增加主键

alter table table_test add primary key(id);

注:在增加主键之前,必须先把反复的id删除掉。

ubuntu 进入数据库 mysql -h localhost -u root -p密码

以降序的顺序把表中的某列记录列出来: select table_columns_name from table order by table_columns_name desc;

以升序的顺序把表中的某列记录列出来: select table_columns_name from table order by table_columns_name asc;

判断一个数据库是否已经存在某一个表(名):

select table_name from INFORMATION_SCHEMA.TABLES where table_name = "xxx" and TABLE_SCHEMA = "数据库名";

如果表中有某个数据有很多个,要统计个数,可以用如下语句:

select column_name , count(column_name) from table_name group by column_name having count(column_name) >=1;

1.查看数据库编码格式
show variables like 'character_set_database';

2.查看数据表的编码格式
show create table <表名>;

3.创建数据库时指定数据库的字符集
create database <数据库名> character set utf8;

4.修改数据库的编码格式
alter database <数据库名> character set utf8;

5.修改数据表格编码格式
alter table <表名> character set utf8;

6.修改字段编码格式
alter table <表名> change <字段名> <字段名> <类型> character set utf8;
例如:
alter table user change username username varchar(20) character set utf8 not null;

7.添加外键
alter table tb_product add constraint fk_1 foreign key(factoryid) references tb_factory(factoryid);
alter table <表名> add constraint <外键名> foreign key<字段名> REFERENCES <外表表名><字段名>;

8..删除外键
alter table tb_people drop foreign key fk_1;
alter table <表名> drop foreign key <外键名>;

MySQL 如何删除有外键约束的表数据

今天删除数据库中数据,提示因为设置了foreign key,无法修改删除
可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。
SET FOREIGN_KEY_CHECKS=0;

删除,更新数据,

恢复外键

SET FOREIGN_KEY_CHECKS=1;

查看当前 FOREIGN_KEY_CHECKS的值

SELECT @@FOREIGN_KEY_CHECKS;

如果忘记了这一句(SET FOREIGN_KEY_CHECKS=1;) 也没关系, 当你关闭了客户端,重新建立连接的时候,这个变量会恢复默认值。

mysql数据库删除数据后,数据自增id断点不连续

mysql数据库表"xxx"中id设置主键自增,删除结尾处数据后,重新插值字段id取值不连续,解决方法:
alter table xxx AUTO_INCREMENT=10;(此处10改为自己的断点即可)

在往数据库中进行插入操作的时候,为了防止反斜杠被mysql数据库自动去掉, 可以使用MySQLdb.escape_string("要插入的字符串") 就可以避免反斜杠被数据库去掉

posted @ 2017-07-31 16:37  xushukui  阅读(294)  评论(0编辑  收藏  举报