Mysql数据库增删改、限制(一)

1,003 阅读4分钟

数据库中的数据类型

和Java的对照

Java的类型数据库中的类型
inttinyint,smallint,midiumint,int/integer,bigint
doublefloat,double
BigDecimaldecimal
Stringvarchar,xxtext,binary,varbinary,xxblob,enum,set等
charchar
DateDate,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的列,这个约束列的条件会失效。

总结

创建

mysql创建.png

插入

mysql插入.png

修改

sql修改.png

删除

mysql删除.png