数据库基础学习

来源:互联网 发布:算法导论中文版答案 编辑:程序博客网 时间:2024/06/05 20:41

一、数据库基础知识

1、什么是数据库

数据库就是存储数据的仓库,其本质是一种文件系统,系统按照特定的格式将数据存储起来,用户可以通过SQL对数据库中的数据进行增删改查操作。

2、数据库和表

这里写图片描述

数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中表内的数据。


常见的数据库(软件):
MYSQL:开源免费的数据库,小型的数据库。已被Oracle收购,MySQL6.x版本开始收费。
mysql变异:mariadb,阿里云centOS内置数据库。
Oracle:收费的大型数据库
DB2:IBM的数据库产品,收费。通常用在银行系统中。
SQLServer:Microsoft的收费的中型数据库。C# .net常使用。
SyBase:已淡出历史舞台,提供了一个非常专业的数据建模的工具PowerDesigner
SQLite:嵌入式的小型数据库,应用在手机端。
Java相关的数据库:MYSQL、Oracle

二、MySQL

1、启动和关闭(必须管理员身份运行cmd)

启动:net start mysql
关闭:net stop mysql

2、登录

(1)cmd>mysql -u用户名 -p密码。eg:mysql -uroot -p12345
(2)cmd>mysql –user=用户名–host=ip地址 –password=密码

3、sql语句

(1)什么是sql语句:结构化查询语言。关系数据库的国际标准。

4、sql分类

(1)数据定义语言(DDL,Data Define Language),用来定义数据对象:数据库database,表table,列column等。关键字:创建creat,修改alter,删除drop等(定义的是结构)
(2)数据操作语言(DML,Data Manipulation Language),用来对数据库中表的记录进行更新。关键字:插入insert,删除delete,更新update等(操作的是数据)
(3)数据查询语言(DQL,Data Query Language),用来查询数据库中表的记录。关键字select,from,where等。
(4)数据控制语言(DCL,Data Control Language),用于定义数据库的访问权限和安全级别,及创建用户:关键字grant等。

4、数据库操作

(1)创建数据库:
create database 数据库名称;
create database 数据库名称 character set 字符集;
(2)查看服务器中的所有数据库:show databases;
查看某个数据库的定义的信息:show create database 数据库名;
(3)删除数据库:drop database 数据库名称;
(4)其他的命令:
切换数据库:use 数据库名;
查看正在使用的数据库:select database();

5、表操作

(1)创建表:

create table 表名(    字段名 类型(长度)[约束],    字段名 类型(长度)[约束]);字符类型:varchar(n)

单表约束:1.1主键约束:primary key,要求被修饰的字段:唯一并且非空。
1.2唯一约束:unique,要求被修饰的字段:唯一。
1.3非空约束:not null,要求被约束的字段:非空。

(2)查看数据库表:
show tables;

(3)查看表结构:
Desc 表明;

(4)删除表:
drop table 表明;

(5)修改表:
这里写图片描述
字段类型:小数类型decimal(m,d)多用于表示钱。

6、数据操作

1.插入记录
insert into 表名(列名1,列名2,列名3……) values(值1,值2,值3……)
insert into 表名 values(值1,值2,值3……)
1.1 插入数据中文乱码问题解决办法:set names gbk;

2.修改表记录
2.1 不带条件的:update 表名 set 字段名=值, 字段名=值, 字段名=值……(会将该列所有的记录都修改)
2.2 带条件的:update 表名 set字段名=值, 字段名=值, 字段名=值…… where 条件

3.删除表记录
3.1 带条件的:delete from 表名 where 条件(删除后uid不会重置,假如删除第一条,则uid从2开始)
3.2.不带条件的:
先准备数据
insert into tbl_user values(null,’老王’,’666’);
删除操作
delete from 表名;

说说delete与truncate的区别?
delete删除(delete from 表名)的时候是一条一条的删除记录,不清空auto_increment,它配合事务,可以将删除的数据找回。开启事务:start transaction;。回滚:rollback;。
truncate删除(truncate table 表名),它是将整个表摧毁,然后再创建一张一模一样的表。它删除的数据无法找回。此时这张表是新表,auto_increment将置为0,再插入数据时记录从新开始

7、查询操作

语法:select [distinct] *| 列名,列名 from 表名 [where条件]
总结:
select 一般在的后面的内容都是要查询的字段
from 要查询到表
where
group by(分组)
having 分组后带有条件只能使用having
order by (排序)它必须放到最后面


limit关键字查询:
limit a,b 其中a代表(要查询的页数-1)×b;b代表每页的数据的条数。
eg:select * from tbl limit 6,3;(代表要查找第3页,每页中有3条数据)


聚合函数:sum(price);avg(price);count(*) eg:select * avg(price) from product;

三、多表操作

1、声明外键约束

外键:从表外键的值是对主表主键的引用。从表外键的类型必须和主表主键的类型一致
在一对多的关系中我们在的一方的表中创建一个外键来指向的一方。
一对多语法:alter table 从表 add [constraint] [外键名称] foreign key (从表外键字段名) references 主表(主表的主键);
[外键名称]用于删除外键约束。一般建议以_fk结尾:drop table 从表 drop foreign key 外键名称
使用了外键后可以保证数据的完整性,防止误删导致数据不完整。主表不能删除从表中已经引用的记录。从表不能添加主表中不存在的记录(例如主表主键没有xxx,则在从表中就不能为外键添加xxx的数据)。

2、表与表的关系

(1)一对多
常见实例:客户与订单,分类和商品,部门和员工
一对多建表原则:在从表(多方)建立一个字段,字段作为外键指向主表(一方)的主键。
(2)多对多
常见实例:学生和课程,商品和订单,人和角色
多对多建表原则:需要创建三张表,中间表至少有两个字段,这两个字段分别作为外键指向各自一方的主键。
(3)一对一
一对一使用不多,因为完全可以放在一张表中。
一对一建表原则:主表的主键和从表的外键唯一,形成主外键关系,外键唯一unique。主表的主键和从表的外键形成主外键关系。

3、多表查询

(1)交叉连接(得到的是两个表的笛卡尔积)

select * from A,B;

(2)内连接查询(inner join——inner可以省略)
隐式内连接:select * from A,B where 条件;
eg:select * from category c,product p where c.cid=p.category_id;

显式内连接:select * from A inner join B on 条件;
eg:select * from category inner join product on cid=category_id;

(3)外连接查询(outer join——outer可以省略)
左外连接:left outer join

select * from A left outer join B on 条件;eg:select * from category left join product on cid=category_id;

右外连接:right outer join

select * from A right outer join B on 条件;eg:select * from category right join product on cid=category_id;

内外连接的区别:
这里写图片描述

(3)子查询

#实例:#隐式内连接select * from product p,category c where p.category_id=c.cid and c.cname='化妆品';#子查询select * from product where category_id=(select cid from category where cname='化妆品');
原创粉丝点击