数据库基础MySql

数据库概述

数据库(DataBase)为了方便数据的存储和管理,它将数据按照特定的 规则存储在磁盘上,就是一个存储数据的仓库。

● 数据库的相关概念 DB:数据库(DataBase) 存储数据的容器,它保存了一系列有组织的数据。

DBMS:数据库管理系统(DataBase Management System) 又称为数据库软件或数据库产品,用于创建或管理DB。

● 常见的数据库产品:

国外

MySQL 快捷、可靠 开源、免费 Oracle:功能强大,收费.

SQL Server(微软): 只能安装在Windows操作系统 DB2 (IBM):适合处理海量数据,收费.

国内

南大通用GBASE: 天津南大通用数据技术股份有限公司

达梦:武汉达梦数据库股份有限公司

人大金仓:北京人大金仓信息技术股份有限公司 神通:神舟通用公司

Mysql数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目 前属于 Oracle旗下产品。MySQL 流行的关系型数据库管理系统。

● MySql是一种关系数据库管理系统。

● MySql软件是一种开放源码软件,你可以修改源码来开发自己的 Mysql 系统。

● MySql数据库服务器具有快速、可靠和易于使用的特点。

● MySql使用标准的sql语言,并且支持多种操作系统,支持多种语言.

● mysql商业版与社区版

● MySQL商业版是由MySQL AB公司负责开发与维护,需要付费才能使用

● MySQL社区版是由分散在世界各地的MySQL开发者、爱好者一起开发与维 护,可以免费使用

●命令行方式连接mysql 登录:mysql [-hlocalhost -P3306](本机可省略) -uroot -p(可以直 接写密码,不能有空格)-h:主机名-P:端口号-u:用户名-p:密码 退出:exit

MySQL的常用命令 查看当前所有的数据库:show databases; 选择指定的库:use 库名 查看当前的所有表:show tables; 查看其他库的所有表:show tables from 库名; 查看mysql版本 select version();

安装可视化客户端工具 SQLyog / Navicat

sql

● 结构化查询语言(Structured Query Language)简称SQL,是一种特殊 目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以 及查询、更新和管理关系数据库系统. SQL优点: 不是某个特定数据库供应商专有的语是言,几乎所有DBMS都支持SQL 简单易学,灵活使用可以进行非常复杂和高级的数据库操作

DDL数据(结构)定义语言(Data Definition Language)

●数据(结构)定义语言DDL(Data Definition Language),是用于创 建和修改数据库表结构的语言。 ●常用的语句:create ,alter,drop,rename

数据库

创建数据库

CREATE DATEBASE [if not exists] 数据库名[CHARSET utf8]

删除数据库

DROP DATEBASE 数据库名[IF EXISTS 数据库名]

修改字符集

ALTER DATABASE 数据库名 CHARSET gbk

设计表

对于具体的某一个表,在创建之前,需要确定特征:

1.表名(表信息) ---学生信息表

2.表中的字段(列)---姓名 学号 性别

3.字段的数据类型和长度

4.约束

数据类型:

char(n) 长度为n的定长字符串,最大长度255个字符,固定存储为n个字符,长度如果不够n,默认补空格。

varchar(n) 最大长度为n的可变长字符串 ,n是最大长度,如果存储不够n,则存多少字符占有多少空间位置。

date 日期, 包含年月日

datetime 年月日 时分秒

浮点

decimal 数据类型(M,D)

M:精度,数据的总长度;

D:标度,小数点后的长度

删除表

DROP TABLE [if exists] 表名

修改表名

RENAME TABLE 旧表名 TO 新表名

复制表结构

CREATE TABLE 新报名 LIKE 被复制表名

约束

PRIMARY KEY 设置主键约束 添加主键约束后,值不能重复,一个表中只能有一个列是主键 。主键列可以唯一的表示某一行数据,mysql中主键可以设置为自动增长 AUTO_INCREMENT,只能为整数类型。

NOT NULL 不能为空约束

UNIQUE 唯一性约束 表示不能重复

检查约束 设置条件 CHECK(条件)

注释

COMMENT ‘注释内容'

数据操纵语言DML(Data Manipulation Language)

插入数据

方式1: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n);

方式2: INSERT INTO 表名 set 列名1=值1,..列名n=值n;

方式3: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n),(值1,值2…..,值n);

方式4:INSERT INTO 表名(列1,列2……,列n) 查询语句(查询的列数与插入列数匹配)

修改数据

UPDATE 表名 SET 列名 = ‘新值’WHERE 条件

修改表 alter table 表名 add 列名 数据类型

删除数据

DELETE FROM 表名 WHERE 条件

TRUNCATE TABLE 表名;清空整张表

DQL(Data Query Language)数据查询语言查询是使用频率最高的一个操作, 可以从一个表中查询数据,也可以从多个表中查询数据

查询数据

select 查询列表 from 表名

查询列表可以是:表中的字段、常量、表达式、函数

查询的结果是一个虚拟的表格

特定列查询:select column1,column2 from table

全部列查询: select * from table

算数运算符:+ - * /

排除重复行: select distinct column1,column2 from table

查询函数:select 函数; / 例如version()

逻辑处理

case when 条件 then 结果1 else 结果2 end; 可以有多个when

ifnull(被检测值,默认值)函数检测是否为null,如果为null,则返回指定的值,否则返回 原本的值

if函数:if else的 效果 if(条件,结果1,结果2)

数学函数

round(数值):四舍五入

ceil(数值):向上取整,返回>=该参数的最小整数

floor(数值):向下取整,返回<=该参数的最大整数

truncate(数值,保留小数的位数):截断,小数点后截断到几位

mod(被除数,除数):取余,被除数为正,则为正;被除数为负,则为负

rand():获取随机数,返回0-1之间的小数

日期函数

now():返回当前系统日期+时间 年月日时分秒

curdate():返回当前系统日期,不包含时间 年月日

curtime():返回当前时间,不包含日期 时分秒

可以获取指定的部分,年、月、日、小时、分钟、秒

YEAR(日期列), year(日期) 将日期格式化为年

MONTH(日期列),

DAY(日期列) ,

HOUR(日期列) ,

MINUTE(日期列)

SECOND(日期列)

str_to_date(字符串格式日期,格式):将日期格式的字符转换成指定格式的日期

date_format(日期列,格式):将日期转换成字符串

datediff(big,small):返回两个日期相差的天数 big-small

日期格式

分组函数

功能:用作统计使用,又称为聚合函数或统计函数或组函数 

分类:sum 求和、avg 平均值、max 最大值、min 最小值、count 计数 (非空)

1.sum,avg一般用于处理数值型max,min,count可以处理任何类型 2.以上分组函数都忽略null值 

3.count函数的一般使用count(*)用作统计行数 

4.和分组函数一同查询的字段要求是group by后的字段

## 条件查询 

使用WHERE 子句,将不满足条件的行过滤掉,WHERE 子句紧随 FROM 子句。

语法:

select <结果> from <表名> where <条件>

 比较

​           =,  != 或<>,  >,  <,  >=,  <=

 逻辑运算    

and    与     

or     或    

not    非

模糊查询

 LIKE :是否匹配于一个模式 一般和通配符搭配使用,可以判断字符型数值 或数值型.

通配符: % 任意多个字符  

between and 两者之间,包含临界值;

 in  判断某字段的值是否属于in列表中的某一项  not in()不满足其中的

 IS NULL(为空的)或 IS NOT NULL(不为空的)  查询身高为null的值或不为null的值

1.UNION 的语法如下:

 [SQL 语句 1]

 UNION

 [SQL 语句 2]

合并时列数必须相等  会自动过滤重复的数据

 2.UNION ALL 的语法如下:

 [SQL 语句 1]

 UNION ALL 

[SQL 语句 2]

当使用union  时,mysql 会把结果集中重复的记录删掉,而使用union  all , mysql 会把所有的记录返回,且效率高于union 。

排序         

查询结果排序,使用 ORDER BY 子句排序    order by 排序列  ASC/DESC                

asc代表的是升序,desc代表的是降序,如果不写,默认是升序            

order by子句中可以支持单个字段、多个字段

数量限制           

limit子句:对查询的显示结果限制数目  (sql语句最末尾位置)            

 SELECT * FROM table  LIMIT offset rows;              

SELECT * from table  LIMIT 0,5

limit 开始查询的位置,每次查询的个数

从第零个数据开始查询 查询五个数据

分组查询 语法:

 select 分组函数,列(要求出现在group by的后面) from 表 [where 筛选条件] group by 分组的列表 [having 分组后的筛选] [order by 子句]

注意:查询列表比较特殊,要求是分组函数和group by后出现的字段 分组查询中的筛选条件分为两类:

数据库设计范式(数据库设计规则)

如何将多个信息合理的进行组织

设计三范式

1.第一范式(确保每列保持原子性)

第一范式就是最基本的范式。数据库表中的所有字段值都是不可分解的原子值。

2.第二范式(要有主键,要求其他字段都依赖于主键,能唯一的表示某条记录的列,有些表中可以没有主键)

3.第三范式:确保每列都和主键列直接相关,而不是间接相关,要求一个数据库表中不包含已在其他表中包含的非主关键字信息(一张表中存储一类信息,在一张表中关联其他表中的数据时,只需要关联主键列即可。)

外键

外键:与另一个表的主键关联

外键约束

1.不加外键约束

可以任意的对表数据进行操作,即使两个表中的数据对应不上也没有问题

2.添加外键约束

alter table 表名1 add constraint fk_表名1_表名2 foreign key(表名1的相关列名) references 表名2(相关列名)

添加外键约束后,两张表操作时,不能导致外键和主键对应关系不成立

删除外键

alter table 表名 drop foreign key 约束名

关联查询

多表关联在一起查询

关联时没有任何的限制,会产生笛卡尔乘积现象

内关联

左外关联

右外关联

group_concat() 在多对多的情况下,可以将同一组中的多个名字连接起来

子查询

出现在其他语句中的select语句,称为子查询或内查询;外部的查询语句,称为主查询或外查询

分类:

按子查询出现的位置:

from后面:支持表子查询 把子查询的结果当做另一个表的数据来源

where:支持标量子查询,列子查询

按功能、结果集的行列数不同:

标量子查询(结果集只有一行一列)

列子查询(结果集只有一列多行)

表子查询(结果集一般为多行多列)

  • 18
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值