建表语句得到语法格式:
create table 表名{
字段名1 数据类型,
字段名2 数据类型,
字段名3 数据类型,
...
};
常用的数据类型:
数据类型 | 中文名 |
---|---|
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。
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)
};
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;
//表被截断,不可回滚,永久丢失
//当这个表存在话删除
drop table if exists t_student;
~~~~ 这里不讲,使用工具很方便,因为在实际开发中表一旦设计好之后,对表结构修改是很少的,修改表结构就是对之前的设定进行了否定,即使需要修改表结构,我们也可以直接使用工具即可。修改表结构的语句不会出现在JAVA代码当中。
~~~~ 出现在Java代码当中的sql包括:insert delete update select (这些都是表中的数据操作。)
增删改查有一个术语:CRUDE操作
Create(增) Retrieve(检索) Update(修改) Delete(删除)