语法:
create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);
注意:
1. 在同一张表中,字段名是不能相同
2. 宽度和约束条件可选
3. 字段名和类型是必须的
#为表添加字段
create database db1 charset utf8;
use db1;
create table t1(
-> id int,
-> name varchar(50),
-> sex enum('male','female'),
-> age int(3)
-> );
show tables;
#查看db1库下所有表名

  乱码问题

mysql> create database db1 charset latin1;
mysql
> use db1;
mysql
> create table t1(name varchar(20));
mysql
> show create table t1; #查看表,发现表默认与数据db1的字符编码一致
mysql> insert into t1 values(''); #插入中文出错,因为latin1不支持中文
ERROR 1366 (HY000):
mysql
>

#解决方法一:删除库db1,重建db1,字符编码指定为utf8

#解决方法二:修改
mysql> alter table t1 charset utf8; #修改表t1的编码
mysql> insert into t1 values('宋'); #虽然t1的编码改了,但是t1的字段name仍然是按照latin1编码创建的
ERROR 1366 (HY000):
mysql
> alter table t1 modify name varchar(20); #需要重新定义下字段name
mysql> insert into t1 values('宋');
mysql
> select * from t1;
#不要忘记将数据库编码也改成utf8,这样以后在该数据库下创建表时,都默认utf8编码了

  永久解决编码问题

#1. 修改配置文件
[mysqld]
default
-character-set=utf8
[client]
default
-character-set=utf8
[mysql]
default
-character-set=utf8

#mysql5.5以上:修改方式有所改动
[mysqld]
character
-set-server=utf8
collation
-server=utf8_general_ci
[client]
default
-character-set=utf8
[mysql]
default
-character-set=utf8
#2. 重启服务
#
3. 查看修改结果:
\s
show variables like
'%char%'

  查看表结构

describe  表名;
show create table 表名\G;
#查看详细表结构

  修改表

语法:
1. 修改表名
ALTER TABLE 表名
RENAME 新表名;

2. 增加字段
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…],
ADD 字段名 数据类型 [完整性约束条件…];
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…] FIRST;
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名;

3. 删除字段
ALTER TABLE 表名
DROP 字段名;

4. 修改字段
ALTER TABLE 表名
MODIFY 字段名 数据类型 [完整性约束条件…];
ALTER TABLE 表名
CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
ALTER TABLE 表名
CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];

示例:
1. 修改存储引擎
mysql
> alter table service
-> engine=innodb;

2. 添加字段
mysql
> alter table student10
-> add name varchar(20) not null,
-> add age int(3) not null default 22;

mysql
> alter table student10
-> add stu_num varchar(10) not null after name; //添加name字段之后

mysql
> alter table student10
-> add sex enum('male','female') default 'male' first; //添加到最前面

3. 删除字段
mysql
> alter table student10
-> drop sex;

mysql
> alter table service
-> drop mac;

4. 修改字段类型modify
mysql
> alter table student10
-> modify age int(3);
mysql
> alter table student10
-> modify id int(11) not null primary key auto_increment; //修改为主键

5. 增加约束(针对已有的主键增加auto_increment)
mysql
> alter table student10 modify id int(11) not null primary key auto_increment;
ERROR
1068 (42000): Multiple primary key defined

mysql
> alter table student10 modify id int(11) not null auto_increment;
Query OK, 0 rows affected (
0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0

6. 对已经存在的表增加复合主键
mysql
> alter table service2
-> add primary key(host_ip,port);
7. 增加主键
mysql
> alter table student1
-> modify name varchar(10) not null primary key;

8. 增加主键和自动增长
mysql
> alter table student1
-> modify id int not null primary key auto_increment;

9. 删除主键
a. 删除自增约束
mysql
> alter table student10 modify id int(11) not null;

b. 删除主键
mysql
> alter table student10
-> drop primary key;

  复制表

复制表结构+记录 (key不会复制: 主键、外键和索引)
mysql
> create table new_service select * from service;

只复制表结构
mysql
> select * from service where 1=2; //条件为假,查不到任何记录
Empty set (
0.00 sec)
mysql
> create table new1_service select * from service where 1=2;
Query OK, 0 rows affected (
0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql
> create table t4 like employees;

  删除表

 DROP TABLE 表名;

更多相关文章

  1. mysql关键字与表名字段相同的解决方法
  2. Sailsjs Mysql ORM在同一个表字段上进行多次查询
  3. 如何将表(及其行,列和单元格)保存在SQL数据库的单个字段中
  4. oracle --sql--转换表字段日期格式(年月日时分秒转换年月日)
  5. MySQL字段名与保留字冲突
  6. 使用不同的条件,在同一个表的一个SQL查询中使用多个聚合函数
  7. SQL:如何从另一个表中删除行会议条件
  8. 写SQL语句,如何找到部分字段内容一样的两条记录?实现调货的功能
  9. 如何检查具有多个条件的SQL CASE?

随机推荐

  1. Android Studio 单刷《第一行代码》系列
  2. 在android平台上如何实现H264解码
  3. Android 打包签名
  4. android的Activity采用透明主题
  5. Android(安卓)Wi-Fi 5G Only时Wi-Fi不可
  6. Android 文件系统及权限修改
  7. Android(安卓)提交数据到服务器
  8. android学习的进阶(从零开始,从初级到高级)
  9. Android Studio 单刷《第一行代码》系列
  10. android 笔记 --- 属性gravity与layout_g