MySQL零基础从入门到精通,看完这篇直接毕业!(图文并茂,实战教学)

Createtable表名(

字段名1数据类型[完整性约束条件],

字段名2数据类型[完整性约束条件],

字段名n数据类型[完整性约束条件]

)characterset字符集collate校对规则;

创建数据库

Createdatabaseitcast;

选择数据库

Useitcast;

2.创建一个用于存储学生成绩的表tb_grade


Createtabletb_grade1(

Idint(11),

Namevarchar(30),

Gradefloat

);

查看当前数据库所存在的表

Showtables;

查看表详细信息

Showcreatetabletb_grade;

查看表详细信息(调整格式)

Showcreatetabletb_grade\G

使用DESC查看数据库

DESCtb_grade;

Field字段名称

Type字段类型

Null表示该列是否可以存储NULL值

Key表示该列是否已经编制索引

Default表示该列是否有默认值

Extra表示附加信息

添加、更新、、删除数据

===========

Createdatabasech03;

Usech03;

Createtablestudent(

Idint(4),

Namevarchar(20)notnull,

Gradefloat

);

使用select*fromstudent;可以查看当前数据表所有记录

添加操作


INSERTINTO表名(字段名1,字段名2,……)把表所有字段写完

VALUES(值1,值2,……);

指定字段名的方式添加记录

案例在student表中添加一条记录

Insertintostudent(id,name,grade)values(1,’zhangsan’,99);

Insertintostudent(name,grade,id)valuse(‘lisi’,88,2);

不指定字段名的方式添加记录

Insertintostudentvalues(3,’wangwu’,77);

1.为表指定字段添加数据

语法

INSERTINTO表名(字段名1,字段名2,……)可以指定添加的字段

VALUES(值1,值2,……);

Insertintostudent(id,name)values(4,’zhaoliu’);

Insertintostudent(id,grade)values(5,78);

错误field‘name’doesn’thaveadefaultvalue

insert语句其他写法

Insertinto表名set字段名1=字段值1,字段名2=字段值3…

Insertintostudentsetid=5,name=’zhangsan’,grade=55;

2.同时添加多条记录

INSERTINTO表名[(字段名1,字段名2,……)]

VALUES(值1,值2,……),(值1,值2,……),

……

(值1,值2,……);

Insertinto student values(6,’xiaohong’,81),(7,’xiaowang’,82),(8,’xiaoming’,82);

直插入IDname

Insertinto student(id,name)values(9,‘xiaohong1’),(10,‘xiaowang2’),(11,‘xiaoming3’);

3.2更新数据


语法

update 更新部分数据

案例:更新student 表中id字段值为1的记录。将记录中的name字段的值更新为zhangsan, grade 字段的值更新为50.

Update student set name=’zhangsan’,grade=50 where id=1;

案例2.更新student表中id字段小于3的记录,将grade字段全部修改为100;

Update student set grade=100 where id<3;

Update student set grade=80 where id=1 or id=2;

update 更新全部记录

Update 表名 set 字段名=值;

案例将student 表中的所有记录其中的grade 字段修改为0;

Update student set grade=0 ;

3.3删除数据


语法

Delete from 表名 【where 条件表达式】

删除表中部分记录

案例在student表中,删除id为1的记录;

Delete from student where id=1;

案例2在student 表中删除ID大于3的所有记录

Delete from student where id>3;

删除全部记录

案例 删除student 表中全部记录

Delete from student;

通过truncate删除记录

语法

Truncate 【table】 表名

创建一张新表

Create table tab(

Id int(3) primary key auto_increment,

Name varchar(20)

);

插入记录


Insert into tab(name) values(‘A’),(‘B’),(‘C’),(‘D’),(‘E’),(‘F’);

Delete 与 truncate 区别:

索引

===

为什么要使用索引:为了提高表的查询速度

一、索引包含几种:

普通索引、唯一索引、全文索引、单列索引、多列索引、空间索引、创建索引

创建表的时候创建索引

Unique:表示唯一索引

Fulltext:全文索引

Spatial: 空间索引

Index和KEY:字段索引 二选一

别名:创建索引的名称,可选

字段名:指定索引对应字段

长度:用于表示索引的长度

Asc和desc:asc 代表升序 desc 降序

二、创建普通索引

案例 在T1表中ID字段上建立索引。

Create table t1(

Id int,

Name varchar(20),

Grade float,

Index (id)

);

查看索引是否被使用

三、唯一索引创建

Create table t2(

Id int,

Name varchar(20),

Grade float,

Unique index unique_id (id asc)

);

四、创建全文索引

Create table t3(

Id int,

Name varchar(20),

Grade float,

Fulltext index fulltext_name(name)

)engine=myisam;

五、单列索引

索引字段只有一个叫单列索引,上述三个案例都是单列索引

六、多列索引

Create table t4(

Id int,

Name varchar(20),

Grade float,

Index multi (id,name(20))

);

注意: 在多列索引中,只有查询条件中使用了这些字段中的第一个字段时,多列索引才会被使用

七、空间索引创建

Create table t5(

Space geometry not null,

Spatial index sp(space)

)engine=myisam;

表的约束

====

Primarykey主键约束

FOREIGNKEY外键约束

NOTNULL非空约束

UNIQUE唯一约束

DEFAULT默认值约束

1.主键约束

保证该字段唯一并且保证该字段不为空

单字段主键字段名数据类型PRIMARYKEY

案例创建一张数据表EX1并设置id为主键

Createtableex1(

Idintprimarykey,

Namevarchar(20),

Gradefloat

);

Insertintoex1(id,name,grade)vaules(1,’zhangsan’,88);

多字段主键

案例创建ex2表并把id和sud_id两个字段共

同作为主键

Createtableex2(

Idint,

Sud_idint,

Gradefloat,

Primarykey(Id,Sud_id)

);

2.非空约束

定义☞字段的值不能为空(null)

语法字段名数据类型notnull

案例创建ex3把表中的NAME字段设置为非空约

Createtableex3(

Idintprimarykey,

Namevarchar(20)notnull,

Gradefloat

);

3.唯一约束

唯一约束用于保证数据表中字段的唯一性,表中

字段的值不允许出现重复值。

语法字段名数据类型unique

案例创建表EX5把sub_id字段设置为唯一约束;

Createtableex5(

Idintprimarykey,

Sub_idintunique,

Namevarchar(20)

);

4.默认约束

默认约束用于给数据表中的字段指定默认值

语法字段名数据类型default默认值

案例创建ex6表,将表中的成绩字段GRADE

设置为默认值为0

Createtableex6(

Idintprimarykey,

Namevarchar(20),

Gradefloatdefault0

);

设置表的字段值自动增加

字段名数据类型AUTO_INCREMENT;

案例创建ex7表,将表中ID字段设置为自动增加。

Createtableex7(

Idintprimarykeyauto_increment,

Namevarchar(20),

Gradefloat

);

基本查询

=====

语法

SELECT [DISTINCT] *|{字段名1, 字段名2, 字段名3,……}

FROM 表名

[WHERE 条件表达式1]

[GROUP BY 字段名 [HAVING 条件表达式2]]

[ORDER BY 字段名 [ASC|DESC]]

[LIMIT [OFFSET] 记录数]

select from 系统关键字

Distinct 去除重复值

*|字段名 *代表当前表中所有字段 两者只能选一个

Where 筛选条件 用于指定查询条件

Group bu 用于将查询结果按照指定字段分组

Having 筛选条件 用于分组后使用

Order by 用于将数据排序, 其中ASC 代表升序 , DESC代表降序 不写默认升序

Limit 控制查询条数

查询所有字段

在select 语句中指定所有字段

Select 字段1,字段2… from 表名

案例查询STUDENT 表中所有记录

1、创建数据库

Create database ch04;

2.选择数据

Use ch04;

3.创建数据表

create table student(

Id int(3) primary key auto_increment,

Name varchar(20) not null,

Grade float,

Gender char(4)

);

添加记录

Insert into student (name,grade,gender) values

(‘songjiang’,40,’n’),(‘wuyong,100,’n’),(‘qinming’,90,’n’),(‘husanniang’,88,’v’),(‘sunerniang’,66,’v’),(‘wusong’,86,’n’),(‘linchong’,92,’n’),(‘yanqing’,90,null);

查询操作

select id,name,grade,gender from student;

通过*号通配符代替所有字段

语法

Select * from 表名

案例 查询student表中所有记录

Select * from student

4.1.3 查询指定字段

语法

Select 字段名1,字段名2,… from 表名

案例 查询student 表中姓名和成绩字段信息

Select name,grade from student;

案例 如果先展示grade 后展示NAME是否可以

4.2 条件查询

4.2.1带关系运算符的查询

案例1.查询student 表中ID为4的学生姓名。

Select id,name from student where id=4;

案例2.查询name 为wusong的学生性别。

Select name,gender from student where name=’wusong’

案例3.查询student 表中 grade 大于80分的学生姓名

Select name,grade from student where grade>80;

4.2.2带in 关键字的查询

案例1.查询student 表中id的值为1,3,4的记录。

Select * from student where id in(1,3,4);

案例2.查询student 表中id的值不为1,3,4的记录。

Select * from student where id not in(1,3,4);

4.2.3带between and 关键字的查询

案例查询student 表中id值在2-5之间的学生姓名;

Select id,name from student where id between 2 and 5;

4.2.4空值查询

案例。查询student 表中gender为空值的记录。

Select * from student where gender is null;

案例2.查询student 表中gender不为空值的记录。

Select * from student where gender is not null;

4.2.5带distinct关键字的查询

Select gender from student;

语法

案例 查询student 表中有哪些性别 要求不重复;

Select distinct gender from student;

案例查询STUDENT 表中gender 和name字段,使用distinct 关键字作用与这两个字段

Select distinct gender,name from student;

案例查询STUDENT表中gender和name字段,使用distinct关键字作用与这两个字段

Selectdistinctgender,namefromstudent;

4.2.6带like关键字的查询

1.带百分号%通配符

案例查找student表中name字段以S开头的学生id;

Selectid,namefromstudentwherenamelike“s%”;

案例查询student表中name字段以W开头,以g结尾的学生id;

Selectid,namefromstudentwherenamelike“w%g”;

案例3.查询student表中name字段值包含y的学生ID;

Selectid,namefromstudentwherenamelike“%y%”;

2.下划线_通配符

案例1查询student表中name字段以wu开始,以字符串ong结尾,并且两个字符串中间

只有一个字符的记录。

Selectid,namefromstudentwherenamelike“wu_ong”;

案例2.name字段值包含7个字符。并且以字符串ing结束的记录。

Selectid,namefromstudentwherenamelike“____ing”;

案例3查询student表中name字段值包含%的记录;

Insertintostudentvalues(null,’sun%er’,98,’n’);

Selectid,namefromstudentwherenamelike“%\%%”;

查询记录时如果需要查询%或者_则在字符前面加上转义字符\;

4.2.7带and关键字的多条件查询

案例查询id字段值小于5,并且gender字段值为v的所有学生信息;

Select*fromstudentwhereid<5andgender=’v’;

案例2.查询id字段值在(1,2,3,4)中name字段值以字符串ng结束,并且grade字

段值小于80的记录;

Select*fromstudentwhereidin(1,2,3,4)andnamelike“%ng”andgrade<80;

4.2.8带or关键字的多条件查询

案例1查询id小于3.或者gender为V的学生信息

Select*fromstudentwhreid<3orgender=’v’;

案例2查询name字段以字符H开后,或者gender字段为V,或者grade为100;

Select*fromstudentwherenamelike‘h%’orgender=’v’orgrade=100;

or和and一起使用的情况

查询gender字段值为V或者gender字段值为男,并且grade为100的记录

Select*fromstudentwheregender=’v’orgender=’n’andgrade=100;

注意,如果and和or一起使用是先执行and后执行or

高级查询

=====

4.3高级查询

  1. Count 用来统计记录的函数。

案例,统计student表中有多少条记录

Select count(*) from student;

  1. sum 是用来求和的。

案例 求出grade 字段的总和。

Select sum(grade) from student;

  1. avg 函数用于求出某字段平均值

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
der字段值为男,并且grade为100的记录

Select*fromstudentwheregender=’v’orgender=’n’andgrade=100;

注意,如果and和or一起使用是先执行and后执行or

高级查询

=====

4.3高级查询

  1. Count 用来统计记录的函数。

案例,统计student表中有多少条记录

Select count(*) from student;

  1. sum 是用来求和的。

案例 求出grade 字段的总和。

Select sum(grade) from student;

  1. avg 函数用于求出某字段平均值

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-11lQugkL-1715547568379)]

[外链图片转存中…(img-QgTln3wV-1715547568380)]

[外链图片转存中…(img-tyMffOGg-1715547568380)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值