操作表
增
语法:
create table 表名(
字段名 列类型 [可选参数],
字段名 列类型 [可选参数]#最后一行不加逗号
)charset=utf-8;#后面必须加分号
列约束:(********************)
auto_increment:自增1
primary key:主键索引,加快查询速度,列的值不能重复,一条数据的唯一标识
NOT NULL:标识该字段不能为空
DEFAULT:为该字段设置默认值
增加数据:
语法:
insert into 表名(列1,列2)values(值1,‘值2’);
查询数据:
语法:
select 列1,列2 from 表名;(*代表查询所有的列)
列类型:
数字
整型
tingint
smallint
int(推荐使用)
mediumint
bigint
a.整数类型
b.取值范围
c.unsigned加上代表不能取负数,只适用于整型
应用场景:根据公司业务的场景,来选取合适的类型
浮点型(**)
float不一定精确
decimal:非常精确的数字(m,d)m是数字总个数(负号不算),d是小数点后个数
插入的数据大于规定的长度,会四舍五入最后一位
插入的数据小于规定的长度,会用0补全
字符串
char(长度):不可变,定长高效
varchar(长度):不定长,省空间
区别:
char:定长,无论插入的字符是多少个,永远固定占规定的长度
场景:身份证,手机号(char11),md5加密之后的值,比如密码(char32)等
varchar:变长,根据插入的字符串的长度来计算占的字节数,但是有一个字节是用来保存字符串的大小的
注意:如果,不能确定插入的数据大小,一般建议使用varchar(255)
时间日期类型
YEAR
DATE
TIME
DATETIME(********)
TIMESTAMP
枚举:列出多有的选项
create table t1(
id int auto_increment primary key,
gender enum('male','female')
)charset utf8;
insert into t1(gender) values ('male');
改
修改表名
alter table 旧表名 rename 新表名;
增加字段
alter table 表名
add 字段名 列类型 [可选的参数],
add 字段名 列类型 [可选的参数];
这样添加的默认都是在最后一列之后的
删除字段
alter table 表名 drop 字段名;
修改字段
alter table 表名 modify 字段名 数据类型 [完整性约束条件...]
alter table 表名 change 旧字段名 新字段名 新数据类型 [完整性约束条件...]
删
drop table 表名 ###线上禁用的
查
show tables;
复制表结构
show create table 表名;
操作表数据行
增
增加数据:
语法:
insert into 表名 (列1,列2)values(值1,‘值2’);
删
delete from 表名 where 条件:
delete from 表名 默认删除所有的数据
truncate 表名 ##没有where条件的
区间:
delete之后,插入数据从上一次主键自增加1开始,truncate则是从1开始
delete删除,是一行一行的删除,效率低truncate:全选删除truncate删除的速度是高于delete的
改
updata 表名 set 列名1=新值1,列名2=新值2 where 条件;
updata t1 set name=‘xxx’ where id=1;
查
语法:
select 列1,列2 from 表名 :(*代表所有的列)
between...and ...取值范围是闭区间
select *from t66 where id between 30 and 40;
避免重复DISTINCT
select distinct name from t66;
通过四则运算查询(一般不使用)
例如:select name,age*10 from 表名;
模糊查询
一般是数据小的情况下试用
select * from t66 where name like ‘x%’;#以x开头
select * from t66 where name like ‘x%x’;#包含x
select * from t66 where name like ‘%x’;
查询以x结尾的数据
一般使用between的查询效率要比模糊查询效率高