一、表结构语句(DDL)、表数据语句(DML)
表的创建(create)
建表语句格式:
create table 表名(
字段1 数据类型,
字段2 数据类型,
字段3 数据类型,
.......);
mysql中常见的数据类型
int(整数型)----java中的int
bigint(长整形)----java中的long
float(浮点型) ----java中的float/double
char(定长字符串)----java中的String
varchar(不定长字符串)----java中的StringBuffer/StringBuilder
date(日期类型) -----java中的java.sql.Date类型
BLOB(二进制大对象)----存储图片、视频等流媒体信息。Binary Large OBject----java中的object
CLOB (字符大对象)----存储比较大的文本。Character Large OBject----java中的object
char与varchar的选择
在开发中,字段会发生改变时选择varchar,如简介、姓名等,varchar(x)----x为字段的最大长度。一般char使用在字段长度固定的时候,如生日、性别等
创建学生表:(一般创建表,表名用t_开头)
学生信息包括:
学号、姓名、性别、班级编号、生日
学号: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,数据库记录加1,不改变前面数据
语法:
insert into 表名(字段1,字段2,字段3,......)values(值1,值2,值3,.....);
注意:字段数要与值的数量相等,数据类型也要相符
练习添加一条数据(mysql,默认为GBK无法显示中文,这里用拼音代替,避免报错)
insert into t_student(no,name,sex,classno,birth) values(1,'zhangsan','1','gaosan1ban','2000.5.14');
插入数据时,不一定每一个字段都有值,只需要把对应的字段与值插入。
如只插入名字时,其他值为null
可以在建表时,设定默认值(不插入数据时,自动填入默认值)----default
create table t_student(
no bigint ,
name varchar(255),
sex char(1) default 1, //设置默认为1
classno varchar(255),
birth char(10));
添加数据时,将字段省略时也可以添加数据,但是此时值必须与列表中的字段顺序相同切数据类型相同,以及数量也必须相同,不能缺少。
insert into t_student values('1','jack','0','gaosan','1999.5.30');
一次性插入多条数据
语法:
insert into表名 (字段1,字段2,字段3) values(值1,值2,值3),(值1,值2,值3);
练习:
insert into t_student (no,name,sex) values('2','may','0'),('3','king','1');
将一张表的查询结果添加到另一表中(插入的数据要与被插入的表的列数相同,否则无法插入)
语法:
insert into 表名1 select 需要插入的字段(*为全部字段) from 表名2;
例:insert into dept1 select * from dept;(将dept全部内容插入dept1表中)
删除表(drop)
drop table if exists 表t; //如果表存在则删除表
drop table 表名 //已知表存在,直接删除
表的复制----将查询结果当做表创建新表。
语法:
create table 表名 as select 需要复制的字段(*代表全部) from 已存在的表名;
例:create table emp1 as select * from emp;(复制全部信息)
例:create table emp2 as select job from emp;( 复制某个字段)