MySQL的基本操作

#MySQL的基本操作
#数据库是储存大量数据的,也是为了高效管理大量数据的,数据库是个管理软件

#最大的是数据库,数据库里边有表,表里边有行和列,数据库还有主键、外键、索引,表就像excel表格一样,从而用来设置格式大小和储存内容.(这些是我刚接触数据库第一天所了解到的东西)

从命令行进入数据库

// mysql -u root -p

然后正常情况会出现

//Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.24 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

这就是成功进入了数据库,然后再输入这个命令来查看你现在一共有多少个数据库

// show databases;
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| shitaomeijiji      |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

这是退出数据库

exit

本身这里面就自带四个数据库,最好别修改这些自带的,我现在也不知道为什么
以下是创建数据库,创建数据库的时候记得在后面加UTF-8(涵盖了地球上几乎所有地区的文字)

// create database 数据库名称;
//也就是:create database 数据库名 charset=utf8;

以下是删除数据库

// drop database 数据库名称;

以下是进入数据库

//use 数据库名称;

以下是看看数据库中有多少张表

// show tables;

如果没有的话,我们就需要用这个命令来创建一个表

create tables + 表名;

大概就像以下

CREATE TABLE students(
                    id INT,
                    name VARCHAR(20),
                    age INT,
                    address VARCHAR(10),
                    gender CHAR(5)
                    );

查看表的结构

//desc

查看表的所有数据

select * from +表名;

查看表的指定数据

select + 要查询的列名(字段名) + from + 表名

查看表特定满足数据的条件的数据

select + 要查询的列名(字段名) + from + 表名 + where + 条件

查询1-10之间的数据

select * from + 列表名 + where (字段名)>=1 and (字段名)<=10;

插入语句

insert into + 表名  + values(值)

插入多条语句

insert into + 表名 + (字段名) + values(值1),(值2),(值3)……

更新数据(也就是修改数据嘛)

update + 表名 +set + 字段名=新的内容  where + 条件

删除指定数据

delete from + 表名 +要删除的字段名字 + where + 条件

删除全部数据

delete form + 表名
truncate from + 表名

我们上面有的有where,where是个条件,后面跟的都是特定条件 就像if一样 满足或者不满足 执行

where后面可以跟的条件有
>
><
<> 这两个都是不等于 !=
=
and 且,与
or 或
not 非
between ... and ... 在...之间
in 在某些集合里面

模糊查找

_ 任意一个字母
% 0~n个字母

上面的一个下划线就代表在表理查找一个字母,增加多少下划线就增加几个查找的字母

select * from + 表名 + where name like '_';

查询以a开头的数据

select * from + 表名 + where name like 'a%';

查询第二个字母为a的数据

select * from + 表名 + where name like '_a%';

查询数据中包含的a字母的数据

select * from + 表名 + where name like '%a%';

我们还可以用正泽来配合使用
匹配以a开头以z结尾的字符

select address from students where name regexp '^a..z$';

添加新字段

alter table + 表名+ add +新加的字段名+ 类型

修改字段类型

alter table +表名+ modify +字段名+ 类型(30);

修改字段位置

alter table 表名 modify +需要交换位置的字段名+ 数据类型+ after behavior;

修改字段名

alter table +表名 + change +字段名+ 新的字段名+ 数据类型 ;
一、什么是SQL

* SQL是Structured Quevy Language(结构化查询语言)的缩写
* SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言
* 在使用它时,只需要发出'做什么'的命令,'怎么做'是不用使用者考虑的
二、sql功能分类

* DDL: 数据定义语言 用来定义数据库对象:创建库、表、列等
* DML: 数据操作语言 用来操作数据表中的记录
* DQL: 数据查询语言 用来查询数据
* DCL: 数据控制语言 用来定义访问权限和安全级别

还有去重复数据

select distinct name from +表名 ;

把查询结果进行运算,但必须是数值型

select * , 字段 1 + 字段2 from 表名;

在运算数值结果的时候为了好看和方便,在列的上面可以加个别名

SELECT *,yw+IFNULL(sx,0) AS total FROM score;
# 省略
AS SELECT *,yw+IFNULL(sx,0) total FROM score;

我们也可以让表像excel一样进行排序,比如升序和降序

select * from xxx order by xxx desc,id desc;

count的使用
查询表中xxx的出现次数

SELECT COUNT(*) FROM xxx;

sum的使用

select sum(列名)from + 表名

avg的使用

select avg(列名)from + 表名

查询最大和最小的

serect max(列名),min(列名)from 表名

分组查询

分组查询就是把一样的数据放在一起

select + 列名 + from + 表名 +group by + 列名

对两个同时进行分组

SELECT name,gender FROM employee GROUP BY gender,name;
select 列名,列名2,from +表名+ group by 列名2,列名 

分别显示

SELECT gender,GROUP_CONCAT(name) FROM employee GROUP BY gender;	

给表里添加主键和外建还有不为能空
主键⬇️ ,主键可以在字段名后面添加 还可以 在最后面结束前添加

字段名+primary key 
具体的就是
CREATE TABLE 表名(字段名1 数据类型 primary key,字段名2 数据类型);
方式二:CREATE TABLE 表名(字段1 数据类型,字段名2 数据类型,primary key(要设置主键的字段));

添加外键

constraint 外键名 foreign key(p_id) references person(p_id)

联合主键

CREATE TABLE 表名(字段1 数据类型,字段2 数据类型,primary key(主键1,主键2));	

唯一约束

unique
具体格式是:
CREATE TABLE students(
id INT primary key,
name VARCHAR(50) UNIQUE
)

自动增长,一般主键上用到这个

auto_increment
具体格式是:
REATE TABLE 表名(
字段名1 数据类型 primary key AUTO_INCREMENT,
字段2 数据类型 UNIQUE);

不为空

nut null
具体格式
CREATE TABLE stu(
id int primary key auto_increment,
name varchar(20) unique not null,
gender char(1) default '男'
)

默认约束值

default
具体格式
CREATE TABLE 表名(
字段名1 数据类型 primary key AUTO_INCREMENT,
字段2 数据类型 UNIQUE NOT NULL,
字段3 数据类型 DEFAULT '默认值');

参照完整性

  1. 什么是参照完整性
  • 是指表与表之间的一种对应关系
  • 通常情况下可以通过设置两表之间的主键、外键关系,或者编写两表的触发器来实现
  • 有对应参照完整性的两张表格,再对他们进行数据插入,更新,删除的过程中,系统都会将被修改表格与另外一张对应表格进行对照,从而阻止一些不正确的数据的操作
  1. 数据库的主键和外键类型一定要一致

  2. 两个表必须要是InnoDB引擎

  3. 设置参照完整性后,外键当中的内值,必须得是主键当中的内容

  4. 一个表设置当中的字段设置为主键,设置主键的为主表

  5. 创建表时,设置外键,设置外键的为子表

两张表之间的关联
通过一张表的某个字段关联另一张(需要连接的数据类型要相同)⬇️

表名1(
id int primary key,
name varchar(20),
age int);
表名2(
sid int,
score int,
constraint sc_st_fk foreign key(sid) references (id));

上面是表1的主键要和表三sid的数据类型相同
然后利用表1的主键和表2的外键连接

对已有表添加外键关系

alter table +2的score+ add constraint sc_st_fk foreign key(sid)references student(id);

MySQL-数据库设计三范式
1.要求每一个字段原子不可再分。
2.要求所有非主键子段完全依赖主键,不能产生部分依赖
3.所有非主键字段和主键字段之间不能产生传递依赖

几个经典设计

关系

1. 一对一

一夫一妻 身份证号和你这个人

第一种方案:分为两张表储存,共享主键,第二种:分为两张表储存,外键唯一

2. 一对多

人和车 两张表 外键做在多的那一方

分量个表储存,在多的一方添加外键,这个外键字段引用用一方中的主键字段

3. 多对多

一般会抽出一张中间 来表示另外两张表的关系

分三张表来储存,两个分别储存不同的信息 用第三张来储存前两张关系信息,前两张表都用上主键,第三个表用外键对前两个进行连接

合并结果集 UNION与UNION_ALL

  1. 什么是合并结果集
  • 合并结果集就是把两个SELECT语句的查询结果合并到一起展示
  1. 合并结果集的两种方式

2.1 UNION

  • 合并时去除重复记录
    2.2 UNION ALL

  • 合并时不去除重复记录

  1. 格式

SELECT * FROM 表1 UNION SELECT * FROM 表2;
SELECT * FROM 表1 UNION ALL SELECT * FROM 表2;

UNION

select * from A
union
select * from B

UNION ALL

select * from A
union all
select * from B

被合并的两个结果集:列数类型必须相同

笛卡尔集

A = {a,b}
B = {0,1,2}
C = {a0,a1,a2,b0,b1,b2}
笛卡尔集就是同事查询两个表,使用SQL语句,出现的结果就是笛卡尔集结果
SQL去除笛卡尔积: 主外键保持一致 就可以去除笛卡尔积

SELECT *
FROM students,score;

查询的时候可以给表起别名

SELECT * FROM stu st,score sc;

查询时保持主键外键一致

SELECT *
FROM students,score
WHERE students.id = score.sid;

可以用⬇️
99法(隐式内连接)

SELECT * FROM A表,B表
WHERE A.主键 = B.外键
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值