[后端开发] Mysql学习笔记

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不行
  • where只能进行分组前的过滤,分组后的过滤工作只有having才能做
  • where语句中不允许使用聚合函数,having语句中允许使用聚合函数

多表操作

添加外键约束

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

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 数据库文件名
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,829评论 1 331
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,603评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,846评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,600评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,780评论 3 272
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,695评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,136评论 2 293
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,862评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,453评论 0 229
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,942评论 2 233
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,347评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,790评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,293评论 3 221
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,839评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,448评论 0 181
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,564评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,623评论 2 249

推荐阅读更多精彩内容