mysql数据库基本操作学习笔记

创建数据库

语句为:

create {database|schema} 数据库名;

通过给定的数据库名创建出数据库,前提是你拥有创建数据库的权限

删除数据库

语句为:

drop {database|schema} 数据库名;

删除数据库中所有的表,并且删除数据库

使用这个语句的时候必须极度小心!

选择数据库

语句为:

use 数据库名;

告诉MySQL将命名数据库用作后续语句的默认数据库

创建数据库表

语句为:

create [template] table 表名(字段名1 字段1的数据类型 其他参数,字段名2 字段2的数据类型...);

按照字段列进行创建表
[template] 添加了这个词表示创建一个临时表

删除数据库表

语句为:

drop table 表名;

删除一个或多个表,你必须拥有删除每一个表的权限

更改数据库表字段

添加字段语句为:

alter table 表名 add column 字段名 字段类型;

增删改查

添加数据

语句为:

insert into 表名(字段1, 字段2...) values (字段1数据, 字段2数据...); 

向存在的表中新增行数据

可以插入多行数据:

insert into 表名(字段1, 字段2...) values (字段1数据1, 字段2数据1...),(字段1数据2, 字段2数据2...); 
删除数据

语句为:

单表删除:

delete from 表名;

多表删除:

delete from 表名1,表名2...;

从某个表中删除数据,一般需要配合where子句删除指定的行

修改数据

语句为:

update 表名 set 字段=新数据, 字段=新数据;

给指定表中的某个字段修改为新的数据,一般需要与where子句配合使用

查询数据

语句为:

select 列名,列名 from 表名;

列名之间用逗号分隔,并且不用括号括起来

从表中查询指定字段的信息, 用 * 表示查询相关所有字段

相关子句

where

语句:

where 字段名=字段数据;

配合 删 改 查,对应地按照指定规则处理数据

like

例如:

select * FROM goods WHERE goods_name like "音%";

查询以 “音” 开头的goods_name列信息,从goods表中

union和union all

联合查询,

union不会查询重复的信息

union all会将所有的值联合进来

select 字段 from1 union select 字段 from2;

将两个相同字段,不同表的信息整合,union会将重复的数据删除,只保留一分,而union all则不会删除

group by

根据一个或多个列对结果集进行分组

select * fromgroup by 某个字段;
with rollup

在group by的基础上进行统计

select 字段1,count(*) FROMGROUP BY 字段1 with ROLLUP;

如图例所示:

在这里插入图片描述

但是由于有个字段结果是空的,表示的是总和,但是感觉不太好,所以要让这个地方显示"总和"

使用 coalesce()

select coalesce(字段,"总和"),count(*) 
FROMGROUP BY 字段 with ROLLUP;

如图例所示:

在这里插入图片描述

order by

按照指定的字段进行排序

select 字段 fromorder by 字段;

联结(join)

平常的select 以及上面的 group by都是以行为单位进行操作,而我们需要按照列进行拼接则需要用到join

inner join

中文名: 内连接,内联结,等值连接

select1.字段1,2.字段1,1.字段3 form 表1 inner join2 on 联结条件;

在这里插入图片描述

left join

中文名: 左连接

select1.字段1,2.字段1,1.字段3 form 表1 left join2 on 联结条件;

在这里插入图片描述

right join

中文名: 右连接

select1.字段1,2.字段1,1.字段3 form 表1 right join2 on 联结条件;

在这里插入图片描述

三者区别:

  • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
  • **LEFT JOIN(左连接):**获取左表所有记录,即使右表没有对应匹配的记录。
  • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

NULL 值处理

为了避免null值的出现影响后续的处理,需要进行判断,有如下三个运算:

IS NULL: 当列的值是 NULL,此运算符返回 true。

IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。

<=>: 比较操作符(不同于 = 运算符),当比较的的两个值相等或者都为 NULL 时返回 true。

数据库表的复制

  1. 先获取原有表的创建数据库表的sql
  2. 通过获取到的sql创建一份新的表
  3. 使用 insert into … select完成数据的复制

如图,一下有一张数据库表

在这里插入图片描述

现在需要将数据库中的表复制一份

首先执行

show create table 表名;

获取到创建表时的sql语句

例如

CREATE TABLE `test001` (
  `book_title` varchar(12) DEFAULT NULL,
  `book_author` varchar(255) DEFAULT NULL,
  `buy_time` datetime DEFAULT NULL,
  `sales_status` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

经过调整之后的sql(修改了表名):

CREATE TABLE `test001_copy` (
  `book_title` varchar(12) DEFAULT NULL,
  `book_author` varchar(255) DEFAULT NULL,
  `buy_time` datetime DEFAULT NULL,
  `sales_status` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

此时创建了一个名为test001_copy这样的备份表

再进行insert into ... select 进行数据添加

insert into copy表(字段1,字段2,字段3...) select 字段1,字段2,字段3... from 原表;

举例:

insert into test001_copy(book_title,book_author,buy_time,sales_status) select * FROM test001;

执行完毕后,新的表就创建好了

数据库的元数据信息

命令描述
SELECT VERSION( )服务器版本信息
SELECT DATABASE( )当前数据库名 (或者返回空)
SELECT USER( )当前用户名
SHOW STATUS服务器状态
SHOW VARIABLES服务器配置变量

sql注入

sql语句在拼接用户输入的字符串数据的时候可能会出现带有sql语句的字符串,这样就会导致整个数据库陷入危险

所以需要在执行sql语句之前,要先判断用户输入的是否合法;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值