创建表
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;
解释:
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;
约束
约束 = 别乱搞;
约束就是在定义字段类型的时候,我就先定义好规则,不让你乱插入(别乱搞!);
约束分类
- 主键约束 Primary Key
- 外键约束 Foreign Key
- 非空约束 Not Null
- 唯一性约束 Unique
- 默认值约束(当输入空值时填充默认值)Default
- 外键约束
Primary Key
主键约束又可以分为:
- 单字段主键
- 多字段主键
Example:
# 单字段主键
id Int Primary Key,
# 多字段主键
id int,
uid int Primary Key(id,uid),
Not Null
字段值不能为空,如果为空报错!
example:
name char(20) Not null;
Unique
保证数据表中的字段唯一性,即字段值不能重复;
phone int Unique,
Default
当插入空值时,默认填充默认值;
sex char(5) Default 0,
外键约束
待续;
字段值自动增加
创建表时字段类型后面加上 auto_increment,该列数据数值就会自动+1;
`id` int auto_increment, #定义列为自增的属性,一般用于主键,数值会自动加1;
索引
索引就是用来加快数据表的查询和排序用的;
索引分类
了解每种(6种)索引方式的应用场景、优缺点;
- 普通索引
- 唯一性索引
- 全文索引
- 单列索引
- 多列索引
- 空间索引
修改表操作
修改表名
有两种方式;
方式一
Alter Table test1_tb Rename To test2_tb;
方式二
Rename Table test2_tb To test1_tb;
修改表字段操作
修改表字段名
alter table test change column address address1 varchar(30);
修改表字段类型
alter table test modify address char(10);
修改表字段约束
待续;
修改表字段索引
待续;
添加表字段
alter table test1_tb add column name varchar(10);
删除表字段
alter table test1_tb drop column age;
删除表字段索引
待续;
删除表字段约束
待续;
删除表
Drop table name_table;