Mysql_1 数据库基础
目录:
数据库基本知识
数据库管理系统
一、数据库基本知识
数据库系统由数据库、数据库管理系统、应用系统和数据库管理员构成
1.数据库定义
数据库实际上就是一个文件集合,是一个存储数据的仓库,本质就是一个文件系统,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查操作。
2.关系型数据库
依照关系模型建立的数据库称为关系数据库。 它是在某个应用领域的所有关系的集合。
补充:非关系型数据库:
通常用来解决某些特定的需求如:数据缓存,高并发访问。 存储数据的形式有多种,举例:Redis数据库:通过键值对的形式存储数据;
关系型数据库和非关系型数据库的区别:
关系型数据库:安全(保存在磁盘基本不会丢失),容易理解和掌握,比较浪费磁盘空间
非关系型数据库:不安全(断电数据会丢失),效率高(运行在内存上比磁盘效率要高)
3.表
某种特定类型数据的结构化清单
4.二维表
在关系模型中,数据结构表示为一个二维表,一个关系就是二维表。
5.列
表中的一个字段,所有表都是一个或多个列组成
6.行
表中的一个记录。
7.主键
能够唯一地标识一个元组的属性或属性组称为关系的键或候选键。 若一个关系有多个候选键则可选其一作为主键(Primary key)。
外键:如果一个关系的一个或一组属性引用(参照)了另一个关系的主键,则称这个或这组属性为外码或外键(Foreign key)
二、数据库管理系统
数据库管理系统(DBMS,Database Management System),是一个软件,用来管理数据库文件的软件,用户可以访问DBMS对数据进行增删改查操作,常见DBMS有: MySQL、oracle、DB2、sqlite、sqlserver等。
(1)数据定义功能:提供数据定义语言(DDL)
常见的有:
DROP(删除数据库)
删除数据库:drop database if exists 数据库名
CREATE(创建数据库)
创建表:create table if not exists 表名(列名 列名约束)
ALTER(修改数据库)
添加列名:alter table 表名 add 列名 约束条件
修改列名:alter table 表名 change 老列名 新列名 数据类型
修改列字段数据类型:alter table 表名 modity 列名 数据类型
删除列名:alter table 表名 drop 列名
修改表名:alter table 表名 rename 新表名
GRANT(赋予权限)
REVOKE(从当前用户或组中取消权限)、TRUNCATE(只删除表中的所有数据,不删除表的结构)
(2)数据操纵功能:提供数据操纵语言(DML)
操纵数据实现对数据库的基本操作:
SELECT(查询)
select from 表名 where 条件(条件1 and 条件2)
INSERT(插入)
insert into 表名(列1,列2) values(' ',' '),(' ',' '),(' ',' ')
DELETE(删除)
delete from 表名 where 条件
UPDATE(修改)
update 表名 set 列名=' ',列名=' ' where 条件
(3)数据库的运行管理
a、保证数据的安全性、完整性
b、多用户对数据的并发使用
c、发生故障后的系统恢复
(4)数据库的建立和维护功能(实用程序)
a、数据库数据批量装载
b、数据库转储
c、介质故障的修复
d、数据库的重组织
e、性能监视
(3)视图
视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。本身不存储数据,而是按照指定的方式进行查询
创建视图CREATE VIEW 视图名(列1,列2...) AS SELECT (列1,列2...) FROM ...;
修改视图:CREATE OR REPLACE VIEW 视图名 AS SELECT [...] FROM [...]
查看数据库已有视图:>SHOW TABLES [like...];(可以使用模糊查找)
查看视图详情:DESC 视图名或者SHOW FIELDS FROM 视图名
视图条件限制:[WITH CHECK OPTION]
(4)存储过程
存储过程的优点:
a.存储过程的能力大大增强了SQL语言的功能和灵活性。
b.可保证数据的安全性和完整性。
c.通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。
d.通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。
e.在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。
f.可以降低网络的通信量。
g.使体现企业规则的运算程序放入数据库服务器中,以便 集中控制。
存储过程可以分为系统存储过程、扩展存储过程和用户自定义的存储过程.
create procedure proc_select_officeinfo--(存储过程名)
as select Id,Name from Office_Info--(sql语句)
exec proc_select_officeinfo--(调用存储过程)
有参数时
create procedure procedure_proc_GetoffinfoById --(存储过程名)
@Id int--(参数名 参数类型)
as select Name from dbo.Office_Info where Id=@Id--(sql语句)
exec procedure_proc_GetoffinfoById 2--(存储过程名称之后,空格加上参数,多个参数中间以逗号分隔)
注:参数赋值是,第一个参数可以不写参数名称,后面传入参数,需要明确传入的是哪个参数名称