数据库增删改查基本操作

一、增加(create add insert )
1,create操作库
create database 库名 新建库
create database 库名 character set 编码表

mysql数据库,是当前应用非常广泛的一款关系型数据库

2,create 操作表结构
新建表:
create table 表名(
id int primary key auto_increment,
name varchar(20),
………….
);
primary key 主键约束(该列唯一值)
auto_increment 主键表自动增长
add 添加字段 alter table 表名 add 列名 数据类型 约束

当前使用的数据库,主要分为两类

3,insert 操作表数据内容
insert into 表名(列名1,列名2,列名3)values(值1,值2,值3)
insert into 表名 (列名) values (值)
insert into 表名 values (全列值)
insert into 表名 (列名1,列名,列名) values (值1,值2,值3),(值1,值2,值3)

1.文档型,如sqlite,就是一个文件,通过对文件的复制完成数据库的复制

二、删除(drop delete truncate)
1,操作库
drop database 数据库名

2.服务型,如mysql、postgre,数据存储在一个物理文件中,但是需要使用终端以tcp/ip协议连接,进行数据库的读写操作

2,操作表结构
drop table 表名 (删除的是整个表)
alter table 表名 drop 列名 删除列
3,操作表数据
delete from 表名 where 条件
delete from 表名 (没有where条件,删的是表中所有记录,逐行删除)
truncate table 表名 (先删除表,再创建表,等于删除整个表)

E-R模型

start transaction 开启事务 执行delete删除,rollback 事务回滚可找回
start transaction 开启事务 执行truncate删除,rollback 事务回滚不可找回

当前物理的数据库都是按照E-R模型进行设计的

三、修改 (alter modify change rename
update)
1,操作库
use 库名:更改库

E表示entry,实体

2,alter 修改表的结构
modify 修改约束类型 alter table 表名 modify tel varchar(50)
change 修改列名 alter table 表名 change 旧列名 新列名 数据类型 约束
rename 修改表名 alter table 旧表名 to 新表名
alter database 数据库名称 character set 编码表

R表示relationship,关系

3,update 操作表格数据
update 表名 set 列1 = 值1, 列2 = 值2 where 条件
where 条件:
id=6
id<>6 id 不等于6
id<=6
&& || ! and、or、not
id in(1,3,4,5)
is null为空,is not null 不为空
ifnull(值1,0);若为空,设置值为0;

一个实体转换为数据库中的一个表

四、查询(select show )
1,操作库
show databases
show create database 库名: 查看库编码表
select database(); 查看正在使用的库

关系描述两个实体之间的对应规则,包括

2,操作表结构
show tables; 查询表
desc 表名; 查看表结构
show create table 表名; 查看表的编码

1.一对一

3,操作表数据
select 列名1,列名2 from 表名 查询指定列的数据
select * from 表名 查询所有列的数据

2.一对多

关键字:
as:重命名
like: 模糊查询 like%、%like%、like__

3.多对多

格式:
select 列名 as 别名 ,列名 as 别名… from 表名 where 条件1 group by 列名
having 条件2 order by 排序
说明: 条件1 会先执行过滤 -> 进行分组 -> 条件2 进行过滤

关系转换为数据库表中的一个列在关系型数据库中一行就是一个对象

顺序说明:select …要显示的内容.. from …表名.. where 条件…. group by
…分组的列 …having …分组后的条件… order by …排序?
select …5… from …1.. where …2.. group by ..3…having ..4… order by
…6.

三范式

查询排重:
select distinct 列名 from 表名 where 条件

经过研究和对使用中问题的总结,对于设计数据库提出了一些规范,这些规范被称为范式

 

1.第一范式(1NF):列不可拆分

五、聚合函数:
count 统计个数、sum 求和、 avg 平均值、max、 min

2.第二范式(2NF):唯一标识

分组处理:group by

3.第三范式(3NF):引用主键

排序: order by 列名 asc|desc

说明:后一个范式,都是在前一个范式的基础上建立的

六、多表设计
1、一对多
比如 一个部门有多个人,一个人只有一个部门
外键约束格式:
alter table 从表名称 add foreign key (外键列的名称) references
主表名称(主键)
创建表时候,直接创建主键约束
dept_id int,
foreign key (dept_id) references dept(id)
2、多对多
比如:一个项目被多个程序员写,一个程序员写多个项目
3、一对一
比如 一个人只有一份个人档案,一个档案对应一个人

约束:

七、数据备份及恢复:
1,备份
mysqldump -u 用户名 -p 数据库名 > 磁盘SQL文件路径
mysqldump uroot -p zhangwu> G:mybases2.sql
Enter password:123

1.主键primary key

2,恢复
方式一:创建数据库,导入数据
create database db1:
use db1;
source G://mybases2.sql

2.非空not null

方式二:创建数据库,命令行中输入
create database db2:
退出数据库,在dos下输入
mysql -uroot -p db2 < G://mybases2.sql
Enter password:123

3.惟一unique

八、范式:
第一范式:1NF:数据库表的每一列都是不可分割的原子数据项
第一范式每一列不可再拆分,称为原子性。

4.默认default

第二范式:2NF:第二范式就是在第一范式的基础上所有列完全依赖于主键列
第二范式的特点:
1) 一张表只描述一件事情。
2) 表中的每一列都完全依赖于主键

5.外键foreign key

第三范式:3NF:所有列不依赖于其它非主键列,也就是在满足2NF的基础上,任何非主键列不得传递依赖于主键。
所谓传递依赖,指的是如果存在”A → B →
C”的决定关系,则C传递依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系:主键列
→ 非主键列x → 非主键列y。

数据库操作

示例:学生信息表
学号 姓名 年龄 所在学院 学院地点

·创建数据库

满足第二范式,不满足第三范式
存在传递的决定关系:
学号?所在学院 ? 学院地点

create database数据库名charset=utf8;

拆分成两张表
学号 姓名 年龄 所在学院的编号(外键)
学院编号 所在学院 学院地点

·删除数据库

三大范式小结:
范式 特点
1NF 原子性:表中每列不可再拆分。
2NF
不产生局部依赖,一张表只描述一件事情。白哦中的每一列是完全依赖于主键的。
3NF
不产生传递依赖,表中每一列都直接依赖于主键。而不是通过其它列间接依赖于主键。

drop database数据库名;

·切换数据库

use数据库名;

·查看当前选择的数据库

select database();

表操作

·查看当前数据库中所有表

show tables;

·创建表

auto_increment表示自动增长

create table表名(列及类型);

如:

create table students(

id int auto_incrementprimary
key,

sname varchar(10) not null

);

·修改表

alter table表名add|change|drop列名类型;

如:

alter table students add
birthdaydatetime;

·删除表

drop table表名;

发表评论

电子邮件地址不会被公开。 必填项已用*标注