建表

  • 先讲一下常规建表:

    CREATE TABLE testCreate
    (
    id int(10) NOT NULL auto_increment,
    time int(10) NOT NULL,
    type tinyint(2) NOT NULL,
    name varchar(20) default null,
    user_id mediumint(8) NOT NULL,
    PRIMARY KEY(id),
    index(id),
    index(type)
    )ENGINE=INNODB DEFAULT CHARSET=utf8;
  • 设置主键、自增、默认值及不太常见的将索引放在建表的操作中,下面要提到的是从已存在的表选取数据建新表:
    CREATE TABLE test
    (
    a INT NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (a), KEY(b)
    )ENGINE=MyISAM SELECT b,c FROM test2;

添加/删除字段

  • 我这里要讲的不是常规的增加字段,而是在指定某个字段后面添加新的字段,如:

    ALTER TABLE table_name ADD COLUMN mainId VARCHAR(36) DEFAULT NULL AFTER id;
  • 但值得注意的是,mysql似乎不支持在某个字段前面添加字段,虽然before也是关键字,但:
    ALTER TABLE table_name ADD COLUMN mainId VARCHAR(36) DEFAULT NULL before caption
  • 这种写法就通不过。那么我想要在表头添加一个新字段怎么办呢,那需要用到下面的 sql 了:
    ALTER TABLE table_name ADD id INT(8) auto_increment PRIMARY KEY FIRST;
  • 顺带提一下删除某个字段: ALTER TABLE table_name DROP COLUMN mainId;

  之所以强调在某个特定字段后和在表头添加新字段,是因为用程序处理数据表的时候,会经常以表中字段的顺序号作为处理的切入口,而不是以字段名。同时,我们会经常对一些表添加 id 或者 uuid 以方便对数据表的处理,那为了让程序准确地拿到它们,我们尽量将其放在表头,减少不必要的麻烦。

修改表中某个字段的排序规则

  • 我们在做关联查询或建表的时候经常会碰到做关联的字段排序规则不一样的情况(仅针对varchar、text等类型),这时候我们可以利用如下sql进行修改:

    ALTER TABLE vehicletype MODIFY name VARCHAR(100) COLLATE utf8_general_ci;

  这种方式就是在修改某个字段的数据类型的语句后面加上一点东西,可能客户端改更方便,但当处理到那些几十万上百万的大表的时候,客户端改表结构的操作简直就是自找麻烦,因为这种操作经常会导致客户端卡死,必须强制终止程序,而强行终止客户端是没办法确定数据库服务器是否已经做了响应,因为指令已经发出。因此,我会尽可能地将这些操作都做成命令行。

mysql数据库——特殊sql语句整理之修改表结构的更多相关文章

  1. Oracle,SQL Server 数据库较MySql数据库,Sql语句差异

    原文:Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 1.关系型数据库 百度百科 关系数据库 ...

  2. mysql(数据库,sql语句,普通查询)

    第1章 数据库 1.1 数据库概述 l 什么是数据库 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作. l 什 ...

  3. MySQL数据库:SQL语句基础、库操作、表操作、数据类型、约束条件、表之间的关系

    数据库相关概念: 1. 数据库服务器:运行数据库管理软件的计算机 2. 数据库管理软件:MySQL.Oracle.db2.slqserver 3. 库:文件夹,用来组织文件/表 4. 表:文件(类似于 ...

  4. 在sql设计中没法修改表结构

    在做练习的时候经常表没设计好,后来有要去数据库修改表结构但是没词用界面修改的时候都会提示要保存 转自http://www.57xue.com/ItemView/Sql/2016061600160.ht ...

  5. SQL Server2008不允许修改表结构解决办法

    1.修改表结构遇到 2.点击取消 3.打开[工具]—[选项] 4.找到[Desiginers]标签,在右边找到“阻止保存要求重现创建表的更改”,取消勾选.

  6. Python操作Mysql数据库时SQL语句的格式问题

    一.概述 近日使用Python对Mysql数据库进行操作,遇到SQL语句死活出问题的情况.由于最初没有将异常打印出来,一直不知道原因.随后,将异常打印出来之后,通过异常信息,对代码进行修改.最终,成功 ...

  7. mysql数据库基础SQL语句总结篇

    常用的sql增删改查语句 创建数据库:create database db_name character set utf8;删除数据库:drop database db_name;切换数据库:use ...

  8. MYSQL 数据库高频查询语句整理

    一查询数值型数据: SELECT * FROM tb_name WHERE sum > 100; 查询谓词:>,=,<,<>,!=,!>,!<,=>,= ...

  9. Python连接MySQL数据库执行sql语句时的参数问题

    由于工作需要,今天写了一个Python小脚本,其中需要连接MySQL数据库,在执行sql命令时需要传递参数,结果出问题了.在网上查了一下,发现有以下几种方式传递参数: 一.直接把sql查询语句完整写入 ...

随机推荐

  1. 本地存储和vuex使用对比

    1. sessionStorage sessionStorage 方法针对一个 session 进行数据存储.当用户关闭浏览器窗口后,数据会被删除. 用法: 储存: 1. 点(.)运算符        ...

  2. SCRUM 是一个用于开发和维护复杂产品的框架

    转自:http://www.scrumcn.com/agile/scrum-knowledge-library/scrum.html#tab-id-1 Scrum 是一个用于开发和维护复杂产品的框架 ...

  3. PHP 求两个日期之间相差的天数、月数

    <?php /** * 求两个日期之间相差的天数 * (针对1970年1月1日之后,求之前可以采用泰勒公式) * @param string $day1 * @param string $day ...

  4. Python学习记录6-list、tuple、dict、set复习

    数据类型在一门语言中是非常重要的,所以选择再次学习一下加深记忆.本次主要参考了大神廖雪峰的官方网站,非常感谢大神,讲的很清晰,收获很大. 标准数据类型 Number(数字) String(字符串) L ...

  5. web开发:javascript基础

    一.js引入 二.变量的定义 三.三种弹出框 四.调试方式 五.数据类型 六.数据类型转换 七.运算符 八.分支机构 九.循环结构 十.异常处理 十一.函数 一.js引入 - ES: ECMAScri ...

  6. C#Socket编程(一)简介

    一.TCP与UDP简介 https://blog.csdn.net/subin_iecas/article/details/80289513 二.单播.多播.广播 https://blog.csdn. ...

  7. Raid0、Raid0+1、Raid1、Raid5四者的区别

    RAID,可以把硬盘整合成一个大磁盘,还可以在大磁盘上再分区,放数据还有一个大功能,多块盘放在一起可以有冗余(备份)RAID整合方式有很多,常用的:0 1 5 10 Raid0Raid0是所有raid ...

  8. python之collections模块(nametuple,Counter)

    前言: import collections print([name for name in dir(collections) if not name.startswith("_" ...

  9. CodeForces 839B - Game of the Rows | Codeforces Round #428 (Div. 2)

    血崩- - /* CodeForces 839B - Game of the Rows [ 贪心,分类讨论] | Codeforces Round #428 (Div. 2) 注意 2 7 2 2 2 ...

  10. is(expr|obj|ele|fn)

    is(expr|obj|ele|fn) 概述 根据选择器.DOM元素或 jQuery 对象来检测匹配元素集合,如果其中至少有一个元素符合这个给定的表达式就返回true.大理石平台支架 如果没有元素符合 ...