| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> MySQL零基础从入门到精通,看完这篇直接毕业!(图文并茂,实战教学) -> 正文阅读 |
|
[大数据]MySQL零基础从入门到精通,看完这篇直接毕业!(图文并茂,实战教学) |
数据表的创建1.创建数据表语法Createtable表名( 字段名1数据类型[完整性约束条件], 字段名2数据类型[完整性约束条件], .... 字段名n数据类型[完整性约束条件] )characterset字符集collate校对规则; 创建数据库 Createdatabaseitcast; 选择数据库 Useitcast; 2.创建一个用于存储学生成绩的表tb_gradeCreatetabletb_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字段上建立索引。
查看索引是否被使用 三、唯一索引创建
四、创建全文索引
五、单列索引索引字段只有一个叫单列索引,上述三个案例都是单列索引 六、多列索引
? 注意: 在多列索引中,只有查询条件中使用了这些字段中的第一个字段时,多列索引才会被使用 七、空间索引创建
表的约束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高级查询
案例,统计student表中有多少条记录 Select count(*) from student;
案例 求出grade 字段的总和。 Select sum(grade) from student;
案例 求出student 表中grade字段的平均分 Select avg(grade) from student;
案例 求grade 字段最大值 Select max(grade) from student;
案例 求grade字段最小值 Select min(grade) from student; 4.3.2对查询结果排序案例 查出student表中所有记录, 并按照grade 字段进行排序, Select * from student order by grade; Select * from student order by grade asc; 案例2 要求降序排列 Select * from student order by grade desc; 案例3.查询所有记录,按照gender 字段的升序,grade字段的降序排列。 Select * from student order by gender asc,grade desc; 4.3.3分组查询在对表中数据进行统计时,也可能需要按照异地ing的类别进行统计,可以使用 group by ; 语法
案例 按照gender 字段进行分组。 Select * from student group by gender;
案例 统计一下各个性别分别有多少人 Select count(*),gender from student group by gender; 案例2.统计各个性别的平均分 Select avg(grade),gender from student group by gender;
案例1 统计各个性别的平均分, 查询出平均分小于80 的分组。 Select avg(grade)gender from student group by gender having avg(grade)<80; 案例2.统计性别为n 所有人的平均分。 Select avg(grade),gender from student where gender=’n’; Select avg(grade)gender from student group by gender having gender=’n’; 4.3.4使用LIMIT 限制查询结果的数量语法 案例1 查询表中前四条记录 Select * from student limit 4 案例2 查询表中grade 字段值从第5位到第8位的学生信息。要求成绩从高到低; Select * from student order by grade desc limit 4,4 4.3.5函数
? ? 案例1 查询表中所有记录, 将各个字段用下划线连接起来 Select concat(id,’_’,name,’_’,grade,’_’,gender) from student; 案例、查询表中ID和gender 字段值,如果gender字段为n,返回1,不为n 返回0 Select id,if(gender=’n’,1,0) from student; 4.4.1为表起别名案例为student 表起别名为S ,并查询性别为女的记录 Select * from student as s where s.gender=’v’; 4.4.2为字段起别名案例 给name 和gender字段起别名 分别为stu_name,stu_gender Select name as stu_name,gender stu_gender from student; 多表操作?5.1.1什么是外键指引用另一个表中的一列或者多列,被引用的列应该具有主键约束或者唯一性约束外键用来建立和加强两个表数据之间得连接 Create database ch05; Use ch05; Create table grade( Id int(4) not null primary key, Name varchar(36) )engine=innodb; Create table student( Sid int(4) not null primary key, Sname varchar(36), Gid int(4) not null )engine=innodb; 5.1.2为表添加外键约束语法 案例为所建两张表添加外键约束 Alter table student add constraint FK_ID foreign key (gid) references grade(id); ? 5.1.3删除外键约束语法 Alter table 表名 drop foreign key 外键名; Alter table student drop forign key FK_ID; 5.2操作关联表5.2.2添加数据案例。 把张三的信息添加到STUDENT; 先插入主表grade 中的数据 Insert into grade (id,name) values(1,’yiban’); Insert into grade (id,name) values(2,’erban’); 再然后往从表里面添加记录 STUDENT Insert into student(sid,sname,gid) values(1,’wanghong’,1); Insert into student(sid,sname,gid) values(2,’liqiang’,1); Insert into student(sid,sname,gid) values(3,’zhaosi’,2); Insert into student(sid,sname,gid) values(4,’zhangsan’,2); 案例在grade 表中查询出班级名称为yiban 的id Select id from grade where name=’yiban’; 案例在student 表中,查询GID=1的学生,即为yiban的学生 Select sname from student where gid=1; 5.2.3删除数据案例。如何删除yiban的记录 1 .将yiban的所有学生全部删除; Delete from student where gid=1;
Delect from grade where id=1; 5.3连接查询5.3.1交叉连接语法 Select * from depa,emp; 返回的结果是被连接的两个表中所有行的笛卡儿积。 Select * from 表1 cross join 表2; 部门表 Create table depa( Did int(4) not null primary key, Dname varchar(36) ); 员工表 Create table emp( Id int(4) not null primary key, Name varchar(36), Age int(2), Did int(4) not null ); 为两个表分别插入数据 Insert into depa(did,dname) values(1,'wangluobu'); Insert into depa(did,dname) values(2,'meitibu'); Insert into depa(did,dname) values(3,'yanfabu'); Insert into depa(did,dname) values(4,'renshibu'); insert into emp(id,name,age,did) values(1,'wanghong',20,1); insert into emp(id,name,age,did) values(2,'liqiang',22,1); insert into emp(id,name,age,did) values(3,'zhaosi',20,2); insert into emp(id,name,age,did) values(4,'zhansan',18,4); 案例 使用交叉连接查询部门表和员工表中的所有记录。 Select * from depa,emp; Select * from depa cross join emp; 5.3.2内链接语法 又称为简单连接或者自然连接。, Select depa.dname,emp.name from depa join emp on depa.did=emp.did Select dname,name from depa,emp where depa.did=emp.did 案例 查询wanghong所在的部门都有哪些员工 Select p1.* from emp p1 join emp p2 on p1.did=p2.did where p2.name=’wanghong’; 5.3.3外连接包含左连接和右连接。 左连接 返回包含左表中的所有记录和右表中符合连接条件的记录 右连接 返回包含右表中的所有记录和左表中符合连接条件的记录
案例 Select * from depa left join emp on depa.did=emp.did;
Select * from depa right join emp on depa.did=emp.did; 5.3.4符合条件连接查询符合条件的连接查询就是在连接查询的过程中,通过添加过滤条件来限制查询结果,使查询结果更加精确 案例!把depa 和 emp 内连接,并将查询结果按照年龄从大到小排序。 Select name,age,dname,did from depa join emp on depa.did=emp.did order by age desc; 最后?如果对您有帮助,希望能给个👍评论收藏三连! 博主为人老实,无偿解答问题哦? 下篇会出MySQL的高级操作哦,有兴趣的小伙伴请继续关注小编~
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 1:31:10- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |