数据库中的数据类型
和Java的对照
| Java的类型 | 数据库中的类型 |
|---|---|
| int | tinyint,smallint,midiumint,int/integer,bigint |
| double | float,double |
| BigDecimal | decimal |
| String | varchar,xxtext,binary,varbinary,xxblob,enum,set等 |
| char | char |
| Date | Date,DateTime,time,datetemp |
创建数据表
create table 表名(
列名1 数据类型【长度】 【约束】,
列名2 数据类型【长度】 【约束】,
列名3 数据类型【长度】 【约束】
)
删除数据表
drop table 【表名】
修改表结构
在已经定义好的数据表上对表的结构进行修改。
关键字:alter
具有一定风险性,尽量少做
alter table 【表名】 add 【列名】 【类型】
删除列
存在风险,删除就找不回来了。
alter table 【表名】 drop 【列名】
修改列的数据类型
存在风险
如:double -->varchar 数据会全部转为0
alter table 【表名】 modify 列名 【列的新的数据类型】
修改列名
存在风险,其他程序员访问时会找不到。
alter table 【表名】 change 【旧的列名】【新列名】【新的数据类型】
数据表插入数据
关键字: insert into values
insert into 【表名】(列名1,列名2,列名3) values(值1,值2,值3)
#或者
insert into 【表名】 values(全列值)
#批量添加
insert into student values(全列值),(全列值),(全列值)
修改行数据
如果修改的行不存在,不会发生任何错误,影响0行。
update 【表名】 set 【列名】 【age】 = 【age】 + 1,【列名】 = 【新值】 where 【id】 = 【值】
删除数据(delete,truncate)
关键字:delete from
必须要有条件限制,最好是唯一性的数据
delete from 【表名】 where 【id】 = 【列值】
truncate table【表名】
delete关键字和truncate
delete 删除表数据
truncate 摧毁表(删除重建表),所有数据都没了。
假设数据列是可以是自动增长,delete删除表中全部的十条数据,自增从之前的开始(10),而truncate之后就重新开始记录。
主键约束
primary key,数据表的列,设置了该位主键,这个类的数据不应该是null,不能重复,具有唯一性。
一个数据表,只能有一个主键约束,
一个数据表,都应该有一个主键约束。
添加主键约束的方式一,创建表时直接添加。
primary key放在列的数据类型后面,关键字,primary key。
create table person(
int id primary key,
firstname varchar(20),
lastname varchar(20)
)
添加主键约束的方式二(推荐),在数据表的约束区域添加。
关键字 constraint
create table person(
int id,
firstname varchar(20),
lastname varchar(20),
constraint primary key(id)
)
添加主键约束的方式三,修改表结构。
create table person(
int id primary key,
firstname varchar(20),
lastname varchar(20)
)
alter table person add constraint primary key(id)
删除主键约束
alter table person drop primary key
主键约束的自动增长(从0开始)
Java中的i++,实现数据自动增长的键,必须是主键,必须是int类型。
create table person(
id int primary key auto_increment,
firstname varchar(20),
lastname varchar
)
可以不用再设置id键了。删除部分后,可能看起来是不连续的。
字符集编码
character set = utf8
非空约束
列值不能是null,如果添加时没有指定非空列的值,会显示警告,但是依然执行,这列值是" "空字符。
关键字 not null。
格式
create table person(
id int primary key auto_increment,
firstname varchar(20) not null,
lastname varchar
)
删除非空约束
alter table person modify firstname varchar(20)
唯一约束
添加唯一约束的列的值必须具有唯一性。
关键字 unique
创建表时声明(推荐)
create table person(
id int primary key auto_increment,
firstname varchar(20) ,
lastname varchar unique
)
添加失败时,自增列的值也会自增,下次添加成功时,就会跳过这个值。
唯一约束的列可以有多个null值。但是空的字符串不行。
添加约束时声明
create table person(
id int primary key auto_increment,
firstname varchar(20) ,
lastname varchar ,
constraint unique uk_lastname (lastname)
)
uk_address 是自定义的约束名
删除唯一约束,删除的是索引
索引名就是约束名,没加约束名的话,约束名默认是列名。
alter table person drop index uk_lastname
默认约束
可以为列添加默认值,关键字default
create table person(
id int primary key auto_increment,
firstname varchar(20) ,
lastname varchar default '无'
)
删除默认约束
修改表结构删除
alter table person modify lastname varcnar
mysql中
超出varchar规定的长度,会被截断,从最前面开始截断。(警告,但是插入成功)
如果有自增列,还有一个具有约束条件check的列,这个约束列的条件会失效。