建表

  • 先讲一下常规建表:

    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. bootstrap 处理警告

    $("#id").bootstrapValidator({}).on('success.field.bv', function (e, data) { })

  2. Heap(堆)与Stack(栈)的区别详解

    在了解堆与栈之前,我们想来了解下程序的内存分配 一个编译的程序占用的内存分为以下几个部分  :  1.栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等.其    ...

  3. vue-element-admin 之设置侧边栏的icon

    一.将icon的svg文件放置如下图文件位置 二.在路由设置中设置(icon设置为svg的文件名称即可)          注:若icon选中的颜色不会随着侧边栏文字颜色变动,把svg文件中的fill ...

  4. Image Processing and Analysis_8_Edge Detection:Multiresolution edge detection techniques ——1995

    此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...

  5. 11_Hive TransForm 案例

    1.需求:将Json格式的数据处理后插入新表中 数据文件如下:rating.json,文件格式:{"movie":"2858","rate" ...

  6. shell读取或者修改ini文件

    cfg_find(){ file_name=$1 labelname=$2 key=$3 labelline=$(grep -n "^\[.*\]$" $file_name | a ...

  7. VSCode 快捷键定义

    默认的 Toggle explore side bar 快捷键为 Ctrl + B, 但是这和 Vim 的快捷键冲突,解决方法: File  >  Preferences  >  Keyb ...

  8. CSS基础学习 21.CSS居中总结

    注意:*在IE中并不代表通配符的意思,是代表根元素的意思,所以为了匹配适应各种浏览器,进行页面初始化 <style> *{ margin:0; padding:0; } </styl ...

  9. C# Zip压缩、解压

    /* *引用 NuGet包 ICSharpCode.SharpZipLib.dll */ public class ZipUtility { /// <summary> /// 所有文件缓 ...

  10. hmmlearn 安装笔记

    hmmlearn是在python上实现隐马可夫模型的一个组件包,原先是在sklearn中的,后来被弃用而单独分离出来. 首先安装sklearn,最好下载setup.py的安装包用命令行安装,因为安装h ...