MySQL基本操作

这篇博客详细介绍了MySQL的基本操作,包括数据库和数据表的创建、删除、显示,以及SELECT语句的使用。还讨论了数据类型、约束、SQL语言分类等数据库基础知识,并涵盖索引、视图、数据导入导出等其他操作。
摘要由CSDN通过智能技术生成

启动数据库:net start mysql
关闭数据库:net stop mysql
!!!如果显示”net”不是内部命令,则如下:
在这里插入图片描述

数据库操作

1、连接数据库:

mysql -u root -p
(密码:123456   查看数据库的安装路径:show variables like "%char%";)

2、创建数据库:

create database  <数据库名>  character set utf8;

3、删除数据库:

drop database  <数据库名>;

4、显示所有数据库:

show databases;

5、选择数据库:

use  <数据库名>;(之后的操作都在该数据表中进行)

6、显示数据库创建语句:

show create database  <数据库名>;

数据表操作

1、创建表:

create table <表名>
(
列名1 数据类型1(数据长度),
列名2 数据类型2(数据长度),
列名3 数据类型3(数据长度)
)charset=utf8;

2、删除表:

drop table  <表名>;

3、显示所有表:

show tables;

4、显示表中的全部数据:

select * from <表名>;(显示所有列)

5、显示表创建语句:

show create table <表名>;

6、显示表结构:

desc  <表名>;

7、复制已有表结构:

create table <新表名> like <表名>;(数据库.表名可以访问任何数据库里的表)

8、修改表名:

rename table 旧表名 to 新表名;
alter table 旧表名 rename 新表名;
alter table 旧表名 rename to 新表名;

9、修改表结构:

增加一列:alter table <表名> add column 列名 数据类型 约束 after 列名/first;
删除一列:alter table <表名> drop column 列名;
修改列名:alter table <表名> change 旧列名 新列名 数据类型 约束;

数据类型不能省略,当旧列名和新列名相同的时候,指定新的数据类型或约束,就可以修改数据类型或约束。需要注意的是,修改数据类型可能会导致数据丢失,所以要慎重使用。
修改列的数据类型:alter table <表名> modify 列名 新数据类型;

10、对表数据的修改:

增加一行数据:insert into <表名>(列1,列2,列3) values(值1,值2,值3);
修改表中某个数据:update <表名> set 列1=修改后的内容,列2=修改后的内容 where 列=该条数据本身具备的条件;
删除一行数据:delete from <表名> where 列=需要删除的数据独有的条件;
删除所有的数据:delete from <表名>;

SELECT语句详解

1、SELECT查询语句:

select * from <表名>;
select 列名1,列名2  from <表名>;

2、where条件查询:

select 列名 from <表名> where 查询条件;`

**去重查询:**select  distinct 列名 from <表名>;
         distinct只能放在开头,列名,distinct 列名是会报错的


and与or:查询条件可以有[条件一 AND 条件二],[条件一 OR 条件二]

in 与not in:用于筛选“在”或者“不在”某个范围
             select * from <表名> where 列名 in(‘a’,’b’);(在a或在b)
             select * from <表名> where 列名 not in(‘a’,’b’);(不在a也不在b)
           
between...and...:在...区间之内(包括值1和值2)
                  select 列名 from <表名> where 列名 between 值1 and 值2;
                  
not between...and...:不在...区间之内(包括值1和值2)
                      select 列名 from <表名> where 列名 not between 值1 and 值2;
                     
is null:是否为空
         select 列名 from <表名> where 列名 is null;
        
is not null:是否不为空
             select 列名 from <表名> where 列名 is not null;
             
<  <=  >  >=  =  !=:select 列名 from <表名> where 列名>值;

3、like模糊查询:

select 列名 from <表名> where 列名 like ‘a_’ , ’b%’;
通配符:_和%(_代表一个未指定字符,%代表不定个未指定字符)

4、order by排序查询:

select * from <表名> order by 列名 asc/desc/默认;
默认情况下是升序排序,使用asc和desc则是升序和降序排序。

5、Limit m,n查询指定数据的数量:

select 列名 from <表名> limit 0,3;
从索引为0(也就是第一条数据)开始取,取3条数据。

6、group by 分组查询:

select 列名 from <表名> group by 列名;
group by中的参数,要在select中出现。有count一般就会有group by。

7、having条件查询:

select 列名 from <表名>  group by  列名  having  函数(列名)>值;
having后面跟随的是过滤的条件,上述只是参考

having和where的区别:
where是一个约束说明,在查询结果返回之前对查询条件进行约束,即在结果返 回前起作用,where后面不能使用聚合函数,因为where的执行顺序在聚合函数 之前。
having是一个过滤声明,在查询结果返回之后进行过滤,即在结果返回后起作用, having后面可以使用聚合函数,但是不能对没有查出来的数据使用having,因为 having是对分组后的数据进行过滤。
having一般和group by 和聚合函数(以下)一起使用。

8、内置函数和计算

函数名countsumavgmaxmin
作用计数求和求平均值最大值最小值
count函数可用于任何数据类型(因为它只是计数),查询行数或者说条数
select count(列名) as 新列名 from <表名>;

sum、avg函数都只能对数字类型数据做计算,查询一列数值的总和/平均值
select sum(列名) as 新列名 from <表名>;
select avg(列名) as 新列名from <表名>;

max、min可用于数值、字符串或是日期时间数据类型,查询一列数值
select max(列名) as 新列名 ,  min(列名) as 新列名 from <表名>;

AS关键词可以给值重命名(AS可以省略)

9、子查询

把一个查询的结果在另一个查询中使用就叫做子查询。
select 列名  from <表名>  where 列 in (select  列名  from <表名>);

10、多表联查:

inner join...on...内连接:
例一:
select 表1.列名,表2.列名  from 表1,表2  where 表1.列名=表2.列名;
select id,name,people_num from employee,department where employee.in_dpt = department.dpt_name order by id;

例二:
select 表1.列名,表2.列名 from 表1 inner join 表2  on 表1.列名=表2.列名;
select id,name,people_num from employee join department on employee.in_dpt = department.dpt_name order by id;

例三:
select 列名 from 表1 join 表2 on 表1和表2之间的关系 join 表3 on 表1和表3之间的关系
select name,people_num,COUNT(proj_name) AS count_project from employee,department,project where in_dpt = dpt_name and of_dpt = dpt_name group by name,people_num;

left join...on...左外连接:
select 表1.列名, 表2.列名 from 表1  left join 表2 on 表1.列名=表2.列名;

right join...on...右外连接:
select 表1.列名, 表2.列名 from 表1 right join 表2 on 表1.列名=表2.列名;
数据库的内连接和外连接数据库的左连接和右连接
内连接就相当于交集,外连接就相当于并集。内连接的查询结果只会出现两个表 都拥有的数据,外连接则相反,一个表中有的数据在另一个表中没有,也可以出 现在查询结果中。(外连接就需要一个基准表)左连接就是将left join左边的表作为基准表,右连接是将right join右边的表作为基准表

其他基本操作

1、索引:

alter table <表名> add index 索引名(列名);
create index 索引名 on <表名>(列名);
select * from <表名> where 列名=?;

2、视图:

create view 视图名(列a,列b,列c) as select 列1,列2,列3 from <表名>;
select * from 视图名;

3、导入:

首先查看路径变量:show variables like ‘%secure%’;
再打开一个终端,拷贝数据文件夹到路径目录下:sudo cp -a /原路径 /路径变量
查看文件中的数据:sudo vim /路径/文件名
最后导入:load data infile ‘文件路径和文件名’ into table <表名>;

4、导出:

select 列1,列2 into outfile ‘文件路径和文件名’ from <表名>;
sudo cat /文件路径/文件名

5、备份:

mysqldump -u root <数据库名>  > 备份文件名;#备份整个数据库
mysqldump -u root <数据库名>  <表名>  > 备份文件名;#备份整个表

mysqldump是MySQL用于备份数据库的实用程序。主要是产生一个SQL脚本文		件,其中包括从头重新创建数据库所必需的命令。
使用命令“ls”可见已经生成备份文件

备份和导出的区别:导出的文件只是保存数据库中的数据,而备份则是把数据库	的结构,包括数据、约束、索引、视图等全部另存为一个文件。

6、恢复:

方式一:source /文件路径/文件名
方式二:新建一个空的数据库 create database test;
       退出MySQL,然后 mysql -u root test < bak.sql
       最后就可以查看数据库了

加载数据库文件

1、用get命令将需要的数据文件下载到本地文件夹:

git clone https://数据文件的路径/本地文件夹
git clone https://gitHub.com/shiyanlou/SQL3.git

2、加载文件中的数据,输入以下命令行:

source /数据文件夹在本地的路径/数据文件;

数据库基础知识

1、数据库:安装数据结构,存储和管理数据的仓库
2、SQL:结构化查询语言(不区分大小写)
3、MySQL:是一个DBMS(关系型数据库管理系统)
4、约束:是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。
5、数据库的三级模式结构:外模式、概念模式、内模式(逻辑独立和物理独立)
6、用户级对应外模式,概念级对应概念模式,物理级对应内模式

数据类型:

类型字节含义实例
int4整数
float4单精度浮点数
double8双精度浮点数
enum单选enum(‘a’,’b’,’c’)
set多选SET(‘1’,’2’,’3’)
date3日期YYYY-MM-DD
time3时间点或者持续时间HH:MM:SS
year1年份值YYYY
char0~255定长字符串
varchar0~255变长字符串
text0~65535长文本数据

char和varchar的区别:
char的长度是不可变化的,varchar是可变化的。例如,存储字符串’abc’,对于
char(10),表示存储的字符将占用10个字节(包括7个空字符),而同样的
varchar(12)则只占用4个字节的长度,增加一个额外字节来存储字符串本身的长度,12只是最大值,但你存储的字符小于12时,按实际长度存储。

约束类型:

约束类型主键默认值唯一外键非空关键字
PRIMARYKEYDEFAULTUNIQUEFOREIGNKEYNOT NULL

定义主键的方法:
在创建表的时候,直接添加在列名语句后面
在这里插入图片描述
在这里插入图片描述
还有一种特殊主键–复合主键
在这里插入图片描述

数据库SQL语言的分类:

查询语言:对数据进行操作。select
操作语言:对数据进行操作。插入(insert)、更新(update)、删除(delete)
定义语言:对数据库或者数据表进行操作。创建(create)、修改(alter)、删除(drop)、查看(desc、查看仅对数据表)
控制语言:用于对数据库权限的修改。给用户授予权限(grant)
取消用户权限(remoke)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值