Mysql使用|青训营笔记

48 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 15 天

今天主要学习了数据库的使用。

通过services.msc 查看mysql服务有没有开启

net start mysql80  //启动数据库
net stop mysql80   //停止数据库

操作mysql

mysql -u root -p  //启动mysql
//密码 S21070078

linux系统启动数据库

systemctl start mysqld

关系型数据库:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。

SQL语法:

  • 单行或者多行书写,分号结尾
  • 使用空格缩进增强语句的可读性
  • Mysql数据库不区分sql的大小写
  • 单行注释-- 或者# 多行注释 /* */

数据定义语言,用于定义数据库对象(数据库、表、字段)

DDL数据库操作

#查询所有数据库
SHOW DATABASES;
#查询当前选中的数据库
select database();
#创建数据库
create [if not exists] database 数据库名;
#删除数据库
drop database [if exists] 数据库名;
#使用数据库
use 数据库名;

DDL表操作

#查询当前数据库所有表
show tables;
#查询表结构
desc 表名;
#查询指定表的建表语句
show create table 表名;
​
​
#创建表
create table tb_user(
    id int           [comment '编号'],
    name varchar(50) [comment '姓名'],
    age int          [comment '年龄'],
    gender varchar(1)[comment '性别']   最后这里不加逗号
)[comment '用户表'];
​

修改表

#添加字段
alter table 表名 add 字段名 类型 [comment ''][约束];
alter table tb_user add nickname varchar(20) [comment '昵称'];
​
#修改字段  修改数据类型
alter table 表名 modify 字段名 新数据类型;
#修改字段  修改该字段名和数据类型
alter table 表名 change 旧字段名 新字段名 类型 [comment ''][约束];
alter table tb_user change id newid int [comment '新名字'];
​
#删除字段
alter table 表名 drop 字段名;
​
#修改表名
alter table 表名 rename to 新表名;
​
#删除表
drop table [if exists] 表名;
#删除指定表,并重新创建该表
truncate table 表名;

Data Control Language 数据控制语言,用来管理数据库用户、控制数据库的访问权限。 不要求掌握。 函数是指一段可以直接被另一段程序调用的程序或代码。 概念:约束是作用域表中字段上的规则,用于限制存储在表中的数据。

目的:保证数据库中数据的正确、有效性、和完整性。

建立外键之后,默认的是不能了。

那么我们想删除怎么办呢?

  • cascade 在附表中删除更新对应记录时,先检查该记录是否有外键,有择业删除更新外键在子表中的记录
  • set null 如果有,则设置子表中该外键为null

多表关系

  • 一对多:常见的有员工-部门,多个员工数以一个部门。 实现:在多的一方建立外键,指向一的一方。
  • 多对多:学生和课程,学生选多门课,课程可被多个学生选。 实现:建立第三章中间表,中间表至少包含两个外键,分别关联两方主键。
  • 一对一:用户和用户详情。多用于单表拆分。实现:在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(UNIQUE)

多表查询分类:

内连接:查询A、B交集部分数据

外连接:

  • 左外连接:查询左表所有的数据,以及两张表交集部分数据
  • 右外连接:查询右表所有的数据,以及两张表交集部分数据

自连接:当前表与自身的连接查询,自连接必须使用表别名

子查询

SQL语句中嵌套select语句,称为嵌套查询,又称子查询。

select * from t1 where column1=(select column1 from t2);
​
#子查询外部的语句可以是insert updata delete select的任何一个。

标量子查询:子查询返回的值是单个的值。操作符(= > < !=)

列子查询:子查询返回的值一列 操作符( in、not in、any、some、all)

  • any:子查询返回列表中,有任意一个满足即可
  • som:和any一样,使用some的地方都能有any
  • all: 子查询返回列表所有值都必须满足

行子查询:子查询返回的是一行。 操作符 (= <> in not in)

表子查询:子查询返回的是表。操作符(in)

根据子查询出现的位置分为:where之后 from之后 select之后。