Java学习日志(二十八): SQL语句操作数据,SQL约束

JavaEE学习日志持续更新----> 必看!JavaEE学习路线(文章总汇)

SQL语句

增加表中数据

创建表catgory 字段:分类主键,分类名称
分类主键:添加主键约束和自动增长

CREATE TABLE category(
  -- 分类逐渐
  cid INT PRIMARY KEY AUTO_INCREMENT,
  -- 分类名称
  cname VARCHAR(20)
);

数据库表中添加数据:insert into
格式一
insert into 表名(列名1,列名2...) values(值1,值2...);
注意:

  1. 列名和值必须一一对应(个数,数据类型)
  2. 除了数值类型,其他类型的值在使用的时候必须使用引号包裹起来(’'或"")
INSERT INTO category(cid,cname) VALUES(1,'冰箱')

格式二:如果主键是自动增长的,那么可以省略主键字段
insert into 表名(非主键字段) values(非主键字段的值);

INSERT INTO category(cname) VALUES('电视');

格式三:可以省略列名的书写,但值必须全部写出,包括主键
insert into 表名 values(全部的值);

INSERT INTO category VALUES(5,'洗衣机');
-- 主键如果是自动增长,可以使用null,主键会自动计算
INSERT INTO category VALUES(NULL,'空调');

格式四批量插入数据

  • insert into 表名(列名1,列名2...) values(值1,值2...),...,(值1,值2...);
  • insert into 表名(非主键字段) values(非主键字段的值),...,(非主键字段的值);
  • insert into 表名 values(全部的值),...(全部的值);
INSERT INTO category VALUES(NULL,'缝纫机'),(NULL,'电风扇');

修改表中数据

此时的表中数据:
在这里插入图片描述

修改表中数据:update
格式

update 表名 set 字段名=字段值,字段名2=字段值2...字段名n=字段值n[where 条件]

-- 把cname是电风扇的字段修改为吸尘器
UPDATE category SET cname='吸尘器' WHERE cname='电风扇'

-- 把cid为5的数据,cid修改为55,cname修改为半导体
UPDATE category SET cid=55,cname='半导体' WHERE cid=5

-- 把cname所有值修改为黑白电视机
UPDATE category SET cname='黑白电视机'

删除表中数据

删除表中数据:delete from
格式

  1. delete from 表名 [where 条件];逐行删除,但不重置主键自增,再添加数据,继续使用之前的主键
  2. truncate table 表名;删除表中所有数据,会把表也删除,重新创建新表,会重置主键自增,再添加数据,主键重新开始
-- 删除cid是55的数据
DELETE FROM category WHERE cid=55;

-- 删除表中所有数据
DELETE FROM category 

INSERT INTO category VALUES(NULL,'衣服');

此时主键自增未被重置
在这里插入图片描述
再使用TRUNCATE删除

-- 删除表中所有数据
TRUNCATE TABLE category;
INSERT INTO category VALUES(NULL,'衣服');

此时主键自增被重置
在这里插入图片描述

SQL约束

主键约束

java中集合泛型的作用:限制集合中元素的数据类型
数据库中约束的作用:限制某列数据

  • 数据不能为null
  • 数据不能重复

主键约束:限制某列数据,数据即不能为null,也不能重复
使用关键字:primary key

注意:

  1. 每个表中都应该有一个主键,并且只能有一个主键字段(方便根据主键增删改查)
  2. 主键一般不要使用业务相关字段(name,age),一般都是新建一个主键字段
  3. 主键在mysql数据库中一般使用int类型,方便主键自增

方式一:创建表时,在字段描述处,声明指定字段为主键

字段名 数据类型(长度) primary key,
-- 创建persons01表,字段:主键字段,名,姓,地址,城市
CREATE TABLE persons01(
  -- 主键字段
  pid INT PRIMARY KEY,
  -- 名
  lastname VARCHAR(20),
  -- 姓
  firstname VARCHAR(20),
  -- 地址
  address VARCHAR(50),
  -- 城市
  city VARCHAR(10)
);
-- 往表中添加数据
INSERT INTO persons01(pid,firstname) VALUES(1,'章');
-- INSERT INTO persons01(pid,firstname) VALUES(1,'王'); Duplicate entry '1' for key 'PRIMARY'
-- INSERT INTO persons01(pid,firstname) VALUES(null,'章'); Column 'pid' cannot be null

删除主键约束:使用修改表结构,删除列
格式:

alter table 表名 drop primary key;
-- 删除persons01表中主键
ALTER TABLE persons01 DROP PRIMARY KEY;

了解bug :删除主键约束之后,会保留非空约束

方式二:创建表时,在constraint约束区域,声明指定字段为主键
格式:[constraint 主键名] primary key(字段)

注意:
如果不给主键起名字,那么[constraint 主键名]可以省略

CREATE TABLE persons02(
  -- 主键字段
  pid INT ,
  -- 名
  lastname VARCHAR(20),
  -- 姓
  firstname VARCHAR(20),
  -- 地址
  address VARCHAR(50),
  -- 城市
  city VARCHAR(10),
  -- 在constraint约束区域,声明指定字段为主键
  CONSTRAINT persons02_pk PRIMARY KEY(pid)
);

方式三:创建表之后,通过修改表结构,声明指定字段为主键
格式:
alter table 表名 add [constraint 主键名] primary key(字段);

CREATE TABLE persons03(
  -- 主键字段
  pid INT ,
  -- 名
  lastname VARCHAR(20),
  -- 姓
  firstname VARCHAR(20),
  -- 地址
  address VARCHAR(50),
  -- 城市
  city VARCHAR(10)
);

ALTER TABLE persons03 ADD PRIMARY KEY(pid);

联合主键:使用多个字段作为一个主键,多个字段同时重复,才算主键重复

CREATE TABLE persons05(
  -- 主键字段
  pid INT ,
  -- 名
  lastname VARCHAR(20),
  -- 姓
  firstname VARCHAR(20),
  -- 地址
  address VARCHAR(50),
  -- 城市
  city VARCHAR(10)
);

ALTER TABLE persons05 ADD PRIMARY KEY(lastname,firstname);

在这里插入图片描述

非空约束

非空约束:约束某列的数据不能为空
使用关键字:not null
注意:可以给多个字段添加非空约束

格式一:创建表时,在字段描述处,声明指定字段非空
字段 数据类型(长度) not null

CREATE TABLE persons06(
  -- 主键字段
  pid INT PRIMARY KEY AUTO_INCREMENT,
  -- 名
  lastname VARCHAR(20),
  -- 姓
  firstname VARCHAR(20) NOT NULL,
  -- 地址
  address VARCHAR(50),
  -- 城市
  city VARCHAR(10)
);

格式二:在创建表之后,使用修改表结构,修改指定字段的约束为非空约束
alter table 表名 modify 字段名 数据类型(长度) not null

ALTER TABLE persons06 MODIFY lastname VARCHAR(20) NOT NULL

删除非空约束:修改表结构,字段不写非空约束

ALTER TABLE persons06 MODIFY lastname VARCHAR(20) 

唯一约束

唯一约束:约束某列数据不能重复
使用关键字:unique
注意:如果列中值是null,那么就失去了唯一约束的作用

方式一:创建表时,在字段描述处,声明唯一
格式: 字段名 数据类型(长度) unique

CREATE TABLE persons08(
  -- 主键字段
  pid INT PRIMARY KEY AUTO_INCREMENT,
  -- 名
  lastname VARCHAR(20),
  -- 姓
  firstname VARCHAR(20) NOT NULL,
  -- 地址
  address VARCHAR(50)UNIQUE,
  -- 城市
  city VARCHAR(10)
);

方式二:创建表时,在约束区域,声明唯一
格式: [constraint 唯一约束名] unique(字段)

CREATE TABLE persons09(
  -- 主键字段
  pid INT PRIMARY KEY AUTO_INCREMENT,
  -- 名
  lastname VARCHAR(20),
  -- 姓
  firstname VARCHAR(20) NOT NULL,
  -- 地址
  address VARCHAR(50),
  -- 城市
  city VARCHAR(10),
  CONSTRAINT persons09_unique UNIQUE(address)
);	

方式三:创建表后,修改表结构,声明字段唯一
格式:alter table 表名 add [constraint 唯一约束名] unique(字段)

CREATE TABLE persons10(
  -- 主键字段
  pid INT PRIMARY KEY AUTO_INCREMENT,
  -- 名
  lastname VARCHAR(20),
  -- 姓
  firstname VARCHAR(20) NOT NULL,
  -- 地址
  address VARCHAR(50),
  -- 城市
  city VARCHAR(10)
);
ALTER TABLE persons10 ADD UNIQUE(address);

删除唯一约束:修改表结构,删除列
注意:必须指明要删除的是哪个唯一约束
格式:alter table 表名 drop index 字段名/唯一约束名

ALTER TABLE persons10 DROP INDEX address
ALTER TABLE persons09 DROP INDEX persons09_unique

默认约束

方式一:创建表时,添加默认约束

CREATE TABLE persons11(
  -- 主键字段
  pid INT PRIMARY KEY AUTO_INCREMENT,
  -- 名
  lastname VARCHAR(20),
  -- 姓
  firstname VARCHAR(20) NOT NULL,
  -- 地址
  address VARCHAR(50),
  -- 城市
  city VARCHAR(10) DEFAULT '北京'
);
INSERT INTO persons11(lastname) VALUES('李')

在这里插入图片描述
方式二:修改表结构

CREATE TABLE persons12(
  -- 主键字段
  pid INT PRIMARY KEY AUTO_INCREMENT,
  -- 名
  lastname VARCHAR(20),
  -- 姓
  firstname VARCHAR(20) NOT NULL,
  -- 地址
  address VARCHAR(50),
  -- 城市
  city VARCHAR(10) 
);
ALTER TABLE persons12 MODIFY city VARCHAR(20) DEFAULT '上海';
INSERT INTO persons11(lastname) VALUES('李')

在这里插入图片描述

删除默认约束

ALTER TABLE persons12 MODIFY city VARCHAR(20);
发布了37 篇原创文章 · 获赞 45 · 访问量 7099

猜你喜欢

转载自blog.csdn.net/Sakuraaaaaaa/article/details/104571824