加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_沈阳站长网 (https://www.024zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL1:基本语法

发布时间:2022-09-24 14:54:19 所属栏目:MySql教程 来源:
导读:  由于这里MySQL主要应对数据分析岗,所以只复习查询相关语句,有关锁、游标和函数等的相关内容暂不复习。

  1.基本介绍

  SQL:structured query language,结构化查询语言;数据的所有存储、检索、管
  由于这里MySQL主要应对数据分析岗,所以只复习查询相关语句,有关锁、游标和函数等的相关内容暂不复习。
 
  1.基本介绍
 
  SQL:structured query language,结构化查询语言;数据的所有存储、检索、管理和处理,实际是由数据库软件DNMS,即数据库管理系统完成的,MySQL也是一种数据库软件。DBMS分为两类:一种是基于共享文件系统的DBMS,包括microsoft access和filemaker等,适用于桌面用途,不适用于高端或更关键的应用。另一种是基于客户机-服务器的DBMS,如MYSQL,Oracle和Microsoft SQL server等,服务器部分是负责所有数据访问和处理的一个软件,一般运行在数据库服务器上,服务器软件为MySQL DBMS;客户机是与用户打交道的软件,客户机可以是MySQL提供的工具、脚本语言、程序开发语言等。
 
  常用客户机有:
 
  MySQL命令行实用程序:用于快速测试和执行脚本;命令输入在mysql>之后,命令用;或\g结束,quit或exit退出程序。MySQL administrator:图形交互客户机,简化mysql服务器的管理;MySQL query brower:图形交互客户机mysql语句,用来编写和执行MySQL命令;
 
  连接到MySQL,需要主机名(本地MySQL服务器为localhost)、端口(一般默认是3306,可修改)、合法的用户名和用户口令(密码)。
 
  2.关键字和正则表达式
  
  REGEXP关键字用来匹配文本的特殊的串。若匹配的文本在列值中出现,REGEXP会返回响应的行,但是LIKE不会返回相应的行,除非使用通配符。
  
  3.计算、汇总、分组数据
 
  计算字段并不实际存在于数据库表中,计算字段是运行时在SELECT语句中创建的。
 
  分组数据
 
  分组允许把数据分为多个逻辑组,以便能够对每个组进行聚集计算;
 
  (1).创建分组:分组是在SELECT语句的GROUP BY字句中建立的;
 
  SELECT A COUNT(*) AS B FROM c GROUP BY A;
 
  GROUP BY字句提示MySQL分组数据,然后是对每个组而不是整个结果集来进行聚集;
 
  注意:
 
  GROUP BY字句可以包含任意数目的列;若GROUP BY字句中嵌套了分组,数据将在最后规定的分组上进行汇总;GROUP BY字句列出的每个列都必须是检索列或有效表达式,不能使用别名;除聚集计算语句,SELECT语句中每个列都必须在GROUP BY字句中给出;分组中有NULL值,则NULL将作为一个分组返回,有多行NULL值则分为一组;GROUP BY字句必须出现在WHERE字句之后,ORDER BY字句之前。
 
  (2).过滤分组
 
  使用HAVING字句过滤分组,类似于WHERE;但WHERE过滤行,HAVING过滤分组;
 
  SELECT A,COUNT(*) AS B FROM c GROUP BY A HAVING COUNT(*) >= 2;
 
  SELECT A,COUNT(*) AS B FROM c WHERE d >= 10 GROUP BY A HAVING COUNT(*) >= 2;
 
  (3).选择分组
 
  case when可对已知数据按照另外一种方式进行分组分析,也可用一个SQL语句完成不同条件的分组。
 
  a.case函数
  CASE 列名
   WHEN '……' THEN '……'
   WHEN '……' THEN '……'             
   ……
  ELSE '其他' END
  b.case搜索函数
  CASE WHEN 列名='……'  THEN '……'
   WHEN 列名='……' THEN '……'
                    ……
  ELSE '其他' END
  #####
  SELECT mdate,
         team1,
         SUM(CASE WHEN teamid=team1 THEN 1 ELSE 0 END) AS score1,
         team2,
         SUM(CASE WHEN teamid=team2 THEN 1 ELSE 0 END) AS score2
  FROM game  JOIN goal ON matchid=id
    GROUP BY mdate,matchid,team1,team2
     ORDER BY mdate,matchid,team1,team2;
  (4).分组和排序
 
  GROUP BY与ORDER BY经常完成相同的工作,但是两者是非常不同的。
 
  GROUP BY:分组行,但输出可能不是分组的顺序;只可能使用选择列或是表达式列,必须使用每个选择列表达式;与聚集函数一起使用列,则必须使用;
 
  ORDER BY:排序产生的输出;任意列都可以使用;不一定需要使用;
 
  SELECT A,COUNT(*) AS B FROM c GROUP BY A HAVING COUNT(*) >= 2;
 
  SELECT A,COUNT(*) AS B FROM c GROUP BY A HAVING COUNT(*) >= 2 ORDER BY B;
 
  4.子查询和联结
 
  任何SQL都是查询,从单个数据库中检索数据的单条语句;SQL允许创建子查询,即嵌套在其他查询中的查询。
 
  规定要联结的所有表以及它们如何关联,即可创建联结。
 
  5.文本处理函数
 
  这里就放几个会见到的函数;
 
  6.插入更新删除数据
  
  (1)创建表
 
  (1)一个是使用具有交互式创建和管理表的工具;另一种是表可直接用MySQL语句操纵;
 
  CREATE TABLE语句创建表:加新表的名字,表列的名字和定义用逗号分隔;
 
  CREATE TABLE customers
  (
           id int NOT NULL AUTO_INCREMENT,
  name char(50) NOT NULL,
  address char(50) NULL,
  city char(50) NULL,
  state char(5) NULL,
  zip char(10) NULL,
  country char(50) NULL,
  contact char(50) NULL,
  email char(255) NULL,
  PRIMARY KEY (id)
  )ENGINE=InnoDB;
  表定义括在圆括号中,各列之间用逗号分隔。每列的定义以列名开始,后跟列的数据类型;表的主键可以在创建表时用PRAMARY KEY关键字指定;
 
  NULL值:没有值或缺值;允许NULL值的列也允许在插入行时不给出该列的值;不允许NULL值的列不接受该列没有值的行,含有关键字NOT NULL,会阻止插入没有值的列,返回错误插入失败;
 
  主键:主键值必须唯一,即主键使用单个列,值必须唯一,若使用多个列则这些列的组合值必须唯一;创建多个列组成的主键,用逗号分隔开列表给出各列名:PRIMARY KEY (id,name);
 
  AUTO_INCREMENT:使用的最简单的编号是下一个编号;即大于当前最大编号的编号,如10006,下一编号为10007;AUTO_INCREMENT告知MySQL,本列每当增加一行时自动增量,给该列赋予下一个可用的值。每个表只允许一个AUTO_INCREMENT列,而且必须被索引;
 
  默认值:DEFAULT关键字指定;mysql允许在插入行时没有给出值的情况下指定使用默认值;quanity int NOT NULL DEFAULT 1,默认值为1;
 
  引擎类型:MySQL有一个具体管理和处理数据的内部引擎,在使用CREATE TABLE语句时,该引擎具体创建表,而在使用SELECT语句或进行其他数据库处理时,该引擎在内部处理请求;MySQL具有多种引擎,引擎隐藏在MySQL服务器内,全都能执行命令;若省略ENGINE=语句,则使用默认引擎(一般是MyISAM);
 
  Innodb是一个可靠的事务处理引擎,不支持全文本搜索;MEMORY在功能上等同于MyISAM,但由于数据存储在内存中(不是磁盘),速度很快(适合于临时表)MyISAM是一个性能极高的引擎,支持全文本搜索,不支持事务处理;
 
  (2)更新表
 
  ALTER TABLE语句:更新表定义;但是表存储数据后后一般不更改;更改表结构需要给出要更改的表名和列表;
 
  ALTER TABLE customers ADD phone CHAR(20);
  ALTER TABLE customers DROP COLUMN phone;
  ALTER TABLE还可用来定义外键:
  ALTER TABLE items
  ADD CONSTRAINT fk_items_orders
  FOREIGN KEY (num) REFERENCES orders (num);
  (3)删除表
 
  删除表:DROP TABLE customers;
 
  (4)重命名表
 
  RENAME TABLE语句:重命名表;
 
  RENAME TABLE a_customers TO customers,a_vendors TO vendors;
 
  ALTER TABLE titles_test RENAME TO titles_2017;//重命名表名
 

(编辑:我爱制作网_沈阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!