MySql基础(一)

数据库是存储数据的系统,通过DBMS进行管理和查询。SQL是通用的查询语言,适用于各种关系型数据库如MySQL、Oracle等。文章介绍了MySQL的特点和常用命令,以及表的设计、数据类型、约束和DML操作,如插入、更新和删除数据。同时,讨论了数据查询语言DQL的基础查询和条件查询。
摘要由CSDN通过智能技术生成

数据库概述

为什么学习数据库:

  • 实现数据持久化到本地;
  • 使用完整的管理系统统一管理,可以实现结构化查询,方便管理;

数据库(DataBase)为了方便数据的存储和管理,它将数据按照特定的 规则存储在磁盘上,就是一个存储数据的仓库。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据;

数据库的相关概念:

DB:数据库(DateBase)

存储数据的容器,保存了一系列有组织的数据

DBMS:数据库管理系统(DataBase Management System)

又称为数据库软件或数据库产品,用于创建或管理DB。

SQL:结构化查询语言(Structure Query Language) 用于和数据库通信的语言,不是某个数据库软件特有的,而是几乎所有的 主流数据 库软件通用的语言

根据不同的存储类型可以分为:

关系型数据库

关系型数据库管理系统称为RDBMS,R指Relation

  • Oracle:功能强大,收费.
  • MySQL 快捷、可靠 开源、免费
  • SQL Server(微软): 只能安装在Windows操作系统
  • DB2 (IBM):适合处理海量数据,收费;

非关系型数据库 MongdoDB Redis

Mysql数据库

  • MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目 前属于 Oracle旗下产品。MySQL 流行的关系型数据库管理系统
  • MySql是一种关系数据库管理系统。
  • MySql软件是一种开放源码软件,你可以修改源码来开发自己的 Mysql 系统。
  • MySql数据库服务器具有快速、可靠和易于使用的特点。
  • MySql使用标准的sql语言,并且支持多种操作系统,支持多种语言.
  • mysql商业版与社区版
  • MySQL商业版是由MySQL AB公司负责开发与维护,需要付费才能使用
  • MySQL社区版是由分散在世界各地的MySQL开发者、爱好者一起开发与维 护,可以免费使用

查看mysql数据库的版本

select version();(mysql命令) 

MySQL的常用命令 查看当前所有的数据库:show databases;

选择指定的库:use 库名

查看当前的所有表:show tables;

查看其他库的所有表:show tables from 库名;

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

MySQL语法规范

不区分大小写,建议关键字大写,表名、列名小写

每句话用; 

注释  单行注释:#注释文字

单行注释:-- 注释文字(要有空格)

多行注释:/* 注释文字 */

SQL

结构化查询语言(Structured Query Language)简称SQL,是一种特殊 目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以 及查询、更新和管理关系数据库系统

SQL优点: 不是某个特定数据库供应商专有的语是言,几乎所有DBMS都支持SQL 简单易学 实际上强有力的语言,灵活使用可以进行非常复杂和高级的数据库操作

DDL

数据(结构)定义语言DDL(Data Definition Language),是用于创 建和修改数据库表结构的语言。

常用的语句:create ,alter,drop,ren

创建,删除数据库

创建数据库并设置编码格式

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

删除数据库

DROP DATABASE 数据库名 / [IF EXISTS数据库名];

修改字符集

ALTER DATABASE 数据库名 CHARSET gbk

数据库存储数据的特点

  • 将数据放到表中,表再放到库中
  • 一个数据库中可以有多个表,每个表都有一个名字,用来标识自己。表名具有 唯一性。 
  • 表具有一些特性,这些特性定义了数据在表中如何存储,类似Java中“类”的 设计。 
  • 表由列组成,我们也称列为字段。所有表都是由一个或多个列组成的,每一列 类似java中的”属性”
  • 表中的数据是按行存储的,每一行类似于Java中的“对象”

数据库表的基本概念

数据表

表(table)是数据存储的最常见和最简单的形式,是构成关系型数据库的基本元素。 表的最简单形式是由行和列组成,分别都包含着数据。 每个表都有一个表头和表体,表头定 义表名和列名 .表中的行被看作是文件中的记录,表中的列被看作是这些记录的字段。

记录

记录也被称为一行数据,是表里的一行。在关系型数据库的表里,一行数据是指一条完 整的记录。

字段

字段是表里的一列,用于保存每条记录的特定信息。如客户订单表的字段包括“订单 ID”、“姓名”、“客户ID”、“职务”、“上级”、“地区”、“运货商”、“国家”等。 数据表的一列包含了特定字段的全部信息

设 计 表 

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

  • 表名(表信息) 
  • 表中的字段
  • 字段的数据类型和长度 
  • 哪些约束

设计表(数据类型)

  • char(n) 长度为n的定长字符串
  • varchar(n) 最大长度为n的可变长字符串
  • date 日期, 包含年月日
  • datetime 年月日

 

 数据类型(M,D)

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

D:标度,小数点后的长度 建议使用double Float(6,2)、Double(6,2)

TEXT列字符字符串

有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。

它的长度:

  • TINYTEXT:最大长度255个字符(2^8-1)
  • TEXT:最大长度65535(2^16-1)
  • MEDIUMTEXT:最大长度16777215(2^24-1)
  • LONGTEXT最大长度4294967295(2^32-1)

主键: 在一张表中代表唯一的一条记录,不能为空,不能重复

约束:

  • PRIMARY KEY设置主键约束
  • NOT NULL 不能为空约束
  • UNIQUE 唯一性约束 检查约束 设置条件 外键约束
  • 主键自动增长 AUTO_INCREMENT
  • 默认值 DEFAULT default_value
  • 字段注释: comment '注释'

创建表语法: CREATE TABLE 表名(列名 数据类型 [约束] [默认值] [ 注释],......)

CREATE TABLE t_user( 
id INT [PRIMARY KEY NOT NULL AUTO_INCREMENT],
number INT(5) NOT NULL, 
stuname VARCHAR(10) NOT NULL, 
age INT(3) CHECK(age>18), 
birthday DATE, weight DOUBLE, 
opertime datetime, 
[CONSTRAINT 约束名 约束规则]
)

删除表,修改表名

删除表

DROP TABLE [if exists ]表名 修改表名 RENAME TABLE 旧表名 TO 新表名 

复制表结构

CREATE TABLE 新表名 LIKE 被复制表名

DML

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

常用语句: insert,delete,update(⊙﹏⊙)

插入数据

方式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 条件

删除数据

DELETE FROM 表名 WHERE 条件 TRUNCATE TABLE 表名;清空整张

DQL-基础查询

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

基础查询

语法: select 查询列表 from 表名;

特点: 查询列表可以是:表中的字段、常量、表达式、函数 查询的结果是一个虚拟的表格

查询结果处理:

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

全部列查询: select * from table

算数运算符:+ - * /

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

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

查询结果处理: 

函数:

类似于java中的方法,将一组逻辑语句事先在数据库中定义好,可以直接调用

好处: 隐藏了实现细节 提高代码的重用性

调用:select 函数名(实参列表) [from 表];

分类: 单行函数:如concat、length、ifnull等

分组函数:做统计使用,又称为统计函数、聚合函数、组函数

单行函数

字符函数

  • length():获取参数值的字节个数
  • char_length()获取参数值的字符个数
  • concat(str1,str2,.....):拼接字符串
  • upper()/lower():将字符串变成大写/小写
  • substring(str,pos,length):截取字符串 位置从1开始
  • instr(str,指定字符):返回子串第一次出现的索引,如果找不到返回0
  • trim(str):去掉字符串前后的空格或子串,trim(指定子串 from 字符串)
  • lpad(str,length,填充字符):用指定的字符实现左填充将str填充为指定长度
  • rpad(str,length,填充字符):用指定的字符实现右填充将str填充为指定长度
  • replace(str,old,new):替换,替换所有的子串

逻辑处理

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(日期列),MONTH(日期列),DAY(日期列) , HOUR(日期列) ,MINUTE(日期列) SECOND(日期列)
  • str_to_date:将日期格式的字符转换成指定格式的日期
  • date_format:将日期转换成字符串
  • datediff(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 :是否匹配于一个模式 一般和通配符搭配使用,可以判断字符型数值 或数值型.

通配符: % 任意多个字符,包含0个字符 _ 任意单个字符

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

in 判断某字段的值是否属于in列表中的某一项

IS NULL(为空的)或 IS NOT

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

分组查询

语法:

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

注意:查询列表比较特殊,要求是分组函数和group by后出现的字

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值