表操作
创建表:
create table 表名
(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
...
);
查看表结构(有多少列,每一列的属性):
desc 表名;
查看表的创建过程(创建表的时候使用的语句):
show create table + 表名;
修改表的名称:
rename table 原名称 to 新名称;
alert table 原名称 rename 新名称;
添加字段(列):
alert table 表名 add 新增字段名 类型;
删除表:
drop table 表名;
修改字段:
更改字段名:change
alert table 表名 change 旧字段名 新字段名 数据类型;
更改数据类型属性:modify
alert table 表名 modify 字段名 新数据类型;
更改字段位置:modify
alert table 表名 modify 字段名1 数据类型 first|after 字段名2;
插入数据:
insert into 表名(字段名1,字段名2,...) values(数值1,数值2,...);
insert into 表名 values(数值1,数值2,...);
表的复制:
create table 新表名 select * from 要复制的表;
查询:
select 字段1,字段2,... from 表名;
select * from 表名;(*表示所有字段)
修改数据:
update 表名 set 字段名=新值 where 条件;
update test set 数学成绩=90 where 姓名="lisi";
删除记录:
删除指定的记录:
delete from 表名 where 条件;
删除表的所有记录:
delete from 表名;
增删改查
增:
create database 库名; 建库
create table 表名; 建表
alert table 表名 add 新增字段名 类型; 添加字段
插入数据
insert into 表名(字段名1,字段名2,...) values(值1,值2,...);
insert into values(值1,值2,...);
删:
drop database 库名;
drop table 表名;
alert table 表名 drop 字段名; 删除字段
delete from 表名 where 条件;
delete from 表名;
改:
rename table 原名称 to 新名称;
alert table 原名称 rename 新名称:
alert table 表名 change 旧字段名 新字段名 数据类型;
alert table 表名 modify 字段名 新数据类型;
update 表名 set 字段=新数据 where 条件;
查:
show databases;
select database(); 查询当前所在的数据库
show tables;
show table status like '表名'\G; 查看表状态
desc 表名;
show create table 表名;
select 字段1,字段2,... from 表名; (*代表所有字段)
约束条件
unsigned
作用:使整数范围无正负号
关键字:unsigned
实例:
create table t1(id int unsigned);
zerofill
作用:不够位数使用0填充
关键字:zerofill
实例:
create table t1(id int(8) unsigned zerofill);
insert into t1 values(2222);
not null
作用:not null 非空(不能为空)
关键字:not null
实例:
正常添加:
create table t4(id int,name varcher(16));
insert into t4 values(name) values('gary'); 只指定给name字段添加数据
结果:id位null
create table t4(id int not null,name varcher(16)); 限制id不能为空
insert into t4 values(name) values('gary'); 只给name字段添加数据
default
作用:默认值(用户给了数据就用用户的,用户不给就用默认的)
关键字:default
实例:
create table t6(id int,name varchar(16) default '匿名用户');
insert into t6 values(1,'gary'); 正常传值
insert into t6(id) values(2); 只给id传值则name字段使用默认值
unique
作用:唯一(保证字段(一个或多个)在整个表中没有重复的数据)
关键字:unique
unique分为单列唯一和多列唯一
单列唯一:只控制单列不能重复
实例:
create table t7(id int,name varchar(16) unique);
insert into t7 values(1,'gary')(2,'gary');
多列唯一(联合唯一):控制多列结合不能重复
实例:ip加端口唯一
创建表:
create table t8(
id int,
host varchar(32) comment 'ip地址',
port varchar(32) comment '端口',
unique(host,port)
);
添加数据:
insert into t8 values(1,'127.0.0.1','3306'),
(2,'127.0.0.1','3307'),
(3,'127.0.0.2','3306');
不报错:只要host和port字段结合不重复可以存储
primary key
作用:
1、单从约束条件上而言主键相当于not null + unique(非空且唯一)
2、主键的功能目前简单的理解为能够加快数据的查询速度相当于书的目录
3、innodb存储引擎规定每张表都必须有且只有一个主键
3.1、如果表中没有任何的主键和其它约束条件
innodb默认会采用一个隐藏字段作为表的主键
3.2、如果表中没有主键但是有not null + unique(非空且唯一的字段)
innodb会自动将该字段升级为主键
结论:每张表都必须要有一个 'id' 字段(序号字段)并且该字段就是主键(通常在第一列)
关键字:primary key
可分为单列主键和多列主键(联合主键)
单列主键:验证非空且唯一
create table t9(
id int primary key,
name varchar(32)
);
insert into t9(name) values('gary'); 报错
insert into t9 values(1,'gary'),(1,'tom'); 报错
单列主键:验证not null + unique 是否自动升级为主键
create table t10(
id int not null unique,
age int not null unique,
phone bigint not null unique,
num int not null unique
);
多列主键(联合主键):两个字段联合起来是一个主键(不常用)
create table t11(
id int,
age int,
name varchar(16),
primary key(id,age)
);
auto_increment
作用:自增(专门配合主键一起使用的 让主键能够自增)
关键字:auto_increment
实例:
创建表:
create table t12(
id int primary key auto_increment,
name varchar(32)
);
存储数据:
insert into t12(name) values('tom'),('kaka'),('jack'),('gary');
这样我们在存储数据的时候就不需要考虑是第几个id编号了
主键自增特性
主键的自增是不会受到delete from删除操作的影响
如果删除某一个字段的话他还是保持原来的自增顺序依次自增
比如:
删除3字段,那么4字段就会填充到3字段的位置,再来数据就是以5字段开始
truncate关键字既可以清空表数据也会重置主键值(但是没这个必要,一般不会重置数据,如果重置重新创建一个表就好了)
eg:truncate t1; (清空t1表的数据并且重置主键)