每日背诵mysql高级语句

老规矩,首先写出本文用到的两个表格,第一个表格为学生信息student_info,第二个表格为学生家庭状况student_family

表1 student_info

表2 student_family

 

1.子查询

子查询有一个重要运用,就是通过子查询连接两个关系表

1. 查找数学86分和65分的同学的国家:select country from student_family in (select id from student_info where math=(86,65));     注:在WHERE子句中使用子查询(如这里所示),应该保证SELECT语句具有与WHERE子句中相同数目的列。通常,子查询将返回单个并且与单个列匹配,但如果需要也可以使用多个列。子查询通常用IN连接而不是where;

2.下面再来看一条select语句的子句,select name ,(xxx) from student_family;    注:这种查询方式,是对每一行再进行了一次select,在select里嵌套的select一般必须是聚合计算;

2.联接查询

1.内联接,又称为等值联接,是通过等值的方式将两个表链接在一起:select student_info.id,student_info.name,from student_info,student_family where student_info.id=student_family.id;    连接通常是做一个笛卡尔积,需要通过where进行过滤;

2.内连接还有另一种书写方式,这种方式是推荐的书写方式:select student_info.id,student_info.name,from student_info inner jion student_family onstudent_info.id=student_family.id;   通过inner jion 和on关键字来达到同样的目的;

3.自联结就是将一个表自己进行连接,假如我们想要知道和amy相同年龄的人所在的国家:select country from student_family AS s1,student_family AS s2 where s1.age=s2.age and s2.name='amy';  这条语句用到了两个知识点:自联结为了区分两个相同的表,使用了表别名(表别名仅用于区分表格,不作为返回字段),第二个知识点是自联结语句通常比子查询性能要高很多;

4.左外联接:左外链接是以左边的表格作为所有检索数据全部显示,右边表格只显示符合条件的,不符合的以null显示;举例:select student_info.name from student_info left join student_family on student_info.name=student_family.name;    左外联接采用on关键字和left join来达到查询;

注:什么是外连接?https://zhidao.baidu.com/question/338244729.html

3.组合查询

1.使用uion关键字,将两个查询语句的结果采用"或"的形式合成一个,默认去除重复行;

2.如果相对采用uion的多条语句结果进行排序,应该把order by放在最后一条查询语句结尾;

4.全文本搜索

1.全文本搜索通常在创建表格的时候添加,使用"FULLTEXT()"来建立对某个关键字的全文本搜索,数据库会在底层维护一个数据结构用来记录索引。

2.使用索引进行查询的方法:这里match函数表示使用索引进行搜索,against表示匹配的内容;

3.match()和against()函数也可以作为结果显示出来,输入如下语句:

结果如下,可以看出match函数返回的是匹配的内容,against()函数会返回一个值,这个值根据所包含的关键词的位置靠前程度,关键词的数量增大:

4.全文本查询的布尔操作,查找有heavy而没有以rope开头的所有词

再举几个例子:

5.插入数据

1.插入操作如下,要把每一个值都列出来,如果没有值或不想填,必须用NULL进行代替,主键也需要填null,这时数据库系统会自动采用自增的方式填补主键;

2.上述操作非常不安全,一般是禁止使用的,因为这种插入操作高度依赖用户插入顺序和表格顺序的一致,不具有可扩展性,比如表格列进行了修改,则语句失效,应采用烈名的方式进行插入,如下所示,下图中,忽略的主键id行,因为系统会自增:

3.如果插入时想要省略某列,必须符合以下条件:

4.使用insert 和select语句,从别的表格中插入,记得插入时主键不可重复:

 

6.更新和删除

1.更改语句非常简单,采用UPDATE 关键字表示更改某个表,使用set关键字和键值的方式来修改数据,最后以where条件结束。但是一定要谨慎,如果条件写错了,可能将整个数据库都改了:

2.更新数据时,假如更新某一条出错了,则数据回滚到插入语句之前的状态,而不是停留在当前状态;

3.删除语句:使用DELETE关键字和where:

7.创建新表

1.创建表格:有以下注意事项:每一列都必须指定null或者not null(默认为null);其次要指定主键,主键列不能为null;

2.关于自增,将主键设为自增通常是一个好选择,如果此时你要插入一个指定的特殊主键,下一个自增数会从这个插入的开始;

3.有时候自增之后不知道现在值是多少了,此使可以使用函数:

4.使用DEFAULT插入默认值:

    

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值