mysql数据库初识

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

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

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

mysql数据库初识_第5张图片
show create table tb_name;
mysql数据库初识_第6张图片

删除
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;
mysql数据库初识_第7张图片
指定列查询
select fields_name1, fields_name2, … from tb_name;
mysql数据库初识_第8张图片
查询字段为表达式
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

mysql数据库初识_第9张图片

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

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

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

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

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

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

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

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

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

你可能感兴趣的:(数据库,mysql)