您的位置:首页 > 数据库 > MySQL

mySql知识点总结

2018-03-12 20:47 375 查看

一,单表查询

1.MySql查询数据
  1)where语句包含条件
  2)limit来设定返回的记录数

  3)AND 或者 OR 指定一个或多个条件。
2.UPDATE 查询UPDATE 表名 set 列名 = 新值 WHERE 列名称 = 某值

3.DELETE 语句

DELETE FROM 表名称 WHERE 列名称 = 值
4.MySQL LIKE 子句
    1)SQL LIKE 子句中使用百分号 %字符来表示任意字符
   2)SELECT 列名 FROM 表名 WHERE 列名 LIKE "n%"
5.分组查询 GROUP BYSELECT 列名 from 表名 group by 列名6.ORDER BY 排序--默认升序排列
select * from 表名 where 列名 asc
--默认降序排列
select * from 表 order by 列 desc
--根据 “列1” 从大到小排列,如果相同则按列2从小到大排序
select * from 表 order by 列1 desc,列2 asc7.子查询SELECT * FROM 表1 WHERE 列1= (SELECT 列2 FROM 表2);子查询有两种分类方式: 按位置分类;和按结果分类
按位置分类: 子查询(select语句)在外部查询(select语句)中出现的位置
From子查询: 子查询跟在from之后
Where子查询: 子查询出现where条件中
Exists子查询: 子查询出现在exists里面
按结果分类: 根据子查询得到的数据进行分类(理论上讲任何一个查询得到的结果都可以理解为二维表)
标量子查询: 子查询得到的结果是一行一列
列子查询: 子查询得到的结果是一列多行
行子查询: 子查询得到的结果是多列一行(多行多列) (1,2,3出现的位置都是在where之后)
表子查询: 子查询得到的结果是多行多列(出现的位置是在from之后)
例子  : 标量子查询需求: 找到分类为科技的所有文章标题





列子查询找出语文和数学都及格人的名字。表是这样的:



行子查询行子查询: 返回的结果可以是多行多列(一行多列)需求:找出年龄最大且身高最高的人

方案一:

方案二:

表子查询表子查询: 子查询返回的结果是多行多列的二维表: 子查询返回的结果是当做二维表来使用需求:找出每个人最好的成绩



Exists子查询Exists: 是否存在的意思, exists子查询就是用来判断某些条件是否满足(跨表), exists是接在where之后: exists返回的结果只有0和1.需求:如果存在的话身高大于2米的人,列出表中所有数据



8.复制一张表到另一张表中去
   1)复制表结构及数据到新表create table 新表 select * from 旧表  2)只复制表结构到新表create table 新表
select * from 旧表 where 1=2   让WHERE条件不成立.

二、多表查询(连接查询)

1.交叉连接 cross join
  交叉连接分开列名时,使用CROSS JOIN关键字而不是逗号。
SELECT * FROM table1, table2
SELECT * FROM table1 CROSS JOIN table22.内连接 inner join
 INNER JOIN 与 JOIN 是相同的
SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name3.外连接 outer join

4.左外连接

左连接就是以左边的表(left join 左边的表)为主表,即使有些记录关联不上,主表的信息也能全部查询出来,也就是左边的表数据全部展示,右边表的数据复合条件的展示,不符合条件的以空值代替,适合那种需要求出维度(比如求出所有人员)的需求:select * from student s left join color c on
d7c3
s.stuname = c.stuname;等同于select * from student s left outer join color c on s.stuname = c.stuname;

5.右外连接

如果有需求要求在结果中展现所有的颜色信息,就可以用右连接:还有另一种写法,可以达到相同的外连接效果:比如左外连接等同于以下的语句:select * from student s ,color c where s.stuname = c.stuname(+);同样右连接是这样的:select * from student s ,color c where s.stuname(+) = c.stuname三、索引
1.mysql索引有哪些,常见(常用)的有哪些,以及各种索引的区别及操作  1)B+Tree索引和Hash索引.
Mysql各种索引区别:
            普通索引:最基本的索引,没有任何限制
            唯一索引:与"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。
            主键索引:它 是一种特殊的唯一索引,不允许有空值。 
            全文索引:仅可用于 MyISAM 表,针对较大的数据,生成全文索引很耗时好空间。
            组合索引:为了更多的提高mysql效率可建立组合索引,遵循”最左前缀“原则。创建复合索引时应该将最常用(频率)作限制条件的列放在最左边依 次递减。
      Mysql常见索引有:主键索引、唯一索引、普通索引、全文索引、组合索引            PRIMARY KEY(主键索引)  ALTER TABLE `table_name` ADD PRIMARY KEY ( `col` )             UNIQUE(唯一索引)     ALTER TABLE `table_name` ADD UNIQUE (`col`)            INDEX(普通索引)     ALTER TABLE `table_name` ADD INDEX index_name (`col`)            FULLTEXT(全文索引)      ALTER TABLE `table_name` ADD FULLTEXT ( `col` )
            组合索引   ALTER TABLE `table_name` ADD INDEX index_name (`col1`, `col2`, `col3` ) 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: