MySql之表的创建、插入与删除

表的创建、插入与删除

  • 1>表的创建
    • MySQL中的数据类型
    • char和varchar如何选择
    • BLOB和CLOB类型的使用
  • 2>表中插入数据
    • 修改数据
    • 删除数据
      • 怎么删除大表
  • 3>删表
  • 4>表结构修改

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(删除)

你可能感兴趣的:(MySQL数据库,数据库,mysql,sql)