目录



  • 创建表
  • 约束
  • 约束分类
  • Primary Key
  • Not Null
  • Unique
  • Default
  • 外键约束
  • 字段值自动增加
  • 索引
  • 索引分类
  • 修改表操作
  • 修改表名
  • 方式一
  • 方式二
  • 修改表字段操作
  • 修改表字段名
  • 修改表字段类型
  • 修改表字段约束
  • 修改表字段索引
  • 添加表字段
  • 删除表字段
  • 删除表字段索引
  • 删除表字段约束
  • 删除表




创建表

Example 1:

Create table if not exists `secondweek_tb`(
   `id` int Unsigned auto_increment,
   `title` Varchar(100) Not null,
   `author` Varchar(40) Not null,
   `submission_date` Date,
   primary key ( `id` )
)engine=InnoDB default charset=utf8;
Create table if not exists `secondweek_tb`(
   `id` int Unsigned auto_increment,
   `title` Varchar(100) Not null,
   `author` Varchar(40) Not null,
   `submission_date` Date,
   primary key ( `id` )
)engine=InnoDB default charset=utf8;

解释:

Unsigned声明为无符号;

如果你不想字段为NULL可以设置字段的属性为Not NULL, 如果在操作数据库时如果输入该字段的数据为NULL ,就会报错;

Auto_increment定义列为自增的属性,一般用于主键,数值会自动加1;

Primary key关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔;

Engine设置存储引擎;

Charset设置编码;

Varchar(100) 和 Varchar(40)的区别:
一个汉字占多少长度与编码有关,如下说MySQL 5.0 以上的版本设置;

  • UTF-8:一个汉字=3个字节
  • GBK:一个汉字=2个字节

Varchar(100)表示字节的取值范围为0-65535 字节,但是可变长varchar(100);

4.0版本以下,varchar(100),指的是100字节,如果存放UTF8汉字时,只能存33个(每个中文3字节);

5.0版本以上,varchar(100),指的是100字符,无论存放的是数字、字母还是UTF8中文(每个中文3字节),都可以存放100个 ;

Example 2:

CREATE TABLE test_tb(
    id SMALLINT UNSIGNED KEY AUTO_INCREMENT,
    username VARCHAR(20) NOT NULL UNIQUE,
    password CHAR(32) NOT NULL,
    email VARCHAR(50) NOT NULL DEFAULT 'a@a.com',
    age TINYINT UNSIGNED DEFAULT 18,
    addr VARCHAR(200) NOT NULL DEFAULT '北京',
    salary FLOAT(6,2),
    regTime INT UNSIGNED,
    face CHAR(100) NOT NULL DEFAULT 'default.jpg',
    sex ENUM('男','女','保密') DEFAULT '保密'
)engine=InnoDB default charset=utf8;
CREATE TABLE test_tb(
    id SMALLINT UNSIGNED KEY AUTO_INCREMENT,
    username VARCHAR(20) NOT NULL UNIQUE,
    password CHAR(32) NOT NULL,
    email VARCHAR(50) NOT NULL DEFAULT 'a@a.com',
    age TINYINT UNSIGNED DEFAULT 18,
    addr VARCHAR(200) NOT NULL DEFAULT '北京',
    salary FLOAT(6,2),
    regTime INT UNSIGNED,
    face CHAR(100) NOT NULL DEFAULT 'default.jpg',
    sex ENUM('男','女','保密') DEFAULT '保密'
)engine=InnoDB default charset=utf8;

约束

约束 = 别乱搞;
约束就是在定义字段类型的时候,我就先定义好规则,不让你乱插入(别乱搞!);

约束分类

  • 主键约束 Primary Key
  • 外键约束 Foreign Key
  • 非空约束 Not Null
  • 唯一性约束 Unique
  • 默认值约束(当输入空值时填充默认值)Default
  • 外键约束

Primary Key

主键约束又可以分为:

  • 单字段主键
  • 多字段主键

Example:

# 单字段主键
id Int Primary Key,

# 多字段主键
id int,
uid int Primary Key(id,uid),
# 单字段主键
id Int Primary Key,

# 多字段主键
id int,
uid int Primary Key(id,uid),

Not Null

字段值不能为空,如果为空报错!

example:

name char(20) Not null;
name char(20) Not null;

Unique

保证数据表中的字段唯一性,即字段值不能重复;

phone int Unique,
phone int Unique,

Default

当插入空值时,默认填充默认值;

sex char(5) Default 0,
sex char(5) Default 0,

外键约束

待续;

字段值自动增加

创建表时字段类型后面加上 auto_increment,该列数据数值就会自动+1;

`id` int auto_increment,   #定义列为自增的属性,一般用于主键,数值会自动加1;
`id` int auto_increment,   #定义列为自增的属性,一般用于主键,数值会自动加1;

索引

索引就是用来加快数据表的查询和排序用的;

索引分类

了解每种(6种)索引方式的应用场景、优缺点;

  • 普通索引
  • 唯一性索引
  • 全文索引
  • 单列索引
  • 多列索引
  • 空间索引

修改表操作

修改表名

有两种方式;

方式一

Alter Table test1_tb Rename To test2_tb;
Alter Table test1_tb Rename To test2_tb;

mysql show表名是数字_字段

方式二

Rename Table test2_tb To test1_tb;
Rename Table test2_tb To test1_tb;

mysql show表名是数字_主键_02

修改表字段操作

修改表字段名

alter table test change  column address address1 varchar(30);
alter table test change  column address address1 varchar(30);

修改表字段类型

alter table test modify address char(10);
alter table test modify address char(10);

mysql show表名是数字_删除表_03

修改表字段约束

待续;

修改表字段索引

待续;

添加表字段

alter table test1_tb add  column name varchar(10);
alter table test1_tb add  column name varchar(10);

删除表字段

alter table test1_tb drop  column age;
alter table test1_tb drop  column age;

mysql show表名是数字_主键_04

删除表字段索引

待续;

删除表字段约束

待续;

删除表

Drop table name_table;
Drop table name_table;