MySQL -- 库 与 表

数据库的创建与删除

创建数据库

:

  1. CREATE DATABASE 不支持 comment。
  2. COLLATE: 校对集,在某个字符集的情况下,字符集的排列顺序应该是什么,称之为校对集。
    1
    CREATE DATABASE IF NOT EXISTS `my_db` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

删除数据库

1
DROP DATABASE IF EXIST `my_db`;

查看数据库列表

1
SHOW DATABASES;

查看数据库DDL

1
SHOW CREATE DATABASE `my_db`;

查看当前使用的数据库

1
SELECT database();

切换数据库

1
USE `my_db2`;

数据库表的增删改

创建数据库表

:

  1. CHAR列的长度固定为创建表时声明的长度。长度可以为从0到255的任何值。当保存CHAR值时,在它们的右边填充空格以达到指定的长度。当检索到CHAR值时,尾部的空格被删除掉,所以,我们在存储时字符串右边不能有空格,即使有,查询出来后也会被删除。VARCHAR列中的值为可变长字符串, 同CHAR对比,VARCHAR值保存时只保存需要的字符数,另加一个字节来记录长度(如果列声明的长度超过255,则使用两个字节),VARCHAR值保存时不进行填充。当值保存和检索时尾部的空格仍保留,符合标准SQL.

  2. BINARY和VARBINARY类型类似于CHAR和VARCHAR类型,但是不同的是,它们存储的不是字符字符串,而是二进制串. 保存BINARY值时,在它们右边填充0x00(零字节)值以达到指定长度。取值时不删除尾部的字节; 对于VARBINARY,插入时不填充字符,选择时不裁剪字节.

  3. 长度限制:
    CHAR、VARCAHR的长度是指字符的长度,例如CHAR[3]则只能放字符串”123”,如果插入数据”1234”,则从高位截取,变为”123”。 VARCAHR同理。
    TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT的长度,其实和数据的大小无关!Length指的是显示宽度;
    FLOAT、DOUBLE和DECIMAL的长度指的是全部数位(包括小数点后面的),例如DECIMAL(4,1)指的是全部位数为4,小数点后1位,如果插入1234,则查询的数据是999.9;

  4. BLOB, TEXT, GEOMETRY or JSON 不能有默认值.

  5. FULLTEXT 索引仅可用于 MyISAM 表, 为 CHAR, VARCHAR, TEXT 列 创建全文索引.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    # 1. 一般create table 语句
    CREATE TABLE IF NOT EXISTS `users` (
    `id` INT(11) UNSIGNED NOT NULL [PRIMARY KEY] AUTO_INCREMENT COMMENT '用户id',
    `name` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '姓名',
    `sex` TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '性别',
    `age` TINYINT(2) UNSIGNED NOT NULL DEFAULT 1 COMMENT '年龄',
    `address` TEXT(500) NOT NULL COMMENT '地址',
    PRIMARY KEY (`id`) COMMENT '主键',
    INDEX `age_idx` (`age`) COMMENT '普通索引',
    UNIQUE `name_idx`(`name`(20)) COMMENT '唯一索引',
    FULLTEXT `address` (`address`) COMMENT '全文索引'
    ) ENGINE = MyISAM DEFAULT CHARSET utf8 COLLATE utf8_general_ci AUTO_INCREMENT=1 COMMENT '用户信息表';

    # 2. create table like 参照已有表的定义,来定义新的表
    CREATE TABLE IF NOT EXISTS `users_like` LIKE `users`;

    # 3. 根据select 的结果集来创建表
    CREATE TABLE IF NOT EXISTS `user_select` AS SELECT `id`, `name` FROM `users`;

删除数据库表

1
DROP DATABASE `users`;

修改表自增起始ID

1
ALTER TABLE `users` AUTO_INCREMENT=2;

查看数据库表的列表

1
SHOW TABLES;