MySQL 基础 -简易

1 MySQL简介

1.1 mysql 是什么

1.2 创建数据库和创建表

🔴创建数据库
SHOW DATABASES 查看所有数据库
CREATE DATABASE study 创建一个新的数据库 名为study
DROP DATABASE study 删除 study数据库
USE study 使用(调用) study数据库

1.3 如何了解一张表? show create table

🔴创建表
CREATE TABLE 表名称 (
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型, … )

CREATE TABLE source_from ( 
sect CHAR ( 100 ) COMMENT '门派名称', 
kongfu CHAR ( 100 ) COMMENT '绝技', 
location CHAR ( 100 ) COMMENT '地理位置' 
)

comment是描述
SELECT * FROM source_from 查询表source_from
DROP TABLE source_from 删除表 source_from

1.4 SQL约束

•NOT NULL 非空约束
•UNIQUE 唯一键
•PRIMARY KEY 主键(唯一值、非空、每个表有且仅有一个)
•CHECK 检查审核
•DEFAULT 默认值

CREATE TABLE source_from(
 sect char(100) COMMENT '门派名称' NOT NULL,
 kongfu char(100) COMMENT '绝技' NOT NULL DEFAULT '无'
 location char(100) COMMENT '地理位置',
 size INT ( 9 ) COMMENT '大小' CHECK ( size > 0 ),
 PRIMARY KEY (sect)
)

SELECT * FROM source_from 查询表
SHOW CREATE TABLE source_from 查看表的限制 会告诉每个字段是什么意思

1.5 插入和更改

INSERT INTO 表名称 VALUES (值1, 值2,....) 对表格中所有字段进行插入
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) 只对表中某些字段进行插入

-- 完全插入
INSERT INTO source_from VALUES ("全真教", "先天功","陕西",9)
-- 不完全插入
INSERT INTO source_from (sect,size) VALUES ("丐帮",6)

ALTER TABLE table_name ADD column_name datatype更改表,增加某字段(列)
ALTER TABLE table_name DROP COLUMN column_name更改表,删除某字段

-- 修改 source_from表  增加上 host 字段
ALTER TABLE source_from ADD host char(10)
-- 修改 source_from表  删除  host 字段
ALTER TABLE source_from DROP COLUMN host

2 基本查询语句

Select 你要找的信息(字段)是什么? 用逗号隔开(英)
From 你要从哪儿(哪个表)找?
Where 满足什么条件?
Limit 限制查多少行

比如select * from swordsman 查找所有信息 *代表所有
select 姓名,武力值,智力值,生日 from swordsman 只查找表中的某些信息

select 姓名,武力值,智力值,生日   --查询的字段
from swordsman   --从swordsman表
where 武力值>80 or  智力值>60   --条件
limit 5       --只显示前两行

3 交叉查询和子查询

  1. group by
  2. 聚合函数 sum、count、avg
  3. 子查询 in ,not in
  4. 简单匹配 like,not like

排序查询

语法: order by 子句
order by 排序字段1 排序方式1,排序字段2 排序方式2…
排序方式:
asc: 升序 默认
desc: 降序
注意:
如果有多个排序条件,则当前边的条件值一样时,才会判断第二个条件

交叉查询

group by 分组
as 命名新生成的字段

聚合函数:

count 计数
sum 求和
avg 求平均

order by 排序 从小到大 若加上 desc 从大到小

案例:对门派进行分组 并统计数量 并给此字段命名为 人数
比如 丐帮 4 表示丐帮人数出现4次
as 可以省略

select 门派,count(*) as人数,sum(武力值) 武力值之和,avg(智力值)智力值平均水平
from swordsman
group by 门派
order by 人数 desc -- 排序 dese表示从多到少,去掉则从少到多

在这里插入图片描述

子查询

in 查询某条件在一定候选集范围内的记录
Not in 查询某条件不在一定候选集范围内的记录

select 姓名,武力值,智力值
from swordsman
where 姓名 in ("黄蓉","黄药师")

在这里插入图片描述

分组查询

  1. 语法:group by 分组字段;
  2. 注意:
    1. 分组之后查询的字段: 分组字段、聚合函数
    2. where 和 having 的区别?
      1. where 在分组之前进行限定,如果不满足条件,不参与分组。having 在分组之后进行限定,如果不满足条件,则不会被查询出来
      2. where 后不可以跟聚合函数,having 可以进行聚合函数的判断

案例: 按照性别分组,分别查询男女同学的平均分、人数,要求:分数低于70分的人,不参与分组,分组之后,人数要大于2人

SELECT sex , AVG(math),COUNT(id) as 人数   --分组字段、聚合函数
FROM student 
WHERE math > 70  -- 查询条件
GROUP BY sex   -- 分组字段
HAVING 人数 > 2; 

.

简单匹配

like

模糊简单匹配 ,像什么一样的记录;
% :匹配任意数量的任意字符
_ :匹配一个任意字符

select 姓名,武力值,智力值
from swordsman
where 姓名 in ("黄蓉","黄药师")
select 姓名,武力值,智力值
from swordsman
where 姓名 like "黄_"

在这里插入图片描述
在这里插入图片描述

not like

模糊简单匹配 ,不像什么一样的记录

4 连表查询

  1. 内连接
  2. 左联接
  3. 右连接
    在这里插入图片描述

注意:连表查询时一定不要忘记连表条件,否则会出现笛卡尔集的现象
比如a,b表分别有100条、100条记录,如果出现笛卡尔集 则会显示出100×100即10000条记录,压力大

4.1 内连接

Select A.字段,B.字段 
From A表 inner join B表 on A.关联字段=B.关联字段

两个表都有的才会出现

select a.姓名,a.武力值,a.智力值,a.门派,b.location,b.kongfu,b.size
from swordsman as a inner join source_from b on a.门派=b.sect

内连接也可以写为:

select a.姓名,a.武力值,a.智力值,a.门派,b.location,b.kongfu,b.size
from swordsman as a , source_from b 
where a.门派=b.sect

在这里插入图片描述

4.2 右连接

Select A.字段,B.字段
From A表 right join B表 on A.关联字段=B.关联字段

4.3 左连接

Select A.字段,B.字段
From A表 left join B表 on A.关联字段=B.关联字段

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值