数据库(二)表操作
数据库
操作表
增
语法:
- create table + 表名(字段名 列类型 [可选参数],字段名 列类型 [可选参数])charset=utf8;
列约束:
- auto_increment:自增1
- primary key:主键索引加快查询速度,列的值不能重复
- not null 标识该字段不能为空
- default 为该字段设置默认值
列类型:
create table 表名(字段名 列类型 unsigned [可选的参数], 字段名 列类型 [可选参数])charset=utf8;
数字:
整型:
tinyint
smallint
int
mediumint
bigint
a.整数类型
b.取值范围
c.unsigned 加上代表不能取负数,只适用于整型
浮点型:
create table t1(id int auto increment primary key,
salary decimal(16,10)
num float)charset=utf8;
float:不一定精准
decimal:非常精准
字符串:
char(长度):定长
create table t1(
id unsigned int auto_increment primary key,
name char(10) not null default 'xxx',)charset=utf8
varchar(长度):变长
create table t1(
id int auto_increment primary key,
name varchar(10) not null default 'xxx')charset=utf8;
区别:
char:定长,无论插入的字符是多少个,永远固定占规定的长度(场景:身份证,手机号,md5加密之后的值,比如密码(32))
varchar:变长,根据插入的字符串的长度来计算所占的字节数,但是有一个字节是用来保存字符串的大小的;注意:如果不能确定插入的数据大小,建议使用(varchar(255))
时间日期类型:
year: yyyy 年
date: yyyy-mm-dd 年月日
date time:yyyy-mm-dd hh:mm:ss 年月日,时分秒
datestamp:yyyy-mm-dd,hh:mm:ss
删
语法:drop table + 表名
改
改表名:alter table +旧表名 rename +新表名;
增加字段:alter table 表名
add 字段名 列类型[可选的参数],
add 字段名 列类型[可选的参数];
alter table 表名 add 字段名 列类型[可选参数]first;
alter table 表名 add 字段名 列类型[可选参数]after字段名 之后;
删除字段:alter table 表名 drop 地段名;
修改字段:alter table 表名 modify 字段名 数据类型[完整性约 束条件...];
复制表结构:show create table 表名;
查
语法:show table ;
操作表数据
增
语法:
insert into 表名(列1 ,列2)values(值1,值2);
删
delete from 表名 where 条件;
truncate 表名;
区别:
- delete之后,插入数据从上一次主键自增加1开始,truncate则是从1开始
- delete删除,是一行一行的删除,truncate:全选删除,删除速度高于delete
改
update 表名 set 列名1=新值1.列表2=新值2 where 条件;
查
语法:
select 列1,列2 from 表明;(*代表查询所有的列)
select * from 表名; (*代表查询所有的列)
select * from t66 where id>30 and id<40;
select * from t66 where id>30;
select * from t66 where id<30;
select * from t66 where id<=30;
select * from t66 where id>=30;
select * from t66 where id!=30;
select * from t66 where id<>30;
mysql> select * from t1;
in:
select *from t1 where id in (指定查询)
like::
select * from t1 where name like 'x%';模糊查询