首页 > 数据库 >MySQL-基础语法教程

MySQL-基础语法教程

时间:2024-05-07 13:33:39浏览次数:39  
标签:教程 name liancha2 语法 kemu score MySQL WHERE SELECT

基础解析: select 要几列 where要几行,用来对行进行过滤,加where,查出来的行变少 *代表所有的列         增删改查   UPDATE SET 更新 UPDATE scores SET score=300 WHERE NAME="王大" AND kemu="语文" 0           delete语法 DELETE FROM scores WHERE ID =11   #删除整张表里的数据 DELETE from ceshi #删除张三的这一行 DELETE from ceshi WHERE Name ="张三"   0   0       INsert into values插入 0   0   插入为空 INSERT INTO ceshi VALUES (9,"李二四","天津",62,NULL,"英语","男")   0         LIMIT1 取第一列数据 where 状态="单生" order by score DESC LIMIT1   0   LIMIT高级用法 从第几条开始,取几条 where 状态="单生" order by score DESC LIMIT2,,5 0       order by排序 ASC DESC (where和order by之间不需要AND) where 状态="单生" order by score(默认ASC升序) where 状态="单生" order by score DESC(降序) 0               多条件用AND连接 (AND是必须同时满足所有条件) 列名="语文" AND 列名=“19” 0     或者OR   (OR是必须同时任意满足条件) 列名="语文" OR 列名=“19” 0 0       Between and 19到29 列名 Between 19 and 29   0   0     不等于 <> SELECT*FROM ceshi where kemu <>"英语" 0       大于等于 SELECT * FROM studentliu WHERE Age >=25   0     模糊查询like% 列名 LIKE "张%" 0     包含like 列名 LIKE "%张%" 0     不包含not like 列名 not LIKE "%张%" 0     多条件in 列名 IN("1","2","3") 0     not in排除(以外) 列名 not in('1') 0       查重 distinca 列名 0     为空 列名 is NULL 0     非空 is not NULL 0       聚合函数 MAX(列名)最大值 SELECT kemu,MAX(score) FROM Scores1 where name = "张三"   0   MIN(列名) 最小值 SELECT kemu,MIN(score) FROM Scores1 where name = "张三"   0   SUM(列名)求和 SELECT name,SUM(score) FROM scores WHERE name ="王大"   0     AVG(列名)求平均 SELECT kemu,AVG(score) FROM scores WHERE kemu="语文" 0     Count统计行数 SELECT COUNT(*) FROM scores WHERE kemu="语文" AND score <60 括号内容没搞懂,好像并没有意义,不是别名,也不是新值,列名的话无意义()*   0     uinion结果拼接 首先,列名需要相同,如不同需要AS 别名一致, 其次,列的数据类型要相似或者一样 然后union  union all的区别是,union是两个数据去重以后的,all是不去重的 实例:

 

 

    full join全链接 SELECT * FROM liancha1 full JOIN liancha2 on liancha1.ID=liancha2.ID   0       左连接右链接   SELECT * FROM liancha1 right JOIN liancha2 on liancha1.ID=liancha2.ID SELECT * FROM liancha1 left JOIN liancha2 on liancha1.ID=liancha2.ID 0   inner join内连接 求张三的考试情况(两表联查) SELECT name,kemu,score FROM liancha1 INNER JOIN liancha2 on liancha1.ID=liancha2.ID WHERE name="张三" 0   两表求和+分组 SELECT name, SUM(score)from liancha1 INNER JOIN liancha2 on liancha1.ID = liancha2.ID GROUP BY name 0     两表+分组+Where+HAVing SELECT name, AVG (score)from liancha1 INNER JOIN liancha2 on liancha1.ID = liancha2.ID WHERE sex = "女" GROUP BY name HAVing AVG (score) >60 0     主键和外键 两表联查一定要知道主键和外键的区别 一个表中的某一列,指向另一个表中唯一一列(主键列)这种列就称之为外键 在左右连接的时候,就要注意是以哪个表为主   0     HAVing+Where SELECT NAME,AVG(score) FROM ceshi WHERE sex="女" GROUP BY name HAVing AVG(score)>60   0       两表联查 两表INNER join+统计行数count(*)+分组group by+OR/and发生错误 #统计考了语文和数学的女生人数 SELECT kemu,COUNT(*)总人数 FROM liancha1 A INNER JOIN liancha2 B ON A.SID=B.ID WHERE sex="女"AND (kemu="语文" OR kemu="数学") GROUP BY kemu 0       两表INNER join+最低MIN(*)+分组group by #求男生和女生的最低分 select sex,MIN(Score)最低分 FROM liancha1 A INNER JOIN liancha2 B ON A.SID=B.ID WHERE sex="男" OR sex="女" GROUP BY sex 0         列名冲突,需要以列表名.列名的形式指出来 SELECT liancha1.name,liancha2.name,score FROM liancha1 INNer JOIN liancha2 on liancha1.SID=liancha2.ID WHERE liancha1.name="张三"     0     列名不一样的链接 SELECT * FROM liancha1 INNer JOIN liancha2 on liancha1.SID=liancha2.ID     0       as 新名(别名) SELECT sex ,name,SUM(Score) as总分 FROM ceshi WHERE SEX ="女" GROUP BY Name   0 group by 分组 group by+聚合函数 考过1门以上的学生的信息 SELECT name,count()考试次数 from ceshi group by name HAVING COUNT()>2   0   每门课都大于60分的学生姓名 子查询 SELECT DISTINCT name from ceshi WHERE name not in (SELECT DISTINCT name FROM ceshi where score<60) 分组+聚合函数 SELECT name,score from ceshi GROUP BY name HAVING MIN(score)>60 0     三表联查 三表联查+MAX+分组 #查询每班分数最高的学生 SELECT banjiname,name,MAX(score)分数 FROM student-class a INNER JOIN class b ON a.banjiID = b.banjiID INNER JOIN students c ON a.studentID = c.studentID GROUP BY banjiname   0       三表联查+聚合函数+分组 #查询班级名称、和所有班中的女生的人数和平均分 SELECT banjiname,sex,count(*)人数,AVG(score)平均分 FROM student-class a INNER JOIN class b ON a.banjiID = b.banjiID INNER JOIN students c ON a.studentID = c.studentID WHERE sex="女" GROUP BY banjiname   0     普通三表联查 #查询得分在60分以上的学生,显示姓名、性别、班级名称、分数 SELECT name,sex,banjiname,score FROM student-class a INNER JOIN class b ON a.banjiID = b.banjiID INNER JOIN students c ON a.studentID = c.studentID c. WHERE score >60 0       group by (对非聚合函数)再排序 SELECT kemu,AVG(score) FROM ceshi WHERE sex="女" GROUP BY kemu   0 group by (再对聚合函数做操作) 求考了两个科目以上的学生姓名 SELECT name FROM ceshi GROUP BY Name HAVing Count(*)>2 0     group by (聚合函数)再排序 SELECT NAME,AVG(score) FROM ceshi GROUP BY name HAVing AVG(score)>70   0     group by 分组(再求最平均) SELECTNAME,AVG(score) FROM ceshi GROUP BY name   0   group by 分组(再求和) SELECTNAME,SUM(score) FROM ceshi GROUP BY name   0   group by 分组(再求最小/大值) SELECT kemu, NAME,MAX(score) FROM ceshi GROUP BY kemu SELECT kemu, NAME,MIN(score) FROM ceshi GROUP BY kemu 0     子查询   语文分数>语文分数平均分的学生信息 这是一个比较绕的题,我们需要先求出语文平均分数是多少 SELECT * FROM liancha2 WHERE kemu ="语文" AND score>(SELECT AVG(score)from liancha2 WHERE kemu="语文") 0     Not in 不包含子查询 SELECT NAME,score FROM ceshi WHERE name not in (SELECT name FROM ceshi WHERE score<60 ) 0   in like(%%)子查询包含 SELECT kemu,score FROM scores WHERE kemu ="语文" AND id in (SELECT id FROM zlcstudent WHERE address LIKE "%周口%")     子查询不包含not in like(%%) SELECT kemu,score FROM scores WHERE kemu ="语文" AND id not in (SELECT id FROM zlcstudent WHERE address LIKE "%周口%")   0   子查询=   SELECT * FROM scores WHERE score >5 AND id = (SELECT id FROM zlcstudent WHERE address = "周口")   0   子查询in   SELECT * FROM scores WHERE score >5 AND id in (SELECT id FROM zlcstudent WHERE address = "周口")   0     附加项: 本文这里简要介绍MySQL的事务和索引概念。   事务: 具有原子性,(原子为最小质量不可再被分割) 事务中的全部操作在数据库中是不可分割的,要么全部完成,要么全部不执行。是一个不可分割的工作单位。 比如,我们去银行转账,操作可以分为下面两个环节:  (1)从第一个账户划出款项。 (2)将款项存入第二个账户。  [3] 在这个过程中,两个环节是关联的。第一个账户划出款项必须保证正确的存入第二个账户,如果第二个环节没有完成,整个的过程都应该取消,否则就会发生丢失款项的问题。整个交易过程,可以看作是一个事务,成功则全部成功,失败则需要全部撤消,这样可以避免当操作的中间环节出现问题时,产生数据不一致的问题。 从底层逻辑来看,他是一个预操作,就是比如说你去执行3条sql。他虽然每一条都去执行了,但是他的执行,并没有真的落实。事务中只要有一项失败了,其他操作都不算数。 那么实际工作中,事务该怎么去使用呢? 我们需要在我们执行的众多SQL之前,加一个Begin Transaction。然后去写我们的SQL就行了。然后运行。 Begin Transaction(开始事务)(数据库高难度,最容易问的问题,切记多默写几遍,最好去尝试执行一下) Begin /bɪˈɡɪn/  Transaction /trænˈzækʃ(ə)n/     0   0 索引 增删改查以及稍复杂些的比如连接操作,基本都需要先锁定数据位置,再执行操作。而定位这个步骤,如果没有索引,是非常“耗时”的操作。 数据库的索引,本质上就像一个目录,可以帮我们快速去定位。提高我们执行SQL的速度。当然了,一般数据要是只有几千条,或者万把条,是看不出来啥区别的,如果数据一旦上了几十几百万条,那就效果出来了。 他的运作原理大概是这样的,假设我们这张表有个几万条数据,我们的数据正好在第10000条和第19999条,那么我们的SQl,会去把整个表去搜索一遍,然后最终返回这两条 那么我们如果去把C加入了索引,那么我们的SQl执行过程,第一步就会先直接定位到索引中的所有C。然后直接返回数据。 这样就能提高效率了。   0 我们也可以自己在navicat去自己建索引,选中表名右键,设计表,然后选择上方的索引。就可以了,索引一共分为4种 1.Normal普通索引,基本的索引,没有任何限制,用于加速查询,数据可以重复 2.组合索引,指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用 3.Full Text全文索引,用来查找文本中的关键字 4.Unique唯一索引,索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。 0 索引的英文叫index。如果我们在工作中看到这样的,带index的就是索引名称了 0   0        

标签:教程,name,liancha2,语法,kemu,score,MySQL,WHERE,SELECT
From: https://www.cnblogs.com/xiaodi888/p/18177046

相关文章

  • mysql索引使用基础
    1.创建&删除MySQL可以通过CREATE、ALTER、DDL三种方式创建一个索引。在MySQL中,使用CREATEINDEX语句可以创建索引。具体语法如下:CREATEINDEXindexNameONtableName(columnName(length)[ASC|DESC]);其中,indexName是索引的名称,tableName是要在其上创建索引的表名,column......
  • BeanShell使用场景和语法
    BeanShell有自己的语法,同时支持java语法;使用场景:1.数据库断言2.RAS加密、混合加密3.接口签名4.调用开发给的jar包、class文件、java文件5.csv数据驱动之后的断言6.跨线程组共享变量分类:1.前置处理器:BeanShell2.后置处理器:BeanShell3.定时器:BeanShell4.采......
  • Linux非root用户安装mysql(5.7)
    1、下载安装包···········2、安装MySQL解压:tarxzvfmysql-5.7.31-linux-glibc2.12-x86_64.tar.gzmvmysql-5.7.31-linux-glibc2.12-x86_64mysql配置my.cnf文件:cat>>my.cnf<<EOF[mysqld]basedir=/app/mysqldatadir=/app/mysql/dataport=3333s......
  • [shell] fishshell -- 教程
    [shell] fishshell -- 教程   一、fishshell 官网  1.https://fishshell.com/     二、fishshell  文档 1.https://fishshell.com/docs/current/index.html     三、fishshell 教程1.h......
  • Fiddler-常用功能使用教程
      1、Fidder下载地址:https://fiddler2.com/r/?GetFiddler4注意:Fidder安装后不会自动生成快捷方式,不要重复安装 2、Fidder安装证书,如果没有安装证书,抓包只有HTTP,没有HTTPS 3、重装证书方法:另一种方法 4、HTTP响应是乱码选中Decode后,这样就会自动解压HTTP响应,否......
  • mysql安装使用教程
    一、下载mysql安装包官网:https://dev.mysql.com/downloads/mysql/默认会跳转到最新版本的下载页面,也可以在旧版本集中选择需要安装的版本。MSIInstaller是安装程序,ZIPArchive是压缩包形式。安装程序会有图形界面引导安装,根据步骤进行选择即可。压缩包形式更方便快捷,解压后需......
  • openssh安装教程
    openssh安装教程安装opensshsudoyuminstallopenssh使用命令查看是否成功安装opensshps-auxf|grepssh如果出现ssh相关内容,则说明成功安装启动服务sudosystemctlstartsshd设置开机自启动服务sudosystemctlenablesshd查看服务器的ip地址,方便用来远程连接i......
  • MySQL夺命16问,你能坚持到第几问(转)
    原文:https://zhuanlan.zhihu.com/p/5344154091、数据库三大范式是什么?**第一范式:每个列都不可以再拆分。第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。在设计数据库结......
  • [转帖]【MySQL】字段名与关键字冲突解决办法
    https://www.jianshu.com/p/50e59feb3e83   首先,不推荐使用MySQL的关键词来作为字段名,但是有时候的确没有注意,或者因为之前就这么写了,没办法,那怎么办呢?方法1,改字段名,改了肯定就没问题了。这个就不细说了。方法2,使用引号`来处理。  下面就详细的说明一下怎样使用方法......
  • 在Windows下用navicat,连接虚拟机的MySQL
    在Windows下用navicat,连接虚拟机的MySQL目录(一)防火墙1.查看防火墙状态2.关闭防火墙(二)登录MySQL1.登录2.查看MySQL端口号(三)连接navicat1.点击连接2.新建连接3.连接成功(四)修改虚拟机MySQL端口号1.打开配置文件2.修改端口号3.重启MySQL下面是报错原因总结:(下次有再补......