MySQL数据库

MySQL数据库

1、持久化数据

2、方便检索

3、存储大量数据

4、共享、安全

5、通过组合分析,获取新的数据

一、数据库的相关概念

DB database 数据库,存储一系列有组织数据的容器

DBMS Database Management System 数据库管理系统,使用DBMS管理和维护DB

SQL Structure Query Language 结构化查询语言,程序员用于和DBMS通信的语言

二、数据库存储数据的特点

​ 1、数据先放在表中,表再放在库中

​ 2、一个库可以有多张表,每张表都有自己的唯一标识名

​ orm: object relation mapping 对象关系映射

三、初识MySQL

1、MySQL服务的启动和停止

方式1:图形化

​ 计算机管理–服务–MySQL服务

方式2:以管理员身份运行dos

​ net start 服务名

​ net stop 服务名

2、MySQL服务的登录和退出

方式1:通过dos命令

​ mysql -h主机名 -P端口号 -u用户名 -p密码

​ 注意:

​ 如果是本机,则-h主机名 可以省略

​ 如果端口号是3306,则-P端口号可以省略

方式2:通过图形化界面客户端

​ 通过sqlyog,直接输入用户名、密码等连接进去即可

3、MySQL的常见命令和语法规范

①常见命令

​ show database

​ show tables from 库名

​ show columns from 表名

​ use 库名

②语法规范

​ 不区分大小写

​ 每条命令结尾建议用分号

​ 注释:

​ #单行注释

​ --单行注释

​ /* */ 多行注释

四、DQL语言的学习

DQL: Date Query Language,数据查询语言

1、基础查询

语法:

​ select 查询列表 from 表名;

特点:

​ ①查询列表可以是字段表达式常量函数等;

​ ②可包含多个部分,中间用逗号隔开。

2、条件查询

语法:

​ select 查询列表

​ from 表名

​ where 筛选条件

特点:

​ 1、按关系表达式筛选

​ > < >= <= = <>

​ 2、按逻辑表达式筛选

​ and or not

​ 3、模糊查询

​ like/not like:一般和通配符搭档使用

​ _ 任意单个字符

​ % 任意多个字符,包括0个

​ in/not in

​ between and/not between and

​ is null/is not null

3、排序查询

语法:

​ select 查询列表

​ from 表名

​ where 筛选条件

​ order by 排序列表

特点:

​ 1、排序列表可以是单个字段、多个字段、表达式、函数、列数、以及以上的组合

​ 2、升序 asc 默认

​ 降序 desc

4、常见函数

单行函数:

​ 1、字符函数

​ concat:拼接字符

​ substr:截取子串

​ substr(str, 起始索引, 截取的字符长度)

​ 起始索引从1开始!!!

​ 截取字符长度参数可选

​ length:获取字节长度

​ char_length:获取字符个数

​ upper:变大写

​ lower:变小写

​ trim:去前后指定的字符,默认是空格

​ left:截取子串

​ right:截取子串

​ lpad:左填充

​ rpad:右填充

​ instr:获取字符第一次出现的索引,索引从1开始

​ strcmp:比较两个字符大小

​ 2、数学函数

​ abs:取绝对值

​ ceil:向上取整

​ floor:向下取整

​ round:四舍五入

​ truncate:截断

​ mod:取余

​ 3、日期函数

​ now

​ curtime

​ curdate

​ datediff

​ date_format

​ str_to_date

​ 4、流程控制函数

​ if函数

​ case 表达式 类似于switch语句

​ when 值1 then 结果1

​ when 值2 then 结果2

​ …

​ else 结果n

​ end

5、分组函数

说明:

​ 分组函数往往用于实现将一组数据进行统计计算,最终得到一个值,又称为聚合函数或统计函数

包括:

​ sum

​ avg

​ max

​ min

​ count:计算非空字段值的个数,推荐使用count(*)

6、分组查询

语法:

​ select:查询列表

​ from:表名

​ where:筛选条件

​ group by:分组列表

having:分组后筛选

​ order by:排序列表

程序执行顺序:

​ ①from子句

​ ②where子句

​ ③group by子句

​ ④having子句

​ ⑤select子句

​ ⑥order by子句

7、连接查询

说明:

​ 又称多表查询,当查询语句涉及到的字段来自于多个表时,就会用到连接查询

按功能分类:

​ Ⅰ内连接

​ ①等值连接

​ 多表等值连接的结果为多表的交集部分

​ ②非等值连接

​ ③自连接

----------------------------------------------sql92标准---------------------------------------

语法:

​ select 查询列表

​ from 表1 别名 表2 别名

​ where 连接条件

​ and 筛选条件

​ group by 分组列表

​ having 分组后筛选

​ order by 排序列表

执行顺序

​ from

​ where

​ and

​ group by

​ having

​ select

​ order by

---------------------------------------------sql99语法---------------------------------------------

语法:

​ select 查询列表

​ from 表1 别名

​ join 表2 别名

​ on 连接条件

​ where 筛选条件

​ group by 分组列表

​ having 分组后筛选

​ order by 排序列表

区别:

​ SQL99 使用 join关键字代替了之前的逗号,并且将连接条件和筛选条件进行了分离,提高阅读性!!!

​ Ⅱ外连接

​ 查询结果为主表中所有的记录,如果从表有匹配项,则显示匹配项;如果从表没有匹配项,则显示null

​ 外连接分主从表,两表的顺序不能任意调换

语法:

​ select 查询列表

​ from 表1 别名

​ left|right|full join 表2 别名

on 连接条件

​ where 筛选条件;

​ ①左外连接

​ ②右外连接

​ ③全外连接

​ Ⅲ交叉连接

8、子查询

说明:

​ 当一个查询语句中又嵌套了另一个完整的select语句,则被嵌套的select语句称为子查询或内查询;

​ 外面的select语句称为主查询或外查询。

分类:

​ 1、select后面

​ 要求:子查询的结果为单行单列(标量子查询)

​ 2、from后面

​ 要求:子查询的结果可以为多行多列

​ 3、where或having后面 ★

​ 要求:子查询的结果必须为单列

​ 单行子查询

​ 多行子查询

​ 4、exists后面

​ 要求:子查询结果必须为单列(相关子查询)

特点:

​ 1、子查询放在条件中,要求必须放在条件的右侧

​ 2、子查询一般放在小括号中

​ 3、子查询的执行优先于主查询

​ 4、单行子查询对应了 单行操作符 : > < >= <= = <>

​ 多行子查询对应了 多行操作符: any/some all in

9、分页查询

应用场景:

​ 当页面上的数据,一页显示不全,则需要分页显示

语法:

​ select 查询列表

​ from 表1 别名

​ join 表2 别名

​ on 连接条件

​ where 筛选条件

​ group by 分组列表

​ having 分组后筛选

​ order by 排序列表

​ limit 起始条目索引,显示的条目数

执行顺序:

​ from 子句

​ join子句

​ on子句

​ where子句

​ group by子句

​ having子句

​ select子句

​ order by子句

​ limit子句

特点:

​ ①起始条目索引如果不写,默认是0

​ ②limit后面支持两个参数

​ 参数1:显示的起始条目索引

​ 参数2:条目数

10、union联合查询

说明:

​ 当查询结果来自于多张表,但多张表之间没有关联,这个时候往往使用联合查询,也称为union 查询

语法:

​ select 查询列表 from 表1 where 筛选条件

​ union

​ select 查询列表 from 表1 where 筛选条件

特点:

​ 1、多条待联合的查询语句的查询列数必须一致,查询类型、字段意义最好一致

​ 2、union 实现去重查询

​ union all 实现全部查询,包括重复项

五、DML语言的学习

DML: Date Manipulation Language,数据操纵语言

1、插入语句

语法:

​ 插入单行:

​ insert into 表名(字段1, 字段2, …) values (值1, 值2, …);

​ 插入多行:

​ insert into 表名(字段1, 字段2, …) values

​ (值1, 值2, …), (值1, 值2, …), (值1, 值2, …) …;

特点:

​ ①字段和值列表一一对应,包含类型、约束等必须匹配

​ ②数值型的值,不用单引号

​ 非数值型的值,必须使用单引号

​ ③字段顺序无要求

2、修改语句★

语法:

​ update 表名 set 字段名 = 新值, 字段名 = 新值, …

​ where 筛选条件

3、删除语句

方式1: delete语句

语法 delete from 表名 where 筛选条件

方式2: truncate语句

语法 truncate table 表名

二者区别:

​ ①delete 可以添加where条件

​ truncate不能添加where条件,一次性清除所有数据

​ ②truncate效率高

​ ③如果删除带自增长列的表,

​ 使用delete删除后,重新插入数据,记录从断点处开始

​ 使用truncate删除后,重新插入数据,记录从1开始

​ ④delete删除数据,会返回受影响的行数

​ truncate删除数据,不返回受影响的行数

​ ⑤delete 删除数据,可以支持事务回滚

​ truncate删除数据,不支持事务回滚

补充

​ 自增长列 auto_increment

​ ①自增长列要求必须设置在一个键上,比如主键或唯一键

​ ②自增长列要求数据类型为数值型

​ ③一个表至多有一个自增长列

六、DDL语言的学习

​ DDL: Data Define Language

​ 数据定义语言,用于对数据库和表的管理和操作

1、库和表的管理

​ ①库的管理

​ Ⅰ创建数据库

​ CREATE DATABASE IF NOT EXISTS …;

​ Ⅱ删除数据库

​ DROP DATABASE IF EXISTS …;

​ ②表的管理

​ Ⅰ创建表

​ CREATE TABLE [IF NOT EXISTS] 表名(

​ 字段名 字段类型 [字段约束],

​ 字段名 字段类型 [字段约束],

​ 字段名 字段类型 [字段约束],

​ …);

​ Ⅱ删除表

​ DROP TABLE [IF EXISTS] …;

​ Ⅲ修改表[了解即可]

语法:

​ ALTER TABLE 表名 ADD|MODIFY|CHANGE|DROP COLUMN 字段名 字段类型 [字段约束]

2、常见数据类型介绍

①整形

​ TINYINT SMALLINT INT BIGINT

②浮点型

​ FLOAT(m,n)

​ DOUBLE(m,n)

​ DECIMAL(m,n)

​ m,n可选

​ m:数字总个数

​ n:小数个数

③字符型

​ CHAR(n)

​ VARCHAR(n)

​ TEXT

​ n可选,表示最多字符个数

④日期型

​ DATE

​ TIME

​ DATETIME

​ TIMESTAMP

⑤二进制型

​ BLOB 存储图片数据

3、常见约束

​ 字段约束:

​ 主键 primary key

​ 唯一 unique

​ 非空 not null

​ 默认 default

​ 检查,mysql不支持,但不会抱错

​ 外键约束

​ FOREIGN KEY 外键:用于限制两个表的关系,要求外键列的值必须来自于主表的关联列

要求:

​ 1、主表的关联列和从表的关联列的类型必须一致,意思一样,名称无要求;

​ 2、主表的关联列要求必须是主键

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值