mysql数据库初识

运行mysql数据库,并进行登陆操作
mysql -u root -p
数据库操作
在这里插入图片描述
创建数据库
CREATE DATABASE IF NOT EXISTS db_name;
在这里插入图片描述
查看
SHOW DATABASES;
在这里插入图片描述
使用
USE db_name;
在这里插入图片描述
查看当前正在使用的库
SELECT DATABASE();
在这里插入图片描述
删除
DROP DATABASE db_name;
在这里插入图片描述
在这里插入图片描述
注意事项:

  • mysql对大小写不敏感
  • 库名称/表名称/字段名称中包含关键字则需要使用’ '括起来
  • 每条语句以分号;作为结尾

表的操作
创建
create table if not exists tb_name(fields_name field_type);
在这里插入图片描述
查看
desc tb_name;

在这里插入图片描述
show create table tb_name;
在这里插入图片描述

删除
drop table tb_name;
在这里插入图片描述
查看库中所有表
show tables;
在这里插入图片描述
基础增删查改

向表中添加数据
全列插入
insert into tb_name values(根据表的字段顺序进行插入数据)
在这里插入图片描述
指定列插入
insert into tb_name(sn, name) values(1011, “zhangs”);
在这里插入图片描述
多行插入
insert into tb_name values(第一条数据),(第二条数据),…;
在这里插入图片描述
从表中查询数据:
全列查询
select * from tb_name;
在这里插入图片描述
指定列查询
select fields_name1, fields_name2, … from tb_name;
在这里插入图片描述
查询字段为表达式
select fields_name1 + 10 from tb_name;

查询字段起别名
select fields_name [as] new_name from tb_name;

指定字段去重操作
select distinct fields_name from tb_name;

按照指定字段进行排序
select * from tb_student order by score, snumber desc
默认以升序进行排序/desc表示降序排序,可以对多字节进行排序,第一个字段相等的情况下以第二个字节进行排序,各自都可以设置排序方式

where条件查询:

比较运算符说明
<小于
>大于
<=小于等于
>=大于等于
=等于,NULL不安全
<=>等于,NULL安全
!=, <>不等于
BETWEEN m AND n范围匹配 ,[m, n] ,如果m <= value <= n,返回TRUE(1)
IN(a,b,c)如果是a,b,c中任意一个,返回TRUE(1)
LIKE模糊匹配 %表示任意多个(包括0个)任意字符;_表示任意一个字符
IS NULL是NULL
IS NOT NULL不是NULL
逻辑运算符说明
AND多个条件必须都为TRUE(1),结果才是TRUE(1)
OR任意一个条件为TRUE(1),结果为TRUE(1)
NOT条件为TRUE(1),结果为FALSE(0)

分页查询
SELECT … FROM table_name [WHERE …] [ORDER BY …] LIMIT s, n; / limit n offset s

LIMIT s, n;
s表示从第s条开始,获取n条数据
前段将页号以及每页的数量发送过来: s = 页号*每页数量 n = 每页数量

limit n offset s 从偏移量s开始获取n条数据

表中数据的修改
update tb_name set fields_name = fields_value [where condition];

注意事项
默认没有子条件的情况下 update 语句修改的是表中的所有数据中的某个字段的值,所以修改数据时添加判断条件

表中数据的删除
delete from tb_name where condition;

注意事项
删除数据时,必须添加where条件,否则就是删除表中所有的数据

表的约束
非空/键值/默认值/扩展

非空约束:NOT NULL
约束一个字段数据不能为NULL
例如: id int not null

唯一约束:UNIQUE/UNIQUE KEY (COLUMN_NAME)
约束一个字段中的数据不能出现重复
id int unique

非空且唯一
id int not null unique

主键约束:PRIMARY KEY/PRIMARY KEY(COLUMN_NAME, …)
一张表中只能有一个主键,主键可以是组合主键
not null 和 unique的结合 id primary key;
主键可以是一个组合字段 primary key (id, sn)

默认约束:DEFAULT
给某个字段约束一个默认值,在不主动插入数据的情况下就会默认插入默认值
default_val

check约束
mysql忽略check(col=" or col=" ),在表的最后,进行字段验证

扩展信息
自增属性 :AUTO_INCREMENT
数值列自动增长

外键约束:FOREIGN KEY (COLUMN_NAME) REFERENCES tb_name(column_name)
通过一个字段关联另一张表,约束这个字段的数据必须是另一张关联表中指定列中已有的数据

举例:
CREATE TABLE IF NOT EXISTS tb_name (
id INT AUTO_INCREMENT,
snumber INT NOT NULL,
sname varchar(32) DEFAULT “zhangsan”,
class_id INT,
PRIMARY KEY(id),
UNIQUE KEY(snumber),
FOREIGN KEY(class_id) REFERENCES tb_class(id)
);
聚合查询
mysql中提供的聚合函数
count() / sum() / max() / min() / avg()

分组查询
以某一列作为分组依据,进行聚合信息查询

注意事项
分组查询时查询字段,只能有分组依据字段,以及聚合函数
分组查询时,若要进行条件过滤,则不能使用where,而是使用having

表的设计
三大范式
第一范式:表中的每个字段,都是不可分割的(原子性)

第二范式:表中所有字段都应该与表中的主键相关,而不能部分相关

第三范式:表中每一列,都应该与主键直接相关

ER图
班级表:id,班级名称,班级描述
学生信息表:id,学号,名称,邮箱,所属班级id
课程表:id,课程名称
学生课程成绩表:id,成绩,学生id,课程id

在这里插入图片描述

多表联查
多张表合在一起,进行笛卡尔积之后进行查询
多张表合在一起:内连接/外连接-左连接/右连接 如何将多张表合在一起

内连接
将两张表中的数据取交集

外连接-左连接
以左表为主表,左表中的数据都会全部显示,若没有对应右表的信息,则以NULL显示

外连接-右连接
以右表为主表,右表中的数据都会全部显示,若没有对应左表的信息,则以NULL显示

自连接
自己连接自己,常用于对同一个表中的同一列数据进行操作
在查询的时候,具体使用哪些连接方式,主要看查询什么样的信息

子查询
在sql语句中嵌套sql语句(子句查询常用于条件判断)

合并查询
使用union将两条语句的结果结合起来

索引与事务
索引
作用:快速定位,检索数据
类型:多种lnnoDB B树 ,短而粗的树
适用场景:海量数据查询,适用于查询的经常的依据列

事务
指逻辑上操作的原子性

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值