MySQL 增删改查 基础

总结

第一章

数据库设计 简述数据库完整性及相关作用? 数据库的数据完整性==数据的一致性与准确性 如何保证数据完整性?实施约束

1.实体完整性约束

主键约束 标识列 唯一约束

2.引用完整性约束

外键约束

3.自定义完整性约束

约束方法:规则,存储过程,触发器

4,域完整性约束

约束方法:限制数据类型,检查约束,外键约束,默认值,非空约束

软件项目实施过程: 【瀑布模型】--》项目风险 需求分析调研【售前】--》设计阶段Ui设计【美工】,产品原型设计【产品经理】,数据库设计,技术路线选型)---》开发阶段---》测试阶段---》产品实施阶段---》产品发布上线【java软件开发】 -->测试阶段【测试工程师】---》产品实施阶段【软解实施工程师】---》产品发布上线

【敏捷式开发】 中心思想:持续集成,持续部署 互联网公司 软件公司

设计数据库的步骤:

1,收集信息(meeting)

2.标识实体

3.标识实体所拥有的属性

4.标识实体与实体之间的关系

5.构建E-R图(实体关系图)

6.Meeting 开会讨论

7.将E-R图转换为数据库模型图-(工具:Navicate data Model)

8.Meeting开会讨论

9.使用数据库三大范式 规范化数据库设计

10.依照与数据库模型图建库建表

UML统一建模语言 实现图形构建 E-R图

画图的目的:更好的方便团队的协作:

数据库三大范式:

第一范式:确保表中的每一列原子性最小不可再分; 第二范式:在满足第一范式基础之上,要求表中列于逐渐依赖(一张表只能表达一件事情); 第三范式:在满足第二范式基础之上,要求表中的列与主键之间相关联;

总结:数据库的范式其实是五大范式,第五范式成为完美范式; 注意:有时候为了满足特定业务场景的需求,我们可能会违反数据库的范式只满足第二范式;

世界上没有完美的软件程序 也没有完美的软件架构;

第二章

第二章 初始MySql 数据库分类:(编程语言:T-Sql 标准的结构化查询语言)

关系型数据库

T-Sql 语言的组成 : DQL(数据库查询语言) DCL(数据操作语言):insert delete update** DDL(数据定义语言):create database/create table drop database/droptable.... TCL(事务控制语言):commit rollback


Oracle 甲骨文公司产品 8i 9i 10g 11g 11gr2 12c 亿级 收费

MS SQLSercer 2000 2005 2008 【数据库性能可以与ORacie数据库相媲美?】千万级 收费 MySql 开源(开放源代码,免费)数据库 DB2 IBM 百万级 Office access 十万级数据 Google SQLITE 文件型数据库 MB 非关系型数据库 NoSql : Not only Sql; 内存型数据库 17年流行 Redis

MongoDB

数据库是由两部分组成:1.客户端 2.服务器端

show databases: 查看本机所有的数据库

use 【database】 切换数据库 show tables: 查看当前数据库中所有的表; ------面向数据库编程

create database 数据库名称 新建数据库 drop database 数据库名称:删除数据库 desc 表名;查看表结构 设置避免dos窗口乱码 names gdk;

drop table [if exist] 表名; Enige=

连接MYSql数据库方式:

1.DOS命令窗口 2.MYsql自带的连接工具 3.第三方连接工具(Navicate,SQLYog);

js.T-Sql脚本语言--解释型语言 java 编译型语言 .frm .myd 数据文件 .myi 索引文件

第三章:高级查询

C(create)U (update) R (reader) D (delete) 操作

查询操作是最复杂的

*如何提升海量数据的检索效率;(没有最好的只有当前环境下)

1.优化Sql语句 2.为表增加索引(Mysql,全文索引,SqlServer 具体索引,非具体索引) 3.修改Mysql数据库表的参数配置(Myisam存储引擎) 4.数据库分流(分库,分表--拆分原则) 5.缓存技术 6.适应非关系型数据库 (特点:内存行数据库)

修改表的名称

alter table tb_student rename to tb_studentpass alter table 旧表名 rename to 新表名

添加字段

alter table tb_student add ·address· varchar(20); alter table 表名 add 要添加的新字段 + 数值类型

修改字段

alter table tb_student change address v_address varchar(20); alter table 表名 change 选择的行 新修改的名字 +数值类型

删除字段

alter table tb_sutdent drop v_address alter table 表名 drop 字段名;

添加主键

alter table tn_student add constraint pk_sid primary key 表名 tb_student(sid); alter table 表名 add constraint 主键名 primary key 表名 tb_student(sid);

给表增加外键

alter table tb_scored add constraint fl_sid foreign key (sid) references tb_student(sid) alter table 表名 add constraint 外键名 foreign key (外键字段) references (选中的表和+(字段))

1.插入单行数据

insert into 表名 [()]

批量插入

insert into tb_student values(null,葫芦大王,20,1) (null,葫芦二弟,21,1) (null,葫芦三弟,22,0) insert into 表名 values(null,葫芦大王,20,1) (null,葫芦二弟,21,1) (null,葫芦三弟,22,0)

2.批量插入(复制粘贴到新表)

insert into tb_studentInfo select * from tb_student;

3.批量插入(直接创建插入)

create table tb_student3 (select * from tb_student);

更新

tpdate tb_student set sname='阿诺施瓦辛格' where sid=26;

删除表

1.delete from tb_student where ; 2.truncate table tb_studnt;(不能追加where 或其它条件) (删除后再次追加语句标识列自动归零)

注释

/* 1,删除一张表中所有的数据,请输入用truncate table 性能比较好 2. 标识列是否会自动归零; */

/------------------------查询--------------------/

select * from tb_stident; select sid,agen from tb_student; select sid as 学生编号,sname 学生姓名 form tb_student; select st.sid,st.sname,st.age from tb_student as st; #常量列 select sid,sname.'三好学生' form tb_student; #distinct去重名 insert into tb_student values(null,'葫芦2娃',12,2) select distinct sname from tb_student where sname='葫芦2娃'; #union ,union ALL select * from tb_student where sid=25; union(必须要求一模一样要不然无法合并查询结果) select * from tb_student where sid=26;

select sname * from tb_student where sid=25; union All select sname * from tb_student where sid=26;

#分组

select sex,count(*) from tb_student group by sex;

/where having 区别?/

#排序

select *from tb_student order by sid desc; (升序是asc,降序是desc)

#LIMIT

select * from tb_student limit 2; select * from tb_student order by sid desc limit 2;(最后两名) select * from tb_student limit 2,2;(从第一个二开始截取,第二个2是获取两个)

#聚合函数

sum(和) avg(平均数) max(最大) min(最小) count(数量) select sum(sid) from tb_student;

/***

数据库的函数分类 1.聚合函数 2.系统函数(String字符串处理函数,日期处理函数) 3.自动逸函数(create function f_sum()begin end;) ***/

select helloworld;

#字符串函数

select contcat(sname,-,三好学生) from tb_student;

selct insert(我是易建联,3,2,'我是林书豪')替换文字

select lower('helloworld');转换小写

select upper('helloworld');转换大写

select substring('hello',4,2)字符串截取

select substring(sname,1,2) from tb_student; 截取 select concat(substring(sname,1,2),'---','王覅') from tb_student;

select new();当前时间年月日分秒 select curdate();当前日期年月日 select curttme();当前分秒

select week((now()));获取当前时间在多少周 select year(new());当前年份 select hour();获取当前小时 select minute(now());获取当前分钟

select datadiff(now(),2021-1-1);相差多少天 select adddate(now(),5)在当前时间增加多少天

select ceil(3.4);

select floor(3.7);

select rand();生成随机数

#in 在。。。范围

select * from tb_student where sid in(25,27,30); select * from tb_student where sid not in(25,27,30);

#between....and 在。。。范围

select * from tb_student where sid Between 1 and 30 select * from tb_student where sid not betWeen 1 and 30

#子查询可以被链接代替 反之不一定;

/**

表连接:

1.内连接 inner join 2.外连接 2.1.左外连接 left [outer] join 2.2.右外连接 right [outer] join 3.交叉式连接(实现迪米特算法)full join(mysql不支持) **/

#内连接

select * form tb_student st inner join tb_scored sc on st.sid=sc.sid;

select * from tb_student st,tb_scored sc where st.sid=sc,sid;

#左外连接(拿右边的比较没有的话不连接)

select * form tb_student st left join tb_scored sc on st.sid=sc.sid;

#右外连接(拿左边的比较没有的话不连接)

select * form tb_student st right join tb_scored sc on st.sid=sc.sid;

交叉式连接

select * form tb_student st join tb_scored sc on st.sid=sc.sid; union select * form tb_student st right join tb_scored sc on st.sid=sc.sid;

第四章

创建临时表 查询

areate temporary table 表名 (查询语句);

第五章

第五章 事务 视图 索引 备份和还原 一.事务: acid 为什么需要使用事务? -===看具体业务场景,当我们队批量sql执行要求统一的结果(要么同时成功 要么同时失败); 概念事务是批量sql语句执行的单元,其本身原子性最小;

事务必须具有四个属性

1.原子性 (a) 2.一致性 (c) 3.隔离性 (i) 4.持久性 (d)

数据库存储过程--类似java中的方法.

注意:默认情况下mYsql为自动提交事务 每条sql语句在MYsql执行默认就是一个事务;

事务涉及的语法:

第一步 开启事务关键字begin 或 start transaction 第二步 commit 提交 rollback回滚(撤销) ----------> 存储过程 ---------->自定义函数 while loop repeate

二:视图

作用:定制查询 语法:create view v_name as sql 语句.....;

三:索引

作用:提升数据检索速度: 注意:索引不能乱用

普通索引

唯一索引

主键索引

复合索引

全文索引

空间索引

第七章

-----------------------JDBC---------------------- (java数据库连接技术) jdbc:java database connection

JDBC操作步骤;

1.加载驱动 2.创建数据库连接 3.创建语句对象 4.执行SQL语句 5.关闭连接

通过JDBC连接数据库的方式:

1.基于纯java驱动连接数据库(推荐第一种) 2.基于ODBC数据源的方式连接数据库;(JDBC-ODBC桥连接);

====》实例:增删改查《====

预编译语句

优势:

1.执行效率比较高 2.防止sql注入攻击

1.JDBC支持事务

2.关于存储构成调用

=========================

封装SmartJDBC

作用:为产品研发提供更高效的数据库访问的组件:

类库==》框架

第八章

DAO模式

DAO模式是非常流行的数据访问方式:

DAO模式组成:

1.SmartJDBC JDBC工具类 2.实体类 3.面向接口编程

DAO:data access object 数据访问对象(实现数据的增删改查操作)

软件架构问题:代码设计遵循高内聚,低耦合

三层架构开发

表示层(与用户互动) 业务逻辑层 Service 数据访问层 dao

三层架构指的是逻辑意义上,不是物理意义上的

【Notice】:不要违反三层架构开发的原则

 

你可能感兴趣的:(mysql,数据库)