MySql学习笔记

mysql version : 5.7.*


基本使用

  1. 登录
    1. 打开cmd命令窗口 windows+r 输入cmd
    2. mysql -u用户名 -p密码
mysql -uroot  -p123
  1. 退出
exit;

数据库操作

  1. 查看所有的数据库
show databases;
  1. 创建数据库
-- create database  数据库名  default charset=utf8;
create database test default charset=utf8;
  1. 删除数据库
-- drop database 数据库名
drop database test;
  1. 使用数据库
-- use 数据库名;
use test;

数据类型

  1. 数值
    1. tinyint
    2. int
    3. float
    4. decimal (以字符串的形式存储小数)
  2. 字符串
    1. char 定长字符串,最大255
    2. varcahr 变长字符串
    3. text 长文本
  3. 日期
    1. timestamp 以年月日形式存储一个时间戳

: 除了数值型,其他类型在使用时都需要用引号("")括起来

字段约束

  1. unsigned 无符号的整数(正数)
  2. auto_increment 自增(必须是主键才能自增)
  3. not null 这一列的值不能为null
  4. default 默认值(如果插入/修改时字段值为空就采用默认值)

数据表操作

  1. 创建表
-- create table 表名(
-- 字段1  数据类型  字段约束,
-- 字段2  数据类型  字段约束,
-- ....
-- 字段n  数据类型  字段约束
-- );

create table user(
    id int unsigned primary key auto_increment,
    name char(4) not null,
    sex  char(1)  not null,
    age  tinyint not null
);
  1. 删除表
-- drop table 表名
drop table user;
  1. 修改表结构

    1. 添加字段
    -- alter table 表名 add 要添加的字段名 添加字段的属性
    -- 向 user 表中添加 一个 height 字段
    alter table user add height int unsigned not null;
    
    1. 删除字段
    -- alter table 表名 drop 字段名
    -- 删除 user 表中的 height 字段
    alter table user drop height;
    
    1. 修改字段( 索引不会丢失 )
    -- 修改字段属性:alter table 表名 modify 字段名-字段属性;
    -- 将user表中的 age 字段修改为可以为 不能为负数
    alter table user modify age tinyint unsigned not null;
    
     -- 修改字段名:alter table 表名 change 原字段名 新字段名-字段类型-字段属性;
     -- 将user表 sex 字段修改为 gender
     alter table user change sex gender int tinyint unsigned not null;
    
    1. 修改表名称
    -- rename table 原表名 to 新表名;
    rename user to users;
    
  2. 查看表

-- desc 表名
-- 查看表结构
desc user;

-- 查看数据库中所有的数据表
show tables;

数据表数据操作

  1. 添加数据
-- 添加一条数据: insert into 表名(字段1,字段2...字段n) values(值1,值2...值n);
-- 此时id是自增属性,可以不填写
insert into user(name,age) values('user1',18);

-- 添加多条数据: insert into 表名(字段1,字段2...字段n) values(值1,值2...值n),(值1,值2...值n);
insert into user(name,age) values('user2',20),('user3',22),('user4',24);

: 插入数据是,字段和值必须一一对应,插入多个数据是,括号之间必须用逗号(,)隔开

  1. 删除数据
-- 删除数据(自增属性不会重置): delete from 表名 where 条件
delete form user where id=1;

-- 清空数据(自增属性会重置): truncate 表名
truncate user;

: 删除数据是必须要写明 where 条件,不然会删除表中所有的数据

  1. 修改数据
-- update 表名 set 字段1=值1,字段2=值2...字段n=值n where 字段=值;
update user set name='testUserName',age=30  where id=1;

: 删除数据是必须要写明 where 条件,不然会修改表中所有的数据

查询数据(重点)

查询数据的关键字使用顺序(不能修改):

select => from => where => group by => having => order by => limit

  1. 查询所有数据

    -- select * from 表名
    select * from user;
    
  2. 查询指定字段

    -- select 字段1,字段2..字段 from 表名
    select name,age from user;
    
    -- 查询指定字段并去重: select distinct 字段 from 表名
    -- 查询user表中所有不重复的名字
    select distinct name from user;
    
  3. 带条件的查询 where

    -- select *|字段列表 from 表名 where 条件
    select * from user where id=1;  -- 查询user表中id为一的数据
    select * from user where id>3;  -- 查询user表中所有id大于3的数据
    select * from user where id>=3; -- 查询user表中所有id大于等于3的数据
    select * from user where id<5;  -- 查询user表中所有id小于5的数据
    select * from user where id<=5; -- 查询user表中所有id小于等于5的数据
    select * from user where id in(1,3,5);         -- 查询user表中id是1或3或5的数据
    select * from user where id between 10 and 20; -- 查询user表中id在10到20之间的数字
    select * from user where name is null;     -- 查询user表中所有name字段值为null的数据
    select * from user where name id not null; -- 查询user表中所有name字段值不为null的数据
    select * from user where id>3 and name is not null; -- 查询user表中id大于3并且name不为空的数据
    select * from user where id>3 or name is not null;  -- 查询user表中id大于3或者name不为空的数据
    
  4. 模糊查询 like

    -- select * from 表名 where 字段 like '%需要查找的内容%';
    -- 查询所有user表中name字段包含 测试 的数据
    select name,age from user where name like '%测试%';
    
    -- 查询所有user表中name字段包含所有 是以任意字符开头并且以测试结尾的数据
    select name,age from user where name like '_测试';
    
    -- 查询所有user表中name字段包含所有 是以任意字符开头并且以测试开头的数据
    select name,age from user where name like '测试_';
    

    模糊查询特殊字符:

    1. _____ : 任意一个字符
    2. %: 任意0个或多个字符
  5. 分组聚合(重在理解,没有数据,笔记难做)

    1. 数据分组 group by
    -- select 分组字段 from 表名 group by 分组字段;
    -- 根据性别把所有数据分为两组,并查看每组有多少数据
    select sex,count(*) from user group by sex;
    
    -- 根据性别把所有数据分为两组,并查看每组有多少数据
    
    

    : 一般所有分组字段(group by后的字段)也需要写在select后面

    1. 聚合函数
    -- 最大值: max()
    -- 最小值: min()
    -- 平均值: avg()
    -- 求总和: sum()
    

    : 所有的聚合函数都是对分组之后的数据进行操作的

  1. 排序 order by
-- 对查询后的数据进行排序
-- select * 字段列表 from 表名 order by 字段1,字段2 [desc];

-- 根据 age 字段升序排序,默认升序
select * from user order by age;

-- 根据 age 字段降序排序后,然后根据id字段升序排序
select * from user order by age desc,id;
  1. 分页
-- select * from 表名 limit 从第n条数据开始显示,显示m条数据

-- 从user表中查询数据,从第5条开始显示,显示5条
select * from user limit 5,5;

-- 从user表中查询数据,从第0条开始显示是,0可以不写
select * from user limit 5;
  1. 多表查询(多个表必须建立关系)
    1. 内联查询
-- select * from 表名1,表名2 where 表名1.表名1有关系的字段 = 表名2.表名2有关系的字段

select * from user,info where user.id = info.id;
-- 或者用以下这种方式
select * from user inner join info on user.id=info.id;
  1. 左|右连接(两种方式一样的)
select * from users left join score on  user.id=score.id;

其他笔记

修改 Mysql 默认字符集 ( wampserver )

mysql服务器和客户端都使用utf8的编码:
1)找到mysql的配置文件【 my.ini 】
2)找到[client]后面加【 default-character-set = utf8 】
3)找到[wampmysqld64]后面加【 character-set-server = utf8 】
4)找到[wampmysqld64]后面加【 collation-server = utf8_general_ci 】

  1. 使用【\s】命令查看字符集编码(如果结果如下说明修改成功)
    Server characterset: utf8
    Db characterset: utf8
    Client characterset: utf8
    Conn. characterset: utf8

如果以上不管用就请使用以下方法:-------------------

1)打开mysql中的配置文件: my.ini
2)找到[client] 在其下面添加: default-character-set=utf8
3)找到[mysql]在其下面添加 : default-character-set=utf8
4)找到[mysqld](一般是在最后面那行)下面添加 : character-set_server=utf8
5)加完之后保存,重启mysql服务,再执行 show variables like '%char%'; 查看是否修改成功

查看MySQL默认字符集编码

查看服MySQL支持的编码: show character set

查看MySQL服务器和客户端的字符集: show variable like %char%

修改Mysql密码( 默认没密码 )

  1. mysql -uroot -p
  2. update mysql.user set authentication_string=password('密码') where user='root'
  3. flush privileges; (或者重启MySQL服务)

此时 密码 就是需要修改的密码

数据创建

  1. 导入数据
-- 在 windows dos 命令行中
-- mysql -u用户名 -p密码 数据库名 数据表名 sql文件名
mysql -uroot -p123 数据库名 < 1.sql
  1. 导出数据

: 导出数据会生成对应的sql文件,导入数据是,需要有相应的表结构

-- 在 windows dos 命令行中
-- mysqldump -u用户名 -p密码 数据库名 数据表名>sql文件名
mysqldump -uroot -p123 test user > 1.sql

修改默认表引擎

  1. 找到mysql的配置文件 my.ini
# 查找 default-storage
# 将 default-storage-engine=MYISAM 修改为 default-storage-engine=InnoDB
default-storage-engine=InnoDB

两个表引擎之间的区别:

  1. innoDB 支持外键,支持事务 MYISAM 不支持外键,不支持事务

连表查询

数据

students

id name
1001 tom
1002 jack
1003 jason

results

student_id score score_name
1001 tom Math
1002 jack History
1005 alex History

内链接

select * from student as s join results as r on s.id=r.student_id where r.score>60;

select * from 表1 join 表2 on 表1.id=表2.id where 其他条件

左链接

left join左边的表中的数据全部查询出来,右边的的表中符合条件的查询出来

select * from student as s left join retults as r on s.id=r.student_id where r.score>60

select * from 表1 right join 表2 on 表1.id=表2.id where 其他条件

右链接

rigit join右边的表中的数据全部查询出来,左边的的表中符合条件的查询出来

select * from student as s right join retults as r on s.id=r.student_id where r.score>60

select * from 表1 left join 表2 on 表1.id=表2.id where 其他条件

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

推荐阅读更多精彩内容

  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,820评论 5 116
  • 观其大纲 page 01 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 M...
    周少言阅读 3,158评论 0 33
  • 从前来过嘉定几次,全是是匆匆而过,并没有真正领略过这里的风土人情。今天在这里好好逛一圈,切实体会一下这里的景致和风...
    昆仑濯羽阅读 283评论 2 3
  • 我妈的哲学是,能用钱解决的事,绝对不用钱解决 最近,我家新添了个大件——某森吸尘器。 当我从快递小哥手上接过这个价...
    深夜奇遇记阅读 506评论 0 0
  • Isabella提到在看大姐的《三观易碎》的时候觉得有完整的价值观是件高大上的事情,我回忆起几年前我看的时...
    Aloe_慧阅读 519评论 0 0