【1 创建表】

(在这之前,必须先选定使用哪个数据库及use 数据库名;才可以创建表)

create table 表名(

     列名数据类型, ----某一列,存放的数据是什么类型

     列名数据类型,

    ……

     列名数据类型 ---最后一个列不需要逗号。

);

【注意】

多个列之间使用逗号隔开,最后一个列不需要输入逗号。

创建表的时候,一定切换到某一个具体的数据库。

use数据库名。



列字段数据类型解释:
【字符类型】
 varchar:长度可变   
name varchar(20):设置name字段的长度为20,name的储存长度在20以内都可以,并且会自动适应长短。
 char:长度固定
name char(20):设置name字段的长度为20,name的存储长度在20以内,如果不满20,用空格补足。
例如:lisi 只有4个长度,剩下的用空格补足。
--优缺点
char 的性能好,固定长度。 
varchar可以节省空间,由于长度不固定,会根据实际长度占空间。【varchar只是在MySQL中使用】
【varchar2只是在Oracle中的】
通常时候,如果长度不固定,我们使用varchar。
使用char的情况。当某个字段的长度固定的时候,可以采用char。例如身份证号或者手机号。


【大数据类型】
BLOB-字节:存放二进制内容,一般可以存放视频、音频、图片等。
tinyblob:255字节
blob:64KB
mediumblob:16MB
longblob:4GB


TEXT-字符:存放大文本,存放txt。
tinytext:255字节 
text:64KB 
mediumtext:16MB  
longtext:4GB


通常我们不会把文件存储到数据库。(占用资源,操作速度慢)
我们会把文件的路径(通常存放在本地磁盘)存到数据库中。




【数值型】
 整形:TINYINT 、SMALLINT、MEDIUMINT、INT、BIGINT
 小数:FLOAT(单精度)、DOUBLE(双精度)
在定义类型的时候可以设置两个参数,如sal float(5,2):sal字段总共5位长度,可以有两位小数,如果 插入12345或者1234,默认为999.99,因为要保证小数点前三位和小数点后两位的格式。


【位数据类型】
 BIT: 1 或者0组成的数据
其数据有两种取值:0和1,长度为1位。在输入0以外的其他值时,系统均把它们当1看待。这种数据类型常作为逻辑变量使用,用来表示真、假或是、否等。


【日期型】
 date:日期----只有日期, 年月日
 time:时间-----时分秒
 dateTime:日期和时间都包含 “yyyy-MM-dd”
 timestamp:日期和时间都包含 -------当数据被修改的时候,里面的值会自动进修改,保存当前的时间。
 timestamp: 当其他数据发生改变的时候,这个字段会自己修改为当前时间。



例如:

createtable emp(
       id int,
       name varchar(20),
       age int,
       sex int,
       birthday date
);

【2 查看表】

show tables;查看该数据库的所有的表


show create table 表名 :查看建表语句以及字符集—了解【可以理解为 show   - create table 表名】;

desc 表名:查看表的列的信息(查看表结构)

就是查看

id int,
       name varchar(20),
       age int,
       sex int,
       birthday date



【3 约束】

--主键约束:primary key 

作用:设置某一个字段为主键,主键的特性是唯一(不能重复),并且不能为空。
一般使用一个没有任何意义的字段,比如id作为一个主键(没有意义就不需要修改)。
如果主键是一个int类型,还可以设置主键自增长。(即在插入记录的时候可以不用设置主键,让其自动以递增的形式添加)
一张表中只能有一个主键。

【示例】

create table 表名 (
	id int primary key auto_increment,
	name varchar(20),
	………….
);

--唯一约束:unique  

 内容不允许重复,可以为null(null不算重复)。 

一个表里可以添加多个唯一约束。




写法: 列名 类型(长度) unique


【示例】


create table 表名 (
	id int primary key auto_increment,
	name varchar(20) unique,
	………….
);



唯一约束和主键约束的区别


1、唯一约束可以是空(null)。 但是主键约束不能为空


2、一张表中只能有一个主键,但是唯一约束可以有多个

--非空约束:not null

不允许为空。 表示该列的内容不允许为空。


写法: 列名 类型(长度) not null,
【示例】

create table emp(
	id int primary key auto_increment,
	name varchar(20) unique,
	age int not null,
	………….
);



约束的目的。


目的:保证数据的正确性。


约束列。限制列的内容。



【4 数据表结构的修改】

--增加列:
alter table 表名 add 列名 类型(长度) 约束;

【示例】
添加备注列-remark(tabaleName为表的名字)

alter table tableName add remark varchar(20);



--添加主键-几乎不用


alter table 表名 add primary key (列名)


主键一般都是在建表的时候直接设置



--修改现有列的类型或者长度


alter table 表名 modify 列名 类型(长度) ;


注意:通常我们不会修改列的类型。



--修改现有列的名称


alter table 表名 change 旧列名 新列名 类型(长度) 


注意:通常我们不会修改列的名称。




--删除一个现有列


alter table 表名 drop 列名


注意:通常我们不会删除列。




--修改表名


rename table 旧表名 to 新表名


注意:通常我们不会重命名数据库表名。




会使用java操作数据。java程序完成。去该表名。要求java程序进行修改。



修改表的字符集



查看表的字符集:show create table 表名;



修改表的字符集:alter table 表名 character set 字符集



【5 删除表】

drop table 表名;