建表

  • 先讲一下常规建表:

    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. selenium在爬虫中的应用之动态数据爬取

    一.selenium概念 selenium 是一个基于浏览器自动化的模块 selenium爬虫之间的关联: 1.便捷的获取动态加载的数据 2.实现模拟登录 基本使用 pip install selen ...

  2. vscode go开发主要插件

    • Colorization 代码着彩色 • Completion Lists 代码自动完成(使用gocode) • Snippets 代码片段 • Quick Info 快速提示信息(使用godef ...

  3. list 列表 函数的引用

    方法 意义 L.index(v [, begin[, end]]) 返回对应元素的索引下标, begin为开始索引,end为结束索引,当 value 不存在时触发ValueError错误 L.inse ...

  4. docker container 导入和导出

    目录 docker container 导入和导出 1.前言 2.docker container 的导出 3.docker container 的导入 4.镜像和容器 导出和导入的区别 docker ...

  5. 一图一知-TS之泛型

  6. django缓存--缓存加数据库型

    4.缓存+数据库Session 数据库用于做持久化,缓存用于提高效率   a. 配置 settings.py       SESSION_ENGINE = 'django.contrib.sessio ...

  7. Bootstrap Popover(弹出框)弹出自定义格式代码

    HEAD 标签之间引入CSS:<link href="../../../public/css/bootstrap.min.css" rel="stylesheet& ...

  8. learning strrchr func

    函数名称: strrchr 函数原型:char *strrchr(const char *str, char c); 所属库: string.h 函数功能:查找一个字符c在另一个字符串str中末次出现 ...

  9. Codevs 3012 线段覆盖 4

    3012 线段覆盖 4 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 黄金 Gold 题目描述 Description 数轴上有n条线段,线段的两端都是整数坐标,坐标范围在0~100 ...

  10. Codevs 1629 01迷宫

    1629 01迷宫 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 有一个由01组成的n*n格迷宫,若你位于一格0上,那么你可 ...