MySQL学习
四、表的操作
1. 创建表
1.1 建表语句语法格式:
create table 表名(
字段名1 数据类型,
字段名2 数据类型,
.....
);
1.2 MySQL中字段的数据类型(常见)
int :整数型(Java中的int)
bigint:长整型(Java中的long)
float: 浮点型(Java中的float和double)
char: 定长字符串(Java中的String)char(长度★)
varchar:可变长字符串(最多255个字符,Java中的StringBuffer/StringBuilder)varchar(255)
date:日期类型(存储日期,对应Java中的java.sql.Date类型)
BLOB: 二进制大对象(存储图片、视频等流媒体信息。binary large object,Java中的Object)
CLOB:字符大对象(存储较大文本,比如,可以存储4G的字符串。character large object,Java中的Object)
1.3 char和varchar的选择
在实际的开发中,当某个字段中的数据长度不发生改变的时候,是定长的,例如:性别、生日等都是采用char。当一个字段的数据长度不确定,例如:简介、姓名等都是采用varchar。
1.4 BLOB和CLOB类型的使用
电影表: t_movie
id (int) name (varchar) playtime(date/char) poster(BLOB) history(CLOB)
表名在数据库当中一般建议以:t_ 或者tbl_ 开始。
1.5 创建一张表
创建学生表,学生信息包括:学号(bigint),姓名(varchar),性别(char),班级编号(int),生日(char)
create table t_student(
no bigint,
name varchar(255),
sex char(1) ,
classno int,
birthday char(10)
);
2. insert语句插入数据
语法格式:
insert into 表名(字段名1,字段名2,字段名3,....) values(值1,值2,值3,.....)
要求:字段的数量和值的数量相同,并且数据类型对应相同。
insert into t_student
(no,name,sex,classno,birthday)
values
(1,‘zhangsan’,‘1’,‘11’,‘1950-10-12’);
// 当这个表存在的话,删除。
drop table if exists t_student;
create table t_student(
no bigint,
name varchar(255),
sex char(1) default 1, // 默认是1
classno int,
birthday char(10)
);
需要注意的地方:当一条insert语句执行成功之后,表格当中必然会多一行记录。即使多的这一行记录当中某些字段是NULL,后期也没有办法再执行insert插入数据了,只能使用update进行更新。
insert插入时列名是可以省略的,只要值能与默认的列名对应上。(字段可以省略不写,但是后面的value对数量和顺序都有要求)
一次插入多行数据:insert into t_student (no,name,sex,classno,birthday) values(…),(…);// values后面的括号用逗号隔开即可
3. 表的复制
语法:
//将查询结果当作表创建出来
create table 表名 as select语句;
4. 将查询结果插入到一张表中
// 把dep表的查询结果插入到dept1表中
insert into dept1 select * from dept;
5. 修改表的数据:update
语法格式:
update 表名 set 字段名1=值1,字段名2=值2,... where 条件;
注意:没有条件整张表数据全部更新。
案例:将部门10的LOC修改为SHANGHAI:update dept set LOC = ‘SHANGHAI’, dname = ‘RENSHIBU’ where deptno = 10;
update dept set LOC = 'NEW YORK' where deptno = 10;
6. 删除表的数据:delete
6.1语法格式:
delete from 表名 where 条件;
注意:没有条件整张表数据全部删除。
6.2删除大表(重点)
// 表被截断,不可回滚。永久丢失。
truncate table 表名;
▲DQL(select) 对数据的查询
DML(insert,delete,update) 对数据的操作 DDL(create,drop,alter)对表结构的
6.3 删除表
drop table 表名;
或
drop table if exists 表名 ; // Oracle不支持这种写法
7. 对表结构的修改
用navicate可视化工具(实际开发中,表一旦设计好之后,对表结构修改时很少的,修改表结构就是对之前的设计进行了否定。修改表结构的语句不会出现在Java代码中。出现在Java中的SQL 包括:增删改查 insert delete update select这些都是对表中的数据进行操作。)
增删改查有一个术语:CRUD操作
Create(增) Retrieve(检索) Update(修改) Delete(删除)