mysql学习笔记

数据库: 数据库是一些关联表的集合。
数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
列: 一列(数据元素) 包含了相同类型的数据。
**行:**一行是一组相关的数据,例如一条用户的数据。
**冗余:**存储两倍数据,冗余降低了性能,但提高了数据的安全性。
**主键:**主键是唯一的且不能为空。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
**外键:**外键用于关联两个表。(或者说A表的主键在B表以列的形式出现,那么这列数据就是外键)
**复合键:**复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
**索引:**使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。(主键就是一个唯一性的索引)

数据库的常用操作

查看所有数据库
shouw databases

创建数据库
语法:

CREATE DATABASE 库名;

这是最简单的创建方法,工作中常用的是以下形式:

CREATE DATABASE IF NOT EXISTS 库名 DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;

先判断是否存在库名,创建时指定默认字符集和校对规则 IF NOT EXISTS 库名 :库名是否已存在,存在就不创建.(因为mysql中不允许出现名称相同的数据库) DEFAULT CHARSET utf8mb4 :
默认字符集设置为utf8mb4(utf8mb4是utf8的拓展) COLLATE utf8mb4unicodeci : 设置校对规则为utf8mb4unicodeci

删除数据库
语法:

DROP DATABASE 库名;

注意如果删除了这个库,里面的所有表等都会删除,慎重使用删除; mysql自带的四个库,千万不能删除,否则会导致MySQL无法使用

切换要操作的库
语法:

use 库名

或者 直接在工具上选择
在这里插入图片描述切库后方便使用写sql,会有更准确的 补全或提示


mysql的数据类型

MySQL中的数据类型 主要用于 指定 数据表中的字段(列)的数据类型。 大致分为三类: 数值、日期/时间和字符串(字符)类型。

数据表相关操作

语法:

create table 表名(字段1 数据类型 字段约束等,字段2 ...,字段3 ...)表选项

语法案例:

create table student(    sid int auto_increment comment '学生ID',    primary key (sid),    sname varchar(20) not null comment '学生姓名',    birthday date null comment '学生生日',    sex varchar(3) default '男' null comment '学生性别')comment '学生表';

解析:
解释:

create table student(XXXX) comment ‘学生表’;

创建数据表 名为 student,添加备注为 学生表,(XXXX):括号里面的为表的字段信息

sid int autoincrement comment ‘学生ID’,

sid 为字段名,int 为字段类型,autoincrement:声明该字段自增,comment ‘学生ID’: 备注该字段为 学生ID

primary key (sid),

声明sid字段为主键

sname varchar(20) not null comment ‘学生姓名’,

sname:字段名, varchar(20):字段类型varchar,最长保存字符数为20, not null:表示该字段不能为空,
comment ‘学生姓名’,:备注该字段为 学生姓名

birthday date null comment ‘学生姓名’,

birthday:字段名 date: 字段类型为date null: 表示该字段可以为空 comment ‘学生生日’,:
备注字段为学生生日

sex varchar(3) default ‘男’ null comment ‘学生性别’

sex:字段名 varchar(3): 字段类型为varchar,最长保存字符数为3 default ‘男’: 字段默认值为 男 null:
表示该字段可以为空 comment ‘学生性别’: 备注字段为学生性别

查看所有的表

show tables

查看表结构

DESCRIBE 表名;

在这里插入图片描述删除表

drop table 表名

修改表名

语法:

ALTER TABLE ‹旧表名› RENAME TO ‹新表名›;

修改字段名

语法:

ALTER TABLE ‹表名› CHANGE ‹旧字段名› ‹新字段名› ‹新数据类型›;

修改字段类型
语法:

ALTER TABLE ‹表名› MODIFY ‹字段名› ‹数据类型›

删除表的字段

ALTER TABLE ‹表名› DROP ‹字段名›;

修改表的字符集

ALTER TABLE 表名 DEFAULT CHARACTER SET ‹字符集名› COLLATE ‹校对规则名›;

添加字段
ALTER TABLE ‹表名› ADD ‹新字段名›‹数据类型›[约束条件];


mysql数据修改

insert 插入单条数据

语法
方式1: 注意列名和值的顺序要一 一对应

INSERT INTO ‹表名› (‹列名1,‹列名2, … ‹列名n›)VALUES (1,2,, 值n);

方式二: 要插入的数据的列名在 SET 子句中指定,等号前面 为指定的列名,等号后面为指定的数据,而对于未指定的列,列值会指定为该列的默认值。

INSERT INTO ‹表名›SET ‹列名1= ‹值1,    ‹列名2= ‹值2,     ...;

方式三: INSERT 语句中没有指定插入列名,只有一个值列表。在这种情况下,值列表为每一个字段列指定插入的值,并且这些值的顺序必须和 表中字段定义的顺序相同。

INSERT INTO ‹表名› values (1,2,....)

插入多条数据
语法:只需要在增加多个值列表即可,值列表之间用,分隔开

INSERT INTO ‹表名› (‹列名1,‹列名2, … ‹列名n›)VALUES (1,2,, 值n),(1,2,, 值n),...(1,2,, 值n);

select 查询数据

语法: * 代表查询所有字段
select * from 表名

或者

查询指定字段
select 字段1,字段2,...字段n from 表名
where子句(条件查询)

语法:

select * from 表名 where  查询条件

当有多个查询条件时 可以 使用 and 和 or 例子: 条件1 and 条件2 条件1 or 条件2 如果有多个 and 和 or无法确定优先级的时候,可以用()改变优先级.例如要求满足条件1和条件2 或者 只满足条件3: (条件1 and 条件2) or 条件3


LIKE 关键字
主要用于搜索匹配字段中的指定内容。
其语法格式如下:

[NOT] LIKE  '字符串'

其中: NOT :可选参数,字段中的内容与指定的字符串不匹配时满足条件。
字符串:指定用来匹配的字符串。“字符串”可以是一个很完整的字符串,也可以包含通配符。 LIKE 关键字支持百分号“%”和下划线“_”通配符。
通配符是一种特殊语句,主要用来模糊查询。当不知道真正字符或者懒得输入完整名称时,可以使用通配符来代替一个或多个真正的字符。

% 通配符
% 代表任何长度的字符串,包括长度0;
例如: 以 王 开头的字符 : 王% 包含 王 的字符 : %王% 以 王 结尾的字符: %王

_ 通配符
“_”只能代表单个字符
例如:
第二个字符为王 : 王% 倒数第二个字符为王 : %王 第三个字符为王 : __王%

LIKE BINARY
BINARY 关键字用于区分大小写,默认like 不区分大小写
例如:
like ‘t%’ 可以查询 T 和 t 开头的字符
LIKE BINARY ‘t%’ 只可以查询 t 开头的字符
LIKE BINARY ‘T%’ 只可以查询 T 开头的字符


update
修改表中的数据
语法:

UPDATE ‹表名› SET 字段 1=1 [,字段 2=2] [WHERE 子句 ]

不加 where 子句也可以,那样会修改整张表的数据,在工作中一定要加where子句,减少对其他同事的测试数据造成影响。


DELETE (删除表中数据)
语法:

DELETE FROM ‹表名› [WHERE 子句]

WHERE 子句:可选项。表示为删除操作限定删除条件,若省略该子句,则代表删除该表中的所有行。 实战 删除 姓孙的 男生 delete
from student where sname like ‘孙%’ and sex = ‘男’;

TRUNCATE (清空表数据)

语法:

TRUNCATE 表名
TRUNCATE 用于完全清空一个表

与DELETE 的区别
DELETE 是逐行一条一条删除记录的;TRUNCATE 则是直接删除原来的表,再重新创建一个一模一样的新表,而不是逐行删除表中的数据,执行数据比 DELETE 快。因此需要删除表中全部的数据行时,尽量使用 TRUNCATE 语句, 可以缩短执行时间。 DELETE 删除数据后,系统不会重新设置自增字段的计数器;TRUNCATE 清空表记录后,系统会重新设置自增字段的计数器。

**总结** 
当不需要该表时,用 DROP;
当仍要保留该表,但要删除所有记录时,用 TRUNCATE;
当要删除部分记录时,用 DELETE。

between … and

BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。(文本仅支持英文)

语法:

WHERE 字段名BETWEEN 值1 AND 值2

示例: WHERE age BETWEEN 10 AND 20 age字段的值 在10 到 20 之间会被查出来,并且包含10和20
查询数值和日期 的范围 包含 值1 和 值2,及中间的值 查询 文本 时 的范围不包含 值2,只有 值1 和 两者中间的范围


in
in 操作符允许我们在 WHERE 子句中规定多个值。

语法1:

where 字段名 in (1,2,3....)

示例: where age in (20,21,25); age 字段的值 只要是 20或者21或者25 的数据 都满足条件

语法2:

where not in (1,2,3....)

示例: where age in (20,21,25); age 字段的值 只要 不是 20或者21或者25 的数据 都满足条件


limit
MySQL中的分页查询, limit 通常放在sql 语句的最末尾

语法1:

limit 4
查询前4条数据

语法2:

limit 4,3
从第4条数据之后开始,查询3条数据 也就是 第5,6,7条的数据

语法3:

limit 4 offset 10;
offset后面的数字是指记录数 从第10条 之后的数据开始 查询4条数据 也就是 第 11,12,13,14条数据

is null
如果字段没有要求非空,则字段值 可以为空,就是null值。如果要查询某个 字段 为 null的数据,不能使用 字段名=null,要用 字段名 is null;

语法1:

where 字段名 is null;
字段名 为空的符合条件

语法2:

where 字段名 is not null;
字段名 不为空的符合条件

别名

起别名是为了后续学习多表联查 做铺垫,语法十分简单

给字段起别名

给 sname,birthday字段 起别名 ,改为中文

select sname as 姓名,birthday as 生日 from student;
起了别名后,查出来的字段会以别名展示。as 关键字也可以省略,字段名 和 别名之间 用空格隔开即可
select sname 姓名, birthday 生日 from student;

给表起别名

例子:

select a.sname, a.birthday from student as a;

给表 起别名 同样是 使用 as关键字(可以使用空格隔开代替as关键字), a 就代表 student表,查询字段时,可以 使用
a.sname 代表 student的sname字段。 给表起别名 通常用在 多表查询,本次使用演示,先熟悉语法。


表连接
某些情况下查询数据是需要 多张表联合起来查询的, 举个例子:查询周梅同学的考试成绩,学生信息在student表,成绩在 sc 表,仅靠 学生姓名 要查学生成绩,必须将两张表联合起来查询。
表连接分为 三种方式 ,内连接 (inner join ), 左连接(left join ),右连接(right join) 左连接 和 右连接 又被称作 外连接, 下节课再学习 外连接

内连接
语法:

select XXX from A a inner join B b on a.xx = b.xx

大写 A B代表 表名,小写 a b 代表 表的别名 on 后面 跟 两张表的关联条件,关联表通常需要一个
两张表都有的相同字段。这个相同字段 不是指 字段名相同,而是指 业务上代表的含义相同 。 并且 关联条件
的字段,两张表都有相等的值才会展示出来。

如果要关联 三张表(或更多的表) 则继续在后面增加 inner join 即可 例子:

select XXX from A a     inner join B b on a.xx = b.xx     inner join C c on c.xx = b.xx

外连接
昨天学习了内连接,今天学习外连接,外连接主要分两种: 左连接和右连接
左连接
左连接 就是 左边的表 为主,展示左表所有数据,右表如果没有对应的值 则 补 null
语法:

select XXX from A a left join B b on a.xx = b.xx

右连接
右连接 就是 右边的表 为主,展示右表所有数据,左表如果没有对应的值 则 补 null
语法:

select XXX from A a right join B b on a.xx = b.xx

三种连接方式的区别
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值