python做网站开发,巩义关键词优化公司电话,北京市住房建设网站,企业信息网官网꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN … ꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好我是xiaoxie.希望你看完之后,有不足之处请多多谅解让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如需转载还请通知˶⍤⃝˶个人主页xiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 系列专栏:xiaoxie的MySql学习系列专栏——CSDN博客●ᴗσσணღ我的目标:团团等我( ◡̀_◡́ ҂) ( ⸝⸝⸝›ᴥ‹⸝⸝⸝ )欢迎各位→点赞 收藏⭐️ 留言关注互三必回! 一.数据库的操作
1.1 显示当前的数据库
show databases; 1.2创建数据库
create database Test;
可以使用显示当前的数据库的操作查看是否创建成功 1.3 使用数据库 use 数据库名;
这里需要特别提醒:当我们对这个数据库进行增删改查操作表的时候,我们需要先use 数据库名
1.4 删除数据库
语法: drop database 数据库名 可以使用显示当前的数据库的操作查看是否删除成功 同时这里博主提醒一下数据库删除以后内部看不到对应的数据库里边的表和数据全部被删除,可能目前我们操作的是自己的数据库,删库后影响不大,但我们工作之后, 删库操作就要小心谨慎了
二.常用数据类型
MySQL 的数据类型有大概可以分为整数类型、浮点数类型和定点数类型、日期和时间类型、字符串类型、二进制类型等.
2.1 整数类型
MySQL 主要提供的整数类型有 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT其属性字段可以添加 AUTO_INCREMENT 自增约束条件。
类型名称说明储存需求TINYINT很小的整数一个字节SMALLINT小的整数两个字节MEDIUMINT中等大小的整数三个字节INT普通大小的整数四个字节BIGINT大整数八个字节
2.2 浮点类型
MySQL 中使用浮点数和定点数来表示小数。
浮点类型有两种分别是单精度浮点数FLOAT和双精度浮点数DOUBLE定点类型只有一种就是 DECIMAL。
浮点类型和定点类型都可以用(M, D)来表示其中 M 称为精度表示总共的位数D 称为标度表示小数的位数。例如DECIMAL(3,1)可以为99.0 但不可以为100.0 因为它总的位数最大为3,而100.0为4.
浮点数类型的取值范围为 M1255和 D130且不能大于 M-2分别表示显示宽度和小数位数。M 和 D 在 FLOAT 和DOUBLE 中是可选的FLOAT 和 DOUBLE 类型将被保存为硬件所支持的最大精度。DECIMAL 的默认 D 值为 0、M 值为 10。
类型名称说明储存需求FLOAT(M, D)单精度M指定长度D指定 小数位数。会发生精度丢失4字节DOUBLE(M, D)双精度M指定长度D指定 小数位数。会发生精度丢失8字节DECIMAL(M, D)定点类型M指定长度D表示 小数点位数。精确数值 M2字节
2.3 日期和时间类型
MySQL 中有多处表示日期的数据类型YEAR、TIME、DATE、DTAETIME、TIMESTAMP。当只记录年信息的时候可以只使用 YEAR 类型。每一个类型都有合法的取值范围当指定确定不合法的值时系统将“零”值插入数据库中。 2.4字符串类型
字符串类型用来存储字符串数据还可以存储图片和声音的二进制数据。字符串可以区分或者不区分大小写的串比较还可以进行正则表达式的匹配查找。
MySQL 中的字符串类型有 CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT、ENUM、SET 等。下表中列出了 MySQL 中的字符串数据类型括号中的 M 表示可以为其指定长度。 2.5总结
总的来说我们常用的数据类型就几个:INT,FLOAT,DOUBLE,DECIMAL,VARCHAR,DATETIME. 至于其他的几个数据类型,具体问题具体分析.
三.表的操作
需要操作数据库中的表时需要先使用该数据库
use 数据库名;3.1 显示当前库的所有表
show tables; 3.2查看表结构
desc 表名; 3.3创建表
语法
create table 表名(
字段1(列名) 数据类型,
字段2(列名) 数据类型,
字段3(列名) 数据类型,
.... .....
);
示例:
create table student(id int,name varchar(20),gender varchar(2),age int);
结果:
显示是否成功创建表 显示当前表结构是否成功创建 3.4删除表
语法格式
drop table 表名
示例:
drop table student -- 删除学生表
结果:
显示是否成功删除表 四.CRUD(增删改查操作)
4.1 新增Create
语法
insert (into) 表名values(数据);
说明:
这里插入数据的数据类型,和顺序必须要和当前表的数据类型,顺序相同
1.单行数据
全列插入
案例:插入一条id为1name为张三性别为男年龄为18的学生信息到学生表
insert into student values(1,张三,男,18);
注意由于SQL是一门弱类型的语言所以,字符串可以使用双引号 或者单引号 修饰
结果: 指定列插入
语法:
insert into student(指定列) values(数据); 案例:插入一条id为2name为李四性别为男的学生信息到学生表
insert into student(id,name,gender) values(1,李四,男);
结果: 说明:可以看到没有指定插入列的那一行的值为null,同时指定列插入也同时需要, 插入数据的数据类型,和顺序必须要和当前表的数据类型,顺序相同.
2.多列插入
语法:
insert into 表名 values(数据),(数据);
案例: 插入一条id为3name为王五性别为女年龄为19和id为4name为赵六性别为男年龄为21的学生信息到学生表
insert into student values(3,王五,女,19),(4,赵六,男,21); 结果: 指定列多行插入和上述的一样这里博主就不过多的赘述了
4.2查询
在我们以后工作的场景中,查询才是所有操作中应用最多的操作,所以一定要尽量熟练掌握
1 全列查询
语法:
select * from 表名
案例:查询学生表的所有学生信息
select * from student;
结果: 说明:这里需要记住的是,虽然全列查询很方便也很简单,当这是在我们自己学习的数据库,数据量不会很多,在日后工作后,一张表的数据可能都有百万级别甚至更大查询的列越多意味着需要传输的数据量越大
2.指定列查询
这里为了后续的案例分析,我们先创建一张表,和一些数据
-- 创建考试成绩表
DROP TABLE IF EXISTS exam_result;
CREATE TABLE exam_result (id INT,name VARCHAR(20),chinese DECIMAL(3,1),math DECIMAL(3,1),english DECIMAL(3,1)
);
-- 插入测试数据
INSERT INTO exam_result (id,name, chinese, math, english) VALUES(1,唐三藏, 67, 98, 56),(2,孙悟空, 87.5, 78, 77),(3,猪悟能, 88, 98.5, 90),(4,曹孟德, 82, 84, 67),(5,刘玄德, 55.5, 85, 45),(6,孙权, 70, 73, 78.5),(7,宋公明, 75, 65, 30);
语法:
--单列查询
select 指定列 from 表名;
--多列查询
select 指定列,指定列,指定列 from 表名;
--可以加算术表达式
select 指定列,指定列指定列 from 表名
案例:
查询所以考生的名字和该考生的总分在考试信息表中;
select name,chinesemathenglish from exam_result;
结果: 说明:
这里的指定列并不需要按照表的列的顺序,以及如果要用算术表达,类型要为,整数型或者浮点型,同时类型还需要相同
3.别名
语法:
select 列名 as 别名 from 表名;
案例:
查询所以考生的名字和该考生的总分在考试信息表中;
select name,chinesemathenglish as total from exam_result; 结果: 4.去重
语法:
select distinct 列名 from 表名;
案例: 5. 排序ORDER BY
语法
-- ASC 为升序从小到大
-- DESC 为降序从大到小
-- 默认为 ASC
select 列名 from 表名 order by(asc|desc) (指定列);
案例:查询同学及总分由高到低
select name,chinesemathenglish as total from exam_result order by total desc;
结果: 可以对多个字段进行排序排序优先级随书写顺序
-- 查询同学各门成绩依次按 数学降序英语升序语文升序的方式显示
select name,math,chinese,english from exam_result order by math desc,
english,chinese; 结果: 说明:. NULL 数据排序视为比任何值都小升序出现在最上面降序出现在最下面
6.条件查询WHERE
比较运算符
运算符说明, , , 大于大于等于小于小于等于等于NULL 不安全例如 NULL NULL 的结果是 NULL等于NULL 安全例如 NULL NULL 的结果是 TRUE(1!, 不等于BETWEEN a0 AND a1范围匹配[a0, a1]如果 a0 value a1返回 TRUE(1)IN (option, ...)如果是 option 中的任意一个返回 TRUE(1)IS NULL是 NULLIS NOT NULL不是 NULLLIKE模糊匹配。% 表示任意多个包括 0 个任意字符_ 表示任意一个字 符AND多个条件必须都为 TRUE(1)结果才是 TRUE(1)OR任意一个条件为 TRUE(1), 结果为 TRUE(1)NOT条件为 TRUE(1)结果为 FALSE(0
说明:
1. 和 的区别为当数据为null时 null 任何数据(哪怕也是null) 结果都为null 如果是
null null 结果 就为 true(1);
2.. WHERE条件可以使用表达式但不能使用别名
3.AND的优先级高于OR在同时使用时需要使用小括号()包裹优先执行的部分
案例:
基本查询:
查询英语不及格的同学及英语成绩 ( 60 )
-- 查询英语不及格的同学及英语成绩 ( 60 )
select name,english from exam_result where english 60; -- 查询语文成绩好于英语成绩的同学 select name,english,chinese from exam_result where chinese english; -- 查询总分在 200 分以下的同学
select name,mathenglishchinese as total from exam_result where chinese englishmath 200; 这里要注意where 后边不可以跟别名 AND与OR
案例:
查询语文成绩大于80分且英语成绩大于80分的同学 select name,chinese,english from exam_result where chinese 80 and english 80; 查询语文成绩大于80分或英语成绩大于80分的同学
select name,chinese,english from exam_result where chinese 80 or english 80;
范围查询
1. BETWEEN ... AND ...
查询语文成绩在 [80, 90] 分的同学及语文成绩
select name,chinese from exam_result where chinese between 80 and 90; 2. IN
查询数学成绩是 58 或者 65 或者 98 或者 99 分的同学及数学成绩
select name,math from exam_result where math in(58,65,98,99); 模糊查询LIKE
% 匹配任意多个包括 0 个字符
select name from exam_result where name like孙%; _ 匹配严格的一个任意字符
select name from exam_result where name like孙_; 7. 分页查询LIMIT
语法:
-- 从 0 开始筛选 n 条结果
select 列名 from 表名 (where) (order by 列名) limit n;
----从 s 开始筛选 n 条结果
select 列名 from 表名 (where) (order by 列名) limit s,n;
----从 s 开始筛选 n 条结果(建议使用这个方法,更直观)
select 列名 from 表名 (where) (order by 列名) limit n offset s;
案例按 id 进行分页每页 3 条记录分别显示 第 1、2、3 页
-- 第 1 页
select * from exam_result order by id limit 3;
-- 第 2 页
select * from exam_result order by id limit 3 offset 3;-- 第 3 页如果结果不足 3 个不会有影响
select * from exam_result order by id limit 3 offset 6; 结果: 案例查询总分为前三的同学信息 select name,math chinese english as total from exam_resultorder by total desc limit 3; 4.3修改Update
语法:
update 表 set 字段1value1, 字段2value2... where 条件(order by )(limit)
案例:
将孙悟空同学的数学成绩变更为 80 分 update exam_result set math 80 where name 孙悟空; 将总成绩倒数前三的 3 位同学的语文成绩加上 5分
update exam_result set chinese chinese 5 order by mathchineseenglish limit 3;
修改前: 修改后: 4.4 删除Delete
语法:
delete from 表名 (where)(order by)(limit)
案例:
-- 准备测试表
create table text_delect(id int);
-- 插入数据
insert into text_delect values(1),(2),(3),(4);
-- 删除数据
delete from text_delect where id 1;以上就是博主关于Mysql基本操作总结的所以内容了,希望能够对你有所帮助.