Loading... 整理来源: [MySQL 有这一篇就够(呕心狂敲37k字,只为博君一点赞!!!)_老赖的小弟的博客-CSDN博客_mysql](https://blog.csdn.net/weixin_45851945/article/details/114287877?ops_request_misc=%7B%22request%5Fid%22%3A%22162777765216780265418326%22%2C%22scm%22%3A%2220140713.130102334..%22%7D&request_id=162777765216780265418326&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-114287877.first_rank_v2_pc_rank_v29&utm_term=mysql&spm=1018.2226.3001.4187) [MySQL数据库入门学习(多图预警+新手向~)_mathor的博客-CSDN博客_数据库学习入门](https://blog.csdn.net/qq_37236745/article/details/78694768?ops_request_misc=%7B%22request%5Fid%22%3A%22162778539716780269820959%22%2C%22scm%22%3A%2220140713.130102334..%22%7D&request_id=162778539716780269820959&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-78694768.first_rank_v2_pc_rank_v29&utm_term=mysql数据库入门学习&spm=1018.2226.3001.4187) # 数据库安装 ## 重启MySQL服务器 net start mysql ## 配置 使用自己配置好的mysql或php_study配置的mysql两种连接要登陆其中一个,必须关掉另一个mysql的相关服务 MySQL>数据库>数据表>数据 # 数据库操作 * 查询数据库:show databases; * 创建数据库:create database xx charset = (字符编码,例如utf8) **如果想要创建不重复的数据库方法:** ![这里写图片描述](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcxMjAyMTM1NDA5NzEw?x-oss-process=image/format,png) - 显示数据库信息:show create database XX(数据库名); - 更改数据库的字符编码:alter database XX character set utf8; - 删除数据库:drop database XX(数据库名); **如果想要创建不重复的数据库方法:**drop database if exists XX (数据库名字) - 选择数据库(进入):use XX(数据库名); # 数据表的操作 * ~~~ create table XX(表名)( 字段1名 数据类型, 字段2名 数据类型, ....... 字段n名 数据类型 ); ~~~ * ~~~ 数据类型 int 整型 tinyint 整型(0-256) decimal 浮点型(总位数,小数位数) 例如 decimal(3,1) char(X) 定长字符型 例如 char(10) varchar(X) 可变长度字符型 例如varchar(10) text 大段文本 binary 二进制(存储照片等) ~~~ * 查看所有表:show tables; * 显示创建表: show create table XX(表名); show create table XX(表名) \G; * 显示表结构: describe(或desc) XX(表名); * 删除表: drop table XX(表名); drop table XX,XX,XX......; # 数据表的约束 | 约束条件 | 说明 | | :-----------: | :--------------------------------: | | PRIMARY KEY | 主键约束用于唯一标识对应的记录 | | FOREIGN KEY | 外键约束 | | NOT NULL | 非空约束 | | UNIQUE | 唯一性约束 | | DEFAULT | 默认值约束,用于设置字段的默认值 | + 主键约束:primary key用于唯一的标识表中的每一行,被标识为主键的数据在表中是唯一的且其值不能为空。 + 非空约束:字段的值不能为空 ``` 字段名 数据类型 NOT NULL; ``` * 默认值约束:给数据表中的字段指定默认值,即当在表中插入一条新记录时若未给该字段赋值,那么,数据库系统会自动为这个字段插人默认值 字段名 数据类型 DEFAULT 默认值; * 唯一性约束:保证数据表中字段的唯一性,即表中字段的值不能重复出现 字段名 数据类型 UNIQUE; * 外键约束:常用于多张表之间的约束 <!--暂不学--> # 数据的基本操作 * 插入数据:insert into XX(表名) (字段1,字段2,字段3......) values (值1,值2,值3.......); **字段可以和数据库中的字段顺序不一致,但是值和插入字段的顺序必须一致** **插入字段是可以省略的,这时插入的值和数据表的字段顺序和个数必须一致** 同时插入多组数据:INSERT INTO 表名 [(字段名1,字段名2,...)]VALUES (值 1,值 2,…),(值 1,值 2,…),...; * 查询数据: * 选取所有数据:select * from XX(表名); * 选取某(些)字段:select 字段1,字段2,字段3......(或用"*"代替所有字段) from XX(表名); * 选取条件:select * from XX(表名)where 字段1 = 值1 and 字段2 = 值2 and ......; * 选取范围:select * from stu where score > 90 or score < 60; * 排序:select * from XX(表名) order by 字段x asc(desc降序);(默认就是升序) * 选取n个数据:select * from XX(表名) limit n; * 从查询结果中过滤重复数据:select distinct 字段 from XX(表名); | 关系运算符 | 说明 | | :----------: | :--------: | | = | 等于 | | <> | 不等于 | | != | 不等于 | | < | 小于 | | <= | 小于等于 | | > | 大于 | | >= | 大于等于 | * in关键字查询: IN关键字用于判断某个字段的值是否在指定集合中。如果字段的值恰好在指定的集合中,则将字段所在的记录将査询出来。eg: select * from student where sid in ('S_1002','S_1003'); * between and 查询: BETWEEN AND用于判断某个字段的值是否在指定的范围之内。如果字段的值在指定范围内,则将所在的记录将查询出来 。eg: select * from student where age between 15 and 18; * and 和 or查询:连接多个查询条件 * LIKE关键字查询: * 普通字符串查询:select * from student where sname like 'wang'; * 含有%通配的字符串:select * from student where sname like 'li%'/'%li'/'%li%'; * 含有_通配的字符串:下划线通配符只匹配单个字符,如果要匹配多个字符,需要连续使用多个下划线通配符 _ 例如,字符串“ab_”匹配以字符串“ab”开始长度为3的字符串,如abc、abp等等;字符串“a__d”匹配在字符“a”和“d”之间包含两个字符的字符串,如"abcd"、"atud"等等。 * group by 进行分组查询: * 与聚合函数一起使用 * 与having一起使用 eg:统计工资总和大于8000的部门 MySQL命令: select sum(salary),departmentnumber from employee group by departmentnumber having sum(salary)>8000; * 删除数据:delete from XX(表名) where 字段x = 值x; 删除全部数据:delete from XX; * 修改数据: update XX(表名) set 字段1 = 值1,字段2 = 值2 where 条件; update XX(表名) set 字段1 = 值1; * sum(); 求和 select sum(字段x) from XX(表名); avg(); 求平均值 select avg(字段x) from XX(表名); max(); 求最大值 select max(字段x) from XX(表名); min(); 求最小值 select min(字段x) from XX(表名); count(); 记录数 select count(字段x) from XX(表名); 在某字段条件下使用函数 select 函数名() from XX(表名) where 字段x = 值x; * 别名设置: * 为表取别名:SELECT * FROM 表名 [AS] 表的别名 WHERE .... ; * 为字段取别名:SELECT 字段名1 [AS] 别名1 , 字段名2 [AS] 别名2 , ... FROM 表名 WHERE ... ; # 表的关联 * 多对一:多对一(亦称为一对多)是数据表中最常见的一种关系。 * 多对多:多对多是数据表中常见的一种关系。 * 一对一:在开发过程中,一对一的关联关系在数据库中并不常见;因为以这种方式存储的信息通常会放在同一张表中。 ## 关联查询 eg:查询java班的所有学生:select * from student where classid=(select cid from class where cname='Java'); ## 关联删除 delete from student where classid=(select cid from class where cname='Java'); delete from class where cname='Java'; # 子查询 一个查询语句嵌套在另一个查询语句内部的查询;该查询语句可以嵌套在一个 SELECT、SELECT…INTO、INSERT…INTO等语句中 * ## 带比较运算符的子查询 eg:select * from class where cid=(select classid from student where sname='张三'); * ## 带EXISTS关键字的子查询 EXISTS关键字后面的参数可以是任意一个子查询, 它不产生任何数据只返回TRUE或FALSE,当返回值为TRUE时外层查询才会 执行 eg:select * from class where exists (select * from student where sname='王五'); * ## 带ANY关键字的子查询 表示满足其中任意一个条件就返回一个结果作为外层查询条件 eg: select * from class where cid > any (select classid from student); * ## 带ALL关键字的子查询 带ALL关键字的子査询返回的结果需同时满足所有内层査询条件 eg:select * from class where cid > all (select classid from student); # 顺序 查询语句的书写顺序和执行顺序 select ===> from ===> where ===> group by ===> having ===> order by ===> limit 查询语句的执行顺序 from ===> where ===> group by ===> having ===> select ===> order by ===> limi 最后修改:2022 年 01 月 17 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏