1 查看当前数据库所有表
mysql> show tables;
2 创建表, id 字段为整型无符号, 不能有负数并且是主键 (主键唯一), 引擎为 InnoDB, 字符集是 utf8, 注释信息为 "学生表",int 括号中的 3 表示字段的宽度为 3, 以 100 开始自增, zerofill 意思是自动补零
- mysql> create table student(
- id int(3) unsigned zerofill not null auto_increment,
- name varchar(30) not null,
- primary key(id)
- )engine=InnoDB auto_increment=100 charset=utf8 comment="学生表";
3 删除表
mysql> drop table if exists student;
4 查看表结构
mysql> desc student;
5 查看建表代码
mysql> show create table student;
6 插入数据
mysql> insert into student(name) values ("jack"),("王五"),("赵六");
7 简单查询数据
mysql> select * from student;
8 显示表的所有列, 比 desc 要详细
mysql> show full columns from student;
9 删除多个表, 表名用逗号分隔
mysql> drop table if exists stu,a,b;
字段数据类型
1 > 整型: tinyint(1 字节, 0-255)smallint(2 字节, 0-65535)mediumint(3 字节, 0-16777215)int(4 字节, 0-4294967295)bigint(5 字节, 0-18446744073709551615)
tinyint: 最多能存到 255, 比如创建表的时候用 tinyint 的话, 在存 256 的时候会报错, 这种类型存年龄部门编号比较合适, 例如:
- mysql> create table stu(
- -> id int(3) unsigned auto_increment,
- -> name varchar(30),
- -> age tinyint(2) zerofill,
- -> primary key(id)
- -> )engine=InnoDB default charset=utf8;
- Query OK, 0 rows affected (0.02 sec)
- mysql> insert into stu(name,age) values ("张三",256); // 如果插入数据超过了 tinyint 范围就会报错, 存小数的话会四舍五入
- ERROR 1264 (22003): Out of range value for column 'age' at row 1
2 > 小数类型: decimal(p,s)numeric(p,s), 两个选一即可, 例如
- mysql> create table stu(
- id int(3) unsigned auto_increment,
- name varchar(30),
- money decimal(4,2), //money 字段用小数类型,(4,2) 代表 4 位数字, 其中 2 位整数和 2 位小数, 也就是说最高存 99.99
- primary key(id)
- )engine=InnoDB default charset=utf8;
- mysql> insert into stu (name,money) values ("李四",200);
- ERROR 1264 (22003): Out of range value for column 'money' at row 1
- mysql> show errors; // 查看错误
3 > 字符串类型: char()varchar()text()longtext()
char() 为固定长度字符串 (如果存 1 个字符会补 5 个 0), 最大为 255, 手机号身份证号可以使用 char 类型, 例如
- mysql> create table stu(
- -> id int unsigned not null auto_increment primary key,
- -> name char(6) // 如果 char 范围超过 255 会报错,(6) 代表 6 个字符, 超出 6 会报错
- -> )engine=InnoDB default charset=utf8;
varchar() 为可变长度字符串, 最大为 65535, 例如:
- mysql> create table stu(
- id int unsigned not null auto_increment primary key,
- name varchar(2) // 采用 varchar 类型
- )engine=InnoDB default charset=utf8;
- mysql> insert into stu (name) values ("张三");
- Query OK, 1 row affected (0.00 sec)
- mysql> insert into stu (name) values ("齐天大圣");
- ERROR 1406 (22001): Data too long for column 'name' at row 1
注意: 以上插入数据四个字也会报错, 可变长字符串并不是说想变多长变多长, 比如定义 char(3), 存入一个字符 a, 系统会自动补两个空位, 结果是一个 a 和两个空格补齐了三个字符; 而定义 varchar(3), 存入 a 后, 不会自动补齐空位, 就是实实在在存入了一个字符, 但是存入的最大字节数还是 3, 存入 4 个字符也会报错大家注意两个概念
text() 也是可变长的, 最大为 65535;longtext() 最大为 4G, 存文章可以使用
简单说以下 enum 参数, 这个参数代表枚举, 比如我要存一个性别, 除了男就是女, 例如:
- mysql> create table stu(
- id int unsigned not null auto_increment primary key,
- name varchar(5) not null,
- gender enum("男","女")
- )engine=InnoDB default charset=utf8;
- mysql> insert into stu (name,gender) values ("张三","中"); // 必须存 enum() 内定义的选项
- ERROR 1265 (01000): Data truncated for column 'gender' at row 1
- mysql> insert into stu (name,gender) values ("张三","男");
4 > 二进制类型: bloblongblob, 比如我要存一个 MP3 格式的文件, 就需要用到此类型, 一般没有往数据库直接存这些东西的, 数据库存的只是这些文件的地址
5 > 日期时间类型: datedatetime,date 只能存年月日, 而 datetime 能存年月日时分秒
- mysql> create table stu(
- id int unsigned not null auto_increment primary key,
- name varchar(5) not null,gender enum("男","女"),
- birthday datetime // 出生日期采用 datetime 类型
- )engine=InnoDB default charset=utf8;
- mysql> insert into stu (name,gender,birthday) values ("张三","男","2018-02-26 00:00:00");
如果字段类型有注册时间, 而且我们想要自动添加怎么办? 如下:
- mysql> create table stu(
- id int unsigned not null auto_increment primary key,
- name varchar(5) not null,
- gender enum("男","女"),
- registered datetime default now()
- )engine=InnoDB default charset=utf8;
- mysql> insert into stu (name,gender) values ("张三","男"); // 再添加数据时就不需要再添加 registered 字段信息了
注意: datetime 类型的数据在修改数据时, 时间不会改变, 而时间戳类型会改变, 例如:
- mysql> create table stu(
- id int unsigned not null auto_increment primary key,
- name varchar(5) not null,
- gender enum("男","女"),
- registered timestamp // 时间戳类型, 这时使用 update 语句修改数据时, 时间戳会改变, 如果不想它改变, 应该写成 registered timestamp default current_timestamp()
- )engine=InnoDB default charset=utf8;
来源: http://www.bubuko.com/infodetail-2507913.html