zoukankan      html  css  js  c++  java
  • 对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("要插入的字符串") 就可以避免反斜杠被数据库去掉

  • 相关阅读:
    poj3617Best Cow Line
    Apache Thrift的简单使用
    UIControl-IOS开发
    怎样学习嵌入式
    JAVA学习第六十二课 — TCP协议练习
    腾讯2014年实习生招聘笔试面试经历
    一分钟明确 VS manifest 原理
    国外破解站点大全
    Android 4.4 KitKat NotificationManagerService使用具体解释与原理分析(一)__使用具体解释
    linux中fork()函数具体解释(原创!!实例解说)
  • 原文地址:https://www.cnblogs.com/nyist-xsk/p/7263932.html
Copyright © 2011-2022 走看看