1. 创建
1.1 创建数据库
语法:create database db_name
create database `awesome_app`
1.2 创建表格
语法:create table table_name ( … columns )
示例:创建用户表 users
create table `users`
(
`id` int,
`name` char(10),
`avatar` varchar(300),
`regtime` date
)
1.3 创建索引
语法:create index index_name on table_name (column_name)
示例:为用户 id 创建索引 idx_id
create index `idx_id` on `users` (`id`)
/* 创建唯一索引 */
create unique index `idx_id` on `users` (`id`)
1.4 为已存在的列创建主键
更常用的方式是在创建表语句所有列定义的后面添加一行 primary key (column_name)。
语法:alter table table_name add primary key (column_name)
示例:将用户 id 设为主键
alter table users add primary key (`id`)
1.5 为已存在的列创建自增约束
更常用的方式是在创建表语句中添加自增列 id int not null auto_increment。
alter table `users` modify `id` int not null auto_increment
2. 插入
语法:
- insert into table_name values (value1, value2, …) insert into
- table_name (column1, column2, …) values (value1, value2, …)
示例:新增注册用户
insert into `users` values (1, 'ken', 'http://cdn.awesome_app.com/path/to/xxx/avatar1.jpg', curdate())
/* 指定列插入 */
insert into `users` (`name`, `avatar`) values ('bill', 'http://cdn.awesome_app.com/path/to/xxx/avatar2.jpg')
3. 修改(更新)
3.1 修改数据记录
语法:
update table_name set column=new_value where condition
update table_name set column1=new_value1,column2=new_value2,... where condition
示例:
update `users` set `regtime`=curdate() where `regtime` is null
/* 一次修改多列 */
update `users` set `name`='steven',`avatar`='http://cdn.awesome_app.com/path/to/xxx/steven.jpg' where `id`=1
3.2 修改数据库字符集为 utf8
alter database `awesome_app` default character set utf8
3.3 修改表字符集为 utf8
alter table `users` convert to character set utf8
3.4 修改表字段字符集为 utf8
alter table `users` modify `name` char(10) character set utf8
3.5 修改字段类型
alter table `users` modify `regtime` datetime not null
3.5 修改字段默认值
alter table `users` alter `regtime` set default '2019-10-12 00:00:00'
/* 设置默认为当前时间 current_timestamp,需要重新定义整个列 */
alter table `users` modify `regtime` datetime not null default current_timestamp
3.6 修改字段注释
alter table `users` modify `id` int not null auto_increment comment '用户ID';
alter table `users` modify `name` char(10) comment '用户名';
alter table `users` modify `avatar` varchar(300) comment '用户头像';
alter table `users` modify `regtime` datetime not null default current_timestamp comment '注册时间';
修改后,查看改动后的列:
mysql> show full columns from users;
+---------+--------------+-----------------+------+-----+-------------------+----------------+---------------------------------+--------------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
+---------+--------------+-----------------+------+-----+-------------------+----------------+---------------------------------+--------------+
| id | int(11) | NULL | NO | PRI | NULL