day34 学习小结

一、 操作表

1. 增

1.1 语法

create table +表名(

字段名 列类型(宽度) 约束条件,## 字段与字段间要加逗号

…………

字段名 列类型(宽度) 约束条件 ## 若是最后一行则不要加逗号

)charset=utf8; ## 后面要加分号

1.2 列约束(完整性约束)

  1. primary key:标识该字段为该表的主键,主键可以加快索引速度,并使列的值不能重复;
  2. auto_increment:整数自增,设置了这条约束的字段必须为主键;
  3. not null:标识该字段不能为空;
  4. 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 增加字段

  1. 添加的列永远是添加在最后一列之后

    alter table 表名 add 字段名 列类型(宽度) 约束条件,

    ​ add 字段名 列类型(宽度) 约束条件;

  2. 添加的列在第一列

    alter table 表名 add 字段名 列类型(宽度) 约束条件 first;

  3. 添加的列在某个特定列的后面

    alter table 表名 add 字段名 列类型(宽度) 约束条件 after 字段名;

3.3 删除字段

alter table 表名 drop 字段名;

3.4 修改字段

  1. 修改某个已存在字段的列类型和约束条件

    alter table 表名 modify 字段名 新列类型(宽度) 新约束条件;

  2. 修改某个字段的字段名

    alter table 表名 change 旧字段名 新字段名 新列类型(宽度) 新约束条件;

4. 查

  1. 展示所有表

    show tables

  2. 展现某个表的字段属性

    describe 表名;

  3. 展现某个表的具体内容

    select * from 表名;

5. 复制表结构

  1. 创建一个和某个已有表结构相同的表,只能复制结构,不能复制数据

    create table 表2名 like 表1名;

二、 操作表的数据行(记录)

1. 增

insert into 表名 (列1,列2) values (值1,值2);

2. 删

  1. 删除符合某个条件的一条记录

    delete from 表名 where 条件;

  2. 删除表中已有数据,但继续写入数据是从删掉的最后一个主键的接下来开始写入的

    delete from 表名;

  3. 清空表内容,继续写入是从头开始写的

    truncate 表名;

delete删除是一行一行删,truncate是一次性全部删,所以truncate删除速度更快。

3. 改

update 表名 set 列名1=新值1,列名2=新值2 where 条件;

4. 查

select 列1,列2 from 表名 where 条件;(*代表查询所有的列)

条件中:

  1. between……and……:

    取值范围是闭区间

  2. 避免重复distinct:

    select distinct 列名 from 表名;(显示这列不重复的值)

  3. 成员运算in:

    select * from 表名 where 列名 in(值1,值2,值3……);

  4. 模糊查询like:

    select * from 表名 where 列名 like ‘x%’;(查找以x开头的值)

猜你喜欢

转载自www.cnblogs.com/bowendown/p/11761381.html