当前位置: 首页 >数据库 > 数据库基础三

数据库基础三

数据库

二十五、insert语句插入数据

语法格式:

​ insert into 表名(字段名1,字段名2,字段名3,.........)values(值1,值2,值3,............)

要求:字段的数量和值的数量相同,并且数据类型要对应相同。

insert into t_student(no,name,sex,classno,birth) values(1,'zhangsan','1','gaosan1ban','1950-10-12');

注意

当一条insert语句执行成功之后,表格当中必然会多一行记录。

即使多的这一行记录中某些字段是NULL,后期也没办法在执行

insert语句插入数据了,只能使用update进行更新。

注意:

字段可以省略,但是后面的values对数量和顺序都有要求。

一次插入多行数据

insert into t_student

​ (no,name,sex,classno,birth)

values

​ (3,'rose','1','gaosan2ban','1952-12-14'),(4,'laotie','1','gaosan2ban','1953-11-15');

二十六、表的复制以及插入

表的复制

语法

create table 表名 as select语句;

​ 将查询结果当做表创建出来。

将查询结果插入到一张表中

insert into dept1 select * from dept;

二十七、修改数据:update

语法格式

​ update 表名 set 字段名1=值1,字段名2=值2....where 条件;

注意:没有条件整张表数据全部更新。

将部门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;

怎么删除大表中的数据?

​ truncate table 表名; //表被截断,不可回滚。永久丢失。

删除表

​ drop table 表名;

​ drop table if exists 表名;//Oracle不支持这种写法。

增删改查有一个术语:CRUD操作

Create(增) Retrieve(检索) Update(修改) Delete(删除)

二十九、约束

1、什么是约束?常见的约束有哪些?

在创建表的时候,可以给表的字段添加相应的约束,添加相应约束的目的是为了保证表中数据的合法性、有效性、完整性。

常见的约束有

非空约束(not null):约束的字段不能为NULL

唯一约束(unique):约束的字段不能重复

主键约束(primary key):约束的字段既不能为NULL,也不能重复

外键约束(foreign key):........(简称为FK)

检查约束(check):注意Oracle数据库有check约束,但是mysql没有,目前mysql不支持。

2、非空约束 not null

drop table if exists t_user;

create table t_user(

​ id int;

​ useame varchar(255) not null,

​ password varchar(255)

);

insert into t_user(id,password) values(1,'123');

ERROR 1364(HY000):Field 'useame' doesn't have a default value //报错

insert into t_user(id,useame,password) values(1,'lisi','123');

3、唯一性约束(unique)

唯一约束修饰的字段具有唯一性,不能重复。但可以为NULL。

给一列添加unique

drop table if exists t_user;

create table t_user(

​ id int,

​ useame varchar(255) unique

);

insert into t_user values(1,'zhangsan');

insert into t_user values(2,'zhangsan');

ERROR 1062(23000):Duplicate entry 'zhangsan' for key 'useame' //报错

insert into t_user(id) values(2);

insert into t_user(id) values(3);

insert into t_user(id) values(4);

给两个列或多个列添加约束

drop table if exists t_user;

create table t_user(

​ id int,

​ usercode varchar(255),

​ useame varchar(255) ,

​ unique(usercode,useame) //多个字段联合起来添加一个约束

);

4、主键约束

drop table if exists t_user;

create table t_user(

​ id int primary key,

​ useame varchar(255) ,

​ email varchar(255),

);

//此表中的id不能为null,也不能重复

主键的特点:不能为NULL,也不能重复

主键相关术语

主键约束:primary key

主键字段:id字段添加primary key之后,id叫做主键字段

主键值:id字段中的每一个值都是主键值

主键有什么用?

表的设计三范式中有要求,第一范式就要求任何一张表都应该有主键

主键的作用:主键值是这行记录在这张表中的唯一标识。(就像一个人的身份证号)

主键的分类

根据主键字段的字段数量来划分:

单一主键(推荐的,常用的)

复合主键(多个字段联合起来添加一个主键约束;不建议使用,因为复合主键违背三范式)

根据主键性质来划分:

自然主键:主键值最好就是一个和业务没有任何关系的自然数

业务主键:主键值和系统的业务挂钩,例如:拿着银行卡的卡号做主键,拿身份证号做主键(不推荐使用)

最好不要拿着和业务挂钩的字段作为主键,因为以后的业务一旦发生改变的时候,主键值可能也随着发生变化。但有的时候没有办法变化,因为变化可能会导致主键值重复。

一张表的主键约束只能有1个

mysql提供主键值自增

drop table if exists t_user;

create table t_user(

​ id int primary key auto_increment, //id字段自动维护一个自增的数字,从1开始,以1递增。

​ useame varchar(255) ,

);

insert into t_user(useame) values('a');

insert into t_user(useame) values('b');

insert into t_user(useame) values('c');

insert into t_user(useame) values('d');

提示:Oracle当中也提供了一个自增机制,叫做:序列(sequence)对象。

5、外键约束

外键约束相关术语

​ 外键约束:foreign key

​ 外键字段:添加有外键约束的字段

​ 外键值:外键字段中的每一个值

请设计数据库表,用来维护学生和班级的信息

两张表(班级表和学生表)

t_class 班级表

cno(pk) cname

------------------------------------------------------------------------------------

101 北京大兴区经济技术开发区亦庄二中高三1班

102 北京大兴区经济技术开发区亦庄二中高三2班

t_student 学生表

sno(pk) sname classno(该字段添加外键约束fk)

-------------------------------------------------------------------------------------

1 zs1 101

2 zs2 101

3 zs3 102

4 zs4 102

t_student中的classno字段引用t_class表中的cno字段,此时t_student表叫做子表,t_class表叫做父表。

顺序要求

​ 删除数据的时候,先删除子表,再删除父表。

​ 添加数据的时候,先添加父表,再添加子表。

​ 创建表的时候,先创建父表,在创建子表。

​ 删除表的时候,先删除子表,再删除父表。

建表代码:

drop table if exists t_student;

drop table if exists t_class;

create table t_class(

​ cno int,

​ cname varchar(255),

​ primary key(cno)

);

create table t_student(

​ sno int,

​ sname varchar(255),

​ classno int,

​ foreign key(classno) references t_class(cno)

);

外键可以为NULL

外键引用的字段不一定是主键,但至少具有unique约束

三十、存储引擎(了解内容)

1、完整的建表语句

CREATE TABLE t_x(

​ id int(11) DEFAULT NULL,

​ )ENGINE=InnoDB DEFAULT CHARSET=utf8;

建表的时候可以指定存储引擎,也可以指定字符集。

mysql默认使用的存储引擎是InnoDB方式。

默认采用的字符集是UTF8

2、什么是存储引擎?

存储引擎这个名字只有在mysql中存在。(Oracle中有对应的机制,但是不叫做存储引擎。就是‘表的存储方式’)

mysql支持很多存储引擎,每一个存储引擎都对应了一种不同的存储方式。

每一个存储引擎都有自己的优缺点,需要在合适的时机选择适合的存储引擎。

3、查看当前mysql支持的存储引擎

show engines \G

5.7一共有九个。

4、常见的存储引擎

数据库基础三 _ JavaClub全栈架构师技术笔记

MyISAM这种存储引擎不支持事务。

MyISAM是mysql最常用的存储引擎,但是这种引擎不是默认的

MyISAM采用三个文件组织一张表

​ xxx.frm(存储格式的文件)

​ xxx.MYD(存储表中数据的文件)

​ xxx.MYI(存储表中索引的文件)

优点:可被压缩,节省存储空间。并且可以转换为只读表,提高检索效率。

缺点:不支持事务。

-------------------------------------------------------------------------------

数据库基础三 _ JavaClub全栈架构师技术笔记

表的结构存储在xxx.frm文件中

数据存储在tablespace这样的表空间中(逻辑概念),无法被压缩,无法转换成只读。

这种InnoDB存储引擎在mysql数据库崩溃之后提供自动恢复机制

InnoDB支持级联删除和级联更新。

优点:支持事务。这种存储引擎数据的安全得到保障。

-----------------------------------------------------------------------------------

数据库基础三 _ JavaClub全栈架构师技术笔记

缺点:不支持事务。数据容易丢失。因为所有数据和索引都是存储在内存当中的。

优点:查询速度最快

以前叫HEPA索引。

作者:飞翔奥尔良烤翅
来源链接:https://www.cnblogs.com/webclub/p/14696301.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/database/117981.html

标签:1364:Field
分享给朋友:

“数据库基础三” 的相关文章