美文网首页我爱编程
[后端开发] Mysql学习笔记

[后端开发] Mysql学习笔记

作者: 杨山炮 | 来源:发表于2018-05-24 22:08 被阅读0次

1.0 数据库

创建数据库

create database 数据库名;

查看所有数据库

show databases ;

删除数据库

drop  database  数据库名;

切换数据库名

use  database 数据库名;

查看正在使用的数据库

select database();

2.0 数据库表

创建数据库表

create table 表名(
          字段        类型       约束,
           sId         int          PRIMARY KEY  auto_increment
);

查看表结构

desc  表名;

删除表

drop  table  表明名;

3.0 表结构操作ALTER

添加表结构

alter table 表名  ADD  列名 类型(长度) 约束;
alter table 表名  ADD  age  int(16)   NOT NULL ;

修改列名

alter table 表名 modify  列名 类型(长度) 约束; 
alter table 表名 MODIFY  age  int()

修改表修改列名

alter table 表名 change 旧列名 新列名 类型(长度) 约束; 
alter table 标明 change  age   sAge  int(4) NOT NULL

修改表删除列

alter table 表明 drop 列名

修改表名

rename table 久表名 to  新表名

修改表的字符集

alter table 表名 character set 字符集;

4.0 表中添加数据INSERT

单个插入数据

法1:Insert into 表名 (sId,sAge,sName) values ('','','');
法2:Insert into 表名 values (全列名);

批量插入数据

insert into 表名 (列名1,列名,列名) values (值1,值2,值3),(值11,值22,值33),...;

5.0 更新表数据 UPDATE

update 表名 set 字段名=值,字段名=值;
update 表名 set 字段名=值,字段名=值 where 条件;

删除数据

delete from 表名 [where 条件];
或者
truncate table 表名;

删除表中所有记录使用delete from 表名; 还是用truncate table 表名;
删除方式:delete 一条一条删除,不清空auto_increment记录数(如果中途删除过id:7,新增将会从8开始)。 truncate 直接将表删除,重新建表,auto_increment将置为零,从新开始。

6.0 查询表中数据 SELECT

查询所有列的数据

SELECT * FROM 表名

查询指定列的数据

SELECT   列1,列2  ...   from   表名 

查询出去掉重复记录的数据

SELECT DISTINCT  列名  from  表名

6.0.1 别名查询 AS
        别名可以给表中的字段,表设置别名。 当查询语句复杂时,使用别名可以极大的简便操作,用到的关键字是as,有时候可以把as省略。

表别名格式:
select * from 表名 as 别名;等价于select * from 表名  别名;
列别名格式:
select 字段名 as 别名 from 表名;等价于select 字段名 别名 from 表名;

6.0.2 条件查询

while条件的种类.png
//字段查询
1.0 select * from 表名 where  字段=“字段值” ;

//区间查询
2.0 select *from 表名 where salary Between 1000 and 5000 ;
    select * from 表名 where  salary >1000 AND  salary<5000;

//单个区间查询
3.0 select * from 表名 where  salary=1000 OR salary=2000 OR  salary=3000;
    select *from 表名 where  salary in (1000,2000,3000);

//模糊查询
4.0 select  * from  表名 where  字段名  LIKE  '%薪水%';匹配包含薪水的字段

//指定长度字符的字段查询
5.0 select  * from 表名  where  字段名  LIKE   "_ _ _"没有空格区分,便于看清楚;查询指定字段名下有三个长度的字段值

//非空查询
6.0 select  *  from 表名  where  NOT (字段名 IS NULL);

//排序(先过滤) ASC升序,DESC降序
7.0 select  *  from 表名 where name LIKE %支出% order by  字段名  【desc|asc】

函数和分组

查询数据库表有多少行

select count(*) AS  别名  from 表名 //返回标的行数

求和某列的总和

selct sum(列名)  from 表名  where  表名 LIKE '%关键字%'

最大最小值

select  max|min(列名)  AS 别名  from  表名 

平均值

select  avg(列名)  from  表名

分组查询
分组查询规则:

  • group by 列名
  • 分组查询必须跟 上述函数
  • 分组查询必须跟在条件和select语句的后面出现

1.0  select  运算函数(运算的列名) ,排序的列名 from  表单 group  by 排序列名


2.0select  运算函数(运算列)AS 别名,排序列名   from  表名 where 条件判断语句  group by  排序列名(having 别名的条件判断)【对排序之后的进行二次筛选】  order  by 别名【desc|asc】
eg:
select sum(salary) AS salaryTotal ,userName from users where userName LIKE  '%员工%' group  by userName having salaryTotal>5000  order by userName   desc;

having和where的区别:

  • where是对分组钱的数据进行过滤
  • having是对分组后的数据进行过滤
  • having后面可以接聚合函数,where不行

多表操作

添加外键约束

主键: 唯一标识一条记录,不能有重复的,不允许为空
外键: 外键可以有重复的, 可以是空值

alter table 副表名称 add foreign key(外键名称[主键_id])  references 主表名称(主键)

添加外键约束的特点

  • 主表中不能删除副表中已经引用的数据
  • 副表中不能添加主表中不存在的数据
  • 一般副表的外键和主表的主键的字段类型相同

多对多的外键约束处理
        在多张表之间分别创建一个中间表,用于存放两两之间的主键,一般讲这两个字段设置成联合主键,用于将多对多的关系变成多个一对多的形式,为了保持数据的的有效和完整性需要在这个中间表上创建外键约束。

多表查询的内外连接

内连接:会对不满足条件的数据进行不显示操作
select 表1.*,表2.* FROM 表1 join 表2 on  表1表2的连接条件
eg: SELECT user.*,order.* from 表1 join  表2 on  user.id=order.user_id

select 表1.*,表2.*  from  表1 表2 where 表1表2连接条件
eg: SELECT user.*,order.* from 表1 , 表2 where  user.id=order.user_id


//外连接
select  表1.*,表2.* from 表1 left  join 表2 on 表1表2 的连接条件
解析:优先展示join字段左边表的所有数据,根据条件关联查询join右边的表的符合条件的数据,
不满足条件的数据显示为null值
select 表1.*,表2.* from 表1 right join 表2 on 表1表2 的连接条件
同理可得,两者之间可以相互转换



子查询:子查询就是当前查询的结果依赖于另外一个查询的结果

数据库的备份与还原

  • 数据库的备份命令:
//备份
  mysqldump -uroot -p<数据库密码> 数据库名 >磁盘位置
  • 数据库的还原命令(非登录模式下的):
//数据库还原
mysql  -uroot -p<密码> 数据库名 <数据库文件位置
  • 数据库的还原命令(登录模式下的):
mysql  -uroot -p123456
show databases;
use databasename;
source 数据库文件名

相关文章

网友评论

    本文标题:[后端开发] Mysql学习笔记

    本文链接:https://www.haomeiwen.com/subject/vobidftx.html