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高级查询
- Count 用来统计记录的函数。
案例,统计student表中有多少条记录
Select count(*) from student;
- sum 是用来求和的。
案例 求出grade 字段的总和。
Select sum(grade) from student;
- 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高级查询
- Count 用来统计记录的函数。
案例,统计student表中有多少条记录
Select count(*) from student;
- sum 是用来求和的。
案例 求出grade 字段的总和。
Select sum(grade) from student;
- avg 函数用于求出某字段平均值
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-11lQugkL-1715547568379)]
[外链图片转存中…(img-QgTln3wV-1715547568380)]
[外链图片转存中…(img-tyMffOGg-1715547568380)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!