数据表:
增:alter table表名add字段 约束; #表中增加一个字段
删:alter table表名 drop字段; #表中删除一个字段
改:alter table表名modify字段 约束; #不改字段名字,只改约束,比如字段类型
alter table表名change原字段名 新字段名 约束;#字段重新命名,虽然只是重命名字段,但是后面的约束即使不变,也不能省略
查:desc表名;
表中数据:
增:insert into 表名 values(字段、约束)
改:update 表名 set 字段=新值,字段=新值 where 更改的地方 #where后面比如 id = 多少,name=多少等等,若不加where条件限制,则整个字段全改:例如:updatestudentset age = 30 where id=10; #将id为10的记录中的age改为30
查:select* from表名wherename="小明"#查询表中所有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 tableclass(idint unsigned auto_increment not null, name varchar(30));
2、insert intoclassvalues(0, 'python');
3、insert intoclassvalue(0, 'c++');
4、insert intoclassvalues(0, 'java');
5、insertintoclassvalues(null, 'vb');
6、insert intoclassvalues(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 intostudent(name, age) values("小明", 20)
多行插入:
insert intostudent(name, age)values("小明",30), ("小花",20);
insert intostudentvalues(0, "小明",30, 3, 1), (0, "小花", 30, 3, "女");
数据的增删改查:
updatestudentset gender="男"; #把表student中的gender字段全部改成“男”
updatestudentset gender="女" where name="小明"; #把name字段中所有“小明”的gender改成“女”
updatestudentset gender="女"where id=16;#将id为16的一行记录中的gender改为“女”
将id为12的一行记录中的age改为100,性别改为“男”:
updatestudentset age=100, gender="男" whereid=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;
...