MySql之表的创建、插入与删除
作者:互联网
表的创建、插入与删除
1>表的创建
建表语句得到语法格式:
create table 表名{
字段名1 数据类型,
字段名2 数据类型,
字段名3 数据类型,
...
};
MySQL中的数据类型
常用的数据类型:
数据类型 | 中文名 |
---|---|
int | 整数型 |
bigint | 长整型(java中的long) |
float | 浮点型 (java中的float double) |
char | 定长字符串(java中的String类型) |
varchar | 可变长字符串,可以存最多255个字符 java中的StringBuffer/StringBuilder |
date | 日期类型 (对应Java中的java.sql.Date类型) |
BOLB | 二进制大对象(存储图片、视频等流媒体信息) Binary Large OBject(对应java中的Object) |
CLOB | 字符大对象(存储较大文本,比如,可以存储4个G的字符串) (对应java中的Object) |
char和varchar如何选择
- char(6) 可以存储的不超过6个字符,每个数据都只分配6个字符的空间。(比如 存取 性别字段 )
- varchar(6) 根据实际存入数据动态分配不超过6个字符的空间。
~~~~
在实际开发中,当某个字符中的长度不发生改变时,是定长的。例如:性别、生日等都是采用char。优点:无需计算数据长度 效率高。
~~~~
当一个字段的数据长度不确定时,例如:简介、姓名等都是采用varchar。
BLOB和CLOB类型的使用
id(int) name(varchar) playtime(date,char) haibao(BLOB) history(CLOB)
--------------------------------------------------------------------
1 蜘蛛侠
2
3
~~~ 表名在数据库当中一般建议以:t_或者tab_开始。 数据库中处理表还有视图等。
创建学生表:
~~~~~~~~
学生信息包括:
~~~
学号、姓名、性别、班级编号、生日
~~~
学号:bigint
~~~
姓名:varchar
~~~
性别:char
~~~
班级编号:int
~~~
生日:char
create table t_student{
no bigint,
name varchar(255),
sex char(1),
classno varchar(255),
birth char(10)
};
2>表中插入数据
insert语句插入数据
语法格式:
insert into 表名(字段名1,字段名2,字段名3,...) values(值1,值2,值3,....)
//要求:字段的数量和值的数量相同
//并且数据类型要对应相同
insert into t_student(no,name,sex,classno,birth)
values('zhangsan','1','gansan1ban','1950-10-12');
insert into t_sudent(name,sex,classno,birth,no) values('lisi','1','gansan1ban','1950-10-12',2);
//前后能对上就行,顺序不重要
insert into t_sudent(name) values('wangwu');
//除name以外,所有其他字段自动插入NULL;
将性别的默认值改为1
create table t_student{
no bigint,
name varchar(255),
sex char(1) default 1,
classno varchar(255),
birth char(10)
};
需要注意的地方:
~~~
当一条insert语句执行成功之后,表格当中必然会多一行记录。
~~~
即使多的这一行记录当中某些字段是NULL,后期也没有办法在执行insert语句插入数据了,只能使用update进行更新。
insert into t_student values(1,'jack','0','gaosan2ban','1986-10-23');
//省略字段名的话
//后面的values必须数量和顺序都一致
//一次插入多行数据
insert into
t_student(no,name,sex,classno,birth)
values
(1,'jack','0','gaosan2ba','1952-12-14'),(4,'laotie','1','gaosi2ban','1955-12-14');
表的复制:
语法:
create table 表名 as select 语句;
将查询结果当做表创建出来。
//复制表
create table emp1 as select * from emp;
//局部复制
create table emp2 as select empno.ename from emp;
将查询结果插入到一张表中
insert into dept1 select * from dept;
//字段数有要求
修改数据
语法格式:
update 表名 set 字段名1=值1,字段名2=值2,... where 条件;
//注意:没有条件整张表数据全部更新
//注意字段名=值1后是','不是and
~~~ 案例:将部门10的LOC修改为SHANGHAI,将部门名称修改为RENSHIBU。
update dept1 set loc ='SHANGHAI',dname = 'RENSHIBU' where deptno = 10;
//更新所有记录
update dept1 set loc = 'x',dname = 'y';
删除数据
语法格式
delete from 表名 where 条件;
//注意:没有条件全部删除
//删除10部门数据
delete from dept1 where deptno = 10;
//删除所有记录
delete from dept1;
delete语句类似橡皮擦,擦完之后格还留着,没有释放格的空间,可以回滚。
怎么删除大表
不能回滚,不存在反悔空间,速度快,仅仅留下表头。(需要反复确认,才进行)。
truncate table emp1;
//表被截断,不可回滚,永久丢失
3>删表
//当这个表存在话删除
drop table if exists t_student;
4>表结构修改
~~~~
这里不讲,使用工具很方便,因为在实际开发中表一旦设计好之后,对表结构修改是很少的,修改表结构就是对之前的设定进行了否定,即使需要修改表结构,我们也可以直接使用工具即可。修改表结构的语句不会出现在JAVA代码当中。
~~~~
出现在Java代码当中的sql包括:insert delete update select (这些都是表中的数据操作。)
增删改查有一个术语:CRUDE操作
Create(增) Retrieve(检索) Update(修改) Delete(删除)
标签:insert,varchar,10,之表,数据类型,char,插入,MySql,字段名 来源: https://blog.csdn.net/oLengNuanZiZhi12/article/details/112117355