MySQL:增删改查语法

279 阅读3分钟

增删改查常用语法

[内容时间:2021.09.03]

创建表

建表语句的语法格式

表名在数据库当中一般建议以 t_ 或者 tbl_开始。tbl也就是table缩写
因为往后会有视图,索引之类的,不止是 表 这种对象
create table 表名(
    字段名1 数据类型,
    字段名2 数据类型,
    字段名3 数据类型   //最后一个不能有逗号
);

建表可以设置默认值

create table 表名(
 字段名1 数据类型 default 1,   //代表默认值是 1 ,不是NULL了
 字段名2 数据类型,
 字段名3 数据类型,
 ……
);

关于MySQL当中字段常见的数据类型

int         整数型
bigint      长整型(java中的long)
float       浮点型
char        定长字符串
varchar     可变长字符串(255个字符)
date        日期类型(对应java的 java.sql.Date 类型,不是util的)
BLOB        二进制大对象(存储图片、视频等流媒体信息)Binary Large OBject
CLOB        字符大对象(存储较大文本,比如可存储4GB的字符串)Charater Large OBject
  • char的效率比varchar效率高,因为char类型不需要做运算,varchar需要动态判断你存入多少个字符,虽然varchar方便,但是牺牲了效率
  • BLOB和CLOB类型的需要使用java的IO流才能插入,普通的 insert 语句搞不定

向表中插入数据

语法格式:第一种方法

insert into 表名(字段名1,字段名2,字段名3,...) values(值1,值2,值3,...)
要求:字段的数量和值的数量相同,并且数据类型要对应相同
​
========================================
insert语句一执行,表中必然多一行。
即使多的这一行记录当中某些字段是NULL,后期也没办法在执行insert语句插入数据了。
只能用 update 来更新修改
写部分字段的话,那要另外改才行,不能再插入了,因为那就是下一行了,要把NULL改掉

语法格式:第二种方法

insert into 表名 values(值1,值2,值3,...)
这种方法对字段没有要求,但是对value的顺序和数量有严格要求

一次插入多行数据

语法格式:
insert into 表名
    (字段名1,字段名2,字段名3,...) 
value(值1,值2,值3,...),(值1,值2,值3,...),(值1,值2,值3,...)

表的删除

语法格式:

drop table if exists t_student;     如果这个表存在,就删除

表的复制

语法格式:

将查询结果当做表创建出来
create table 表名 as select语句
要完整的表就*,要部分数据的话那就字段1,字段2

将查询结果插入到表中

语法格式:
先创建好表
insert into deot1 select * from dept;   //类似上面吧反正

修改数据

语法格式:

update 表名 set 字段名1=值,字段名2=值,... where 条件
注意:没有条件,整张表数据全部更新

例 1:将dept1 的 10部门改为人事部,地点改为上海

update
    dept1
set
    loc='SHANGHAI',dname='RENSHIBU'
where
    deptno=10;
​
如果没有where,那所有的数据的loc和deptno全改成shanghai和renshibu

删除数据

语法结构:

删除单条记录
delete from 表名 where 条件;
删除所有记录
delete from 表名;
​
注意:delete之后表还在,没释放内存空间,还可以把数据回滚,所以效率低,不建议用来删除数据量庞大的整表数据
删除大表应该用truncate

删除大表数据

truncate table 表名;
截断删完之后只剩表头,而且数据不可回滚,谨慎使用!

关于表结构的修改

(图没了,之后给找回来!)