目录
一、 操作表
1. 增
1.1 语法
create table +表名(
字段名 列类型(宽度) 约束条件,## 字段与字段间要加逗号
…………
字段名 列类型(宽度) 约束条件 ## 若是最后一行则不要加逗号
)charset=utf8; ## 后面要加分号
1.2 列约束(完整性约束)
- primary key:标识该字段为该表的主键,主键可以加快索引速度,并使列的值不能重复;
- auto_increment:整数自增,设置了这条约束的字段必须为主键;
- not null:标识该字段不能为空;
- default:为该字段设置默认值
1.3 列类型(数据类型)
1.3.1 数字
1.3.1.1 整形
tinyint:1字节,(-128,127)/(0,255)
smallint:2字节,(-32768,32767)/(0,65536)
mediumint:3字节,(-8388608,8388607)/(0,16777215)
int:4字节,(-2147483648,2147483647)/(0,4294967295)
bigint:8字节,(-9233372036854775808,9233372036854775807)/(0,18446744073709551615)
1.3.1.2 浮点型
float:在位数比较短的情况下不精准
double:在位数比较长的情况下不精准(
decimal:精准,内部原理是以字符串形式去存(如果用小数,则用推荐使用decimal)
1.3.2 字符串
char:定长,就算储存的字符串没有达到长度也会用空格来补充。浪费空间,存取速度快;
varchar:变长,固定长度后,如果储存的数据长度不够,会以存取数据的长度为准。精准,节省空间,但存取速度慢。
1.3.3 时间日期类型
year:YYYY(1901/2155)
date:YYYY-MM-DD(1000-01-01/9999-12-31)
time:HH:MM:SS('-838:59:59'/'838:59:59')
datetime:YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59)
timestamp:YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某时)
1.3.4 枚举(自己设定范围)
enum('male','female')
2. 删
drop table 表名;
3. 改
3.1 修改表名
alter table 旧表名 rename 新表名;
3.2 增加字段
添加的列永远是添加在最后一列之后
alter table 表名 add 字段名 列类型(宽度) 约束条件,
add 字段名 列类型(宽度) 约束条件;
添加的列在第一列
alter table 表名 add 字段名 列类型(宽度) 约束条件 first;
添加的列在某个特定列的后面
alter table 表名 add 字段名 列类型(宽度) 约束条件 after 字段名;
3.3 删除字段
alter table 表名 drop 字段名;
3.4 修改字段
修改某个已存在字段的列类型和约束条件
alter table 表名 modify 字段名 新列类型(宽度) 新约束条件;
修改某个字段的字段名
alter table 表名 change 旧字段名 新字段名 新列类型(宽度) 新约束条件;
4. 查
展示所有表
show tables
展现某个表的字段属性
describe 表名;
展现某个表的具体内容
select * from 表名;
5. 复制表结构
创建一个和某个已有表结构相同的表,只能复制结构,不能复制数据
create table 表2名 like 表1名;
二、 操作表的数据行(记录)
1. 增
insert into 表名 (列1,列2) values (值1,值2);
2. 删
删除符合某个条件的一条记录
delete from 表名 where 条件;
删除表中已有数据,但继续写入数据是从删掉的最后一个主键的接下来开始写入的
delete from 表名;
清空表内容,继续写入是从头开始写的
truncate 表名;
delete删除是一行一行删,truncate是一次性全部删,所以truncate删除速度更快。
3. 改
update 表名 set 列名1=新值1,列名2=新值2 where 条件;
4. 查
select 列1,列2 from 表名 where 条件;(*代表查询所有的列)
条件中:
between……and……:
取值范围是闭区间
避免重复distinct:
select distinct 列名 from 表名;(显示这列不重复的值)
成员运算in:
select * from 表名 where 列名 in(值1,值2,值3……);
模糊查询like:
select * from 表名 where 列名 like ‘x%’;(查找以x开头的值)