mysql 数据表和数据的增删改查

数据表:

增:alter table 表名 add 字段 约束;        #表中增加一个字段

删:alter table 表名 drop 字段;              #表中删除一个字段

改:alter table 表名 modify 字段 约束;    #不改字段名字,只改约束,比如字段类型

  alter table 表名 change 原字段名 新字段名 约束#字段重新命名,虽然只是重命名字段,但是后面的约束即使不变,也不能省略

查:desc 表名;

 

表中数据:

增:insert into 表名 values(字段、约束)

改:update 表名 set 字段=新值,字段=新值 where 更改的地方  #where后面比如 id = 多少,name=多少等等,若不加where条件限制,则整个字段全改:例如:update student set age = 30 where id=10;          #将id为10的记录中的age改为30

查:select * from 表名 where name="小明"                           #查询表中所有name=小明的记录,不加where查询整个表

删:delete from 表名 where ...                                             #删除where后面的条件符合记录,不加where清空整个数据表

 

修改添加字段:

 

student表中添加一个birthday字段,字段类型datetime:

 alter table student add brithday datetime;

 

@修改birthday字段类型为date,不修改字段名:

alter table student modify brithday date;

 

@修改brithday字段名为brith

 

alter table student change brithday birth date;

 

 

删除字段:

从student表中删除high字段:

alter table student drop high;

 

删除数据表:

drop table 表名

 

显示表创建的信息:

show create table 表名

 

表中插入记录:

全列插入:根据字段顺序每一个字段按顺序依次插入

创建class表,并向class中插入五条记录:  #数据表class有id 和 name 两个字段

1、create table class(id int unsigned auto_increment not null, name varchar(30));

2、insert into class values(0, 'python');

3、insert into class value(0, 'c++');

4、insert into class values(0, 'java');

5、insert into class values(null, 'vb');

6、insert into class values(default, 'c#')

说明:可以发现上面几行插入记录中的insert into 中,行2用的是value,行3用的是values,其实两个都可以的。

另外,每次插入时,id都用的0,这样就是每次插入的id自动增长(创建主键时用了auto_increment),除了0,null 和 default也是一样的效果,都是自动生成id

当然可以插入一条记录时自己设置一个id,如果自己设置了一个id是100,那么插入下一条记录id用0的话,这条记录的id就是101

 

再者,枚举的字段中,比如性别字段枚举了("男","女","中性"),向这个字段添加记录时,可以:

insert into 表名 values("");

insert into 表名 values("");

也可以:

insert into 表名 values(1);

insert into 表名 values(2);

 

部分插入:

创建一个student表,包含id、name、age、class、gender五个字段:

create table student(id int unsigned not null auto_increment primary key, name varchar(20), age int unsigned, class int gender enum("男","女"));

 

全列插入:

insert into student(0, "小明",20,3,"男"); == insert into student(null, "小明", 20, 3, 1);

 

部分插入:

insert into student(name, age) values("小明", 20)

 

多行插入:

insert into student(name, age)values("小明",30), ("小花",20);

insert into student values(0, "小明", 30, 3, 1), (0, "小花", 30, 3, "女");

 

 

数据的增删改查:

 

update student set gender="";                                        #把表student中的gender字段全部改成“男”

update student set gender="" where name="小明";         #把name字段中所有“小明”的gender改成“女”

update student set gender="" where id=16;                      #将id为16的一行记录中的gender改为“女”

将id为12的一行记录中的age改为100,性别改为“男”:

update student set age=100, gender="" where id=12;         #set 后面可以添加多个要更新的字段,where后面是条件(要更新的对象)

 

查询表中记录:

查询表中所有记录:

select * from 表名

条件查询:

select * from 表名 where id >6;   #查询id>6的记录

select name, age from 表名 ;      #只查询name,age, 后面同样可以加where

select name as 姓名, age as 年龄 from 表名;     #给列的名字起一个别名

 

删除数据:

物理删除,真的删除:

delete from 表名;  #清空数据表,整个表中数据全部删除

delete from 表名 where   #where后面的条件删除

 

逻辑删除,只是标记为删除,给表添加一个字段,在此列中标记:

例如给student添加一个is_del字段:

alter table student add is_del bit default 0;     #添加一个字段,默认值为0,因为此字段数据类型是bit,在查询表的时候0不会显示

如果要将id=10的记录标记为删除,可以修改它的is_del字段值不为0,比如为1:

update student set is_del where id=10;

这样在查询所有表时,where后面加一个is_del=0的条件,就不会显示id=10的那条记录了,因为它的is_del字段不等于0:

select * from student where is_del=0;

 

 

 

 

...

 

posted @ 2019-01-18 21:54  greenfan  阅读(426)  评论(0)    收藏  举报