建表

  • 先讲一下常规建表:

    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. VirtualBox使用

    热键:Right Ctrl 串口 端口编号: COM1 -> /dev/ttyS0 COM2 -> /dev/ttyS1 COM3 -> /dev/ttyS2 COM4 -> ...

  2. MongoDB——理论及使用命令详解 数据库

    数据存储阶段 文件管理阶段(.txt  .doc .xls) 优点: 1 使用简单,展现直观 2 可以长期保存数据 3 可存储数据量比较大 缺点: 1 查找不方便, 2 容易造成数据冗余, 3 格式不 ...

  3. Win7系统不能拖动文件夹的问题怎么解决?

    一般情况下,如果我们想要在电脑中移动文件夹,可以采用剪切复制粘贴或者按住鼠标左键拖动的方式来实现,但有些Win7系统用户反映文件夹会出现不能移动的情况,这是怎么回事呢?下面好系统U盘启动就为大家介绍一 ...

  4. Centos7虚拟机根分区扩展

    线上的kvm虚拟机,原来只规划了8G,后来发现硬盘动不动就被日志塞满了,需要进行扩容. 扩容步骤如下: 1.先把kvm虚拟机关机 2.在宿主机上进行kvm虚拟机的磁盘扩容 qemu-img resiz ...

  5. Flask debug 模式 PIN 码生成机制安全性研究笔记

    Flask debug 模式 PIN 码生成机制安全性研究笔记 0x00 前言 前几天我整理了一个笔记:Flask开启debug模式等于给黑客留了后门,就Flask在生产网络中开启debug模式可能产 ...

  6. ASP.config配置

    使用ASP.NET搭建三层时候, 有Model (模型)DAL(数据访问层)    BLL(业务逻辑层)  连接数据库的DBhelper 放在DAL层 假如 你数据库密码改了,你要打开VS 找到DBh ...

  7. 移动端meta常用的设置

    1.qq强制横屏或者竖屏显示    :   <meta name="x5-orientation" content="portrait ||andscape&quo ...

  8. 百度人脸识别java html5

    1.前端thymeleaf+h5 index.html    人脸识别+定位,用的百度sdk <!DOCTYPE html> <html xmlns="http://www ...

  9. 开源Asp.net CMS mojoPortal-源码运行

    1.下载mojoPortal源码 下载地址:http://mojoportal.codeplex.com/SourceControl/latest 我下载的版本是:2.4.0.9 MSSQL 以下是m ...

  10. redistempalate的超时设置的操作更新

    redistempalate的超时设置时,一定要每次用set写入时,更新超时,默认是不会自动更新的. 例如: int tempTime = this.redisTemplate.getExpire(& ...