MySQL数据库-阶段性总结

重点:DDL(create alter drop)数据定义语言---通过语句创建表、添加修改约束等

         掌握4种约束 :主键、唯一键、非空、外键   

         查询语句:多表连接查询、联合查询、子查询

         事务:特性

         索引:作用、类别、存储结构(B树索引)---后续扩展

         视图及数据类型

         优化SQL语句

         5个聚合函数:max  min   avg  sum  count

 

  1. DDL  数据定义语言

   以 create alter drop开头的语句都称为DDL   

    2.查询:

       Select  列名1 as 别名 from 表名  +

                           Where 条件1 and /or 条件2  【等值判断(=);逻辑判断(and,or,not);不等值(<,>,<=,>=,!=);区间判断(between and);空与非空(is null,is not null);枚举(in(值1,值2 ,值3))】

                          Order by 条件1 ASC/DESC,条件2

                          Group by  分组条件1 ,分组条件2

                           Having 分组查询条件

    模糊查询: selecr * from goods where name like '%xxx%';

   分支结构查询: select username,gender,

                            case   role

                            WHEN 0 THEN '管理员'

                            WHEN 1 THEN '用户'

                            END AS 角色     from user

   时间查询:   sysdate()---当前系统时间

                        curdate()/curtime()--获取当前日期/时间

                         week(date)--获取指定日期为一年中的第几周

                         year(date)--获取指定日期的年份

                         hour(date)/minute(date)--获取指定时间的小时/分钟值

                         datediff(date1,date2)--获取相隔天数

                         assdate(date,n)--计算date加上n天之后的日期

  字符串查询:concat(str1,str2,str3.....)--将多个字符串拼接查询

                       insert(str,pos,len,newStr)---将str中指定pos位置开始len长度的内容替换为newStr

                       lower(str)/upper(str)---将指定字符串转为小写/大写

                       substring(str,num,len)---将str字符串指定num位置开始截取len个内容

  聚合函数:SUM(),AVG(),MAX(),MIN(),COUNT()

  限定查询(数据库分页):  select  列名 from  表名  limit ?,?;

SQL的编写 及 执行顺序:

 

MySQL数据库-阶段性总结_第1张图片

 

子查询:将子查询到的“一行一列“的结果,作为外部查询条件,进行第二次的查询条件

     select * from tb_grades where name>(select tb_grades where name='xxx') 

子查询分类:

  1. 简单子查询:>  >=  <  <=  =  !=  <>   子查询的结果必须是1行1列
  2. In/not in    select * from tb_goods where price in(1000,2000)
  3. Any   =any  相当于in

         >any  大于子查询结果的最小值

         

  1. all    >all   大于子查询结果的最大值

         

联合查询:  select * from 表名1 union select * from表名2   (去除重复记录)

                 select * from 表名1 union all select * from表名2   (保留重复记录)

    注:合并结果的两张表,列数须相同,列的数据类型可以不同

连接查询:查询结果来源于多张表

  1. 等值连接查询

MySQL数据库-阶段性总结_第2张图片

      2.内部连接 内连接

MySQL数据库-阶段性总结_第3张图片

【总结】以上两种查询效果相同,表的先后顺序不影响查询结果, 都是把两个表中都符合条件的数据进行关联显示

   3.左外连接查询

      MySQL数据库-阶段性总结_第4张图片

    4.右外连接查询   相当于左外连接查询的表顺序颠倒

外连接和内连接的区别是什么?使用场合是什么?

1、内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符)。包括相等联接和自然联接。
内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students和courses表中学生标识号相同的所有行。

2、外联接。外联接可以是左向外联接、右向外联接或完整外部联接。
在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:
1)LEFT JOIN或LEFT OUTER JOIN
左向外联接的结果集包括 LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
2)RIGHT JOIN 或 RIGHT OUTER JOIN
右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。
3)FULL JOIN 或 FULL OUTER JOIN
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

DML:insert   delete  update    truncate

约束

事务

原理:数据库回味每一个客户端都维护一个空间独立的缓存区(回滚段),一个事务中所有的增删改语句的执行结果都会缓存到回滚段中,只有当事务中所有sql语句均正常结束(commit),才会将回滚段中的数据同步到数据库,否则无论因为哪种原因失败,整个十五将回滚(rollback)

事务特性:

Atomicity(原子性)

   表示一个事务内的所有操作是一个整体,要么全部成功,要么全部失败

Consistency(一致性)

   表示一个事务内有一个操作失败时,所有的更改过的数据都必须回滚到修改前的状态

Isolation(隔离性)

  事务查看数据操作时  数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据

Durability(持久性)

  持久性十五完成之后,它对于系统的影响是永久性的

DCL:数据控制语言,创建用户及分配、撤销权限

   创建用户:create user  用户名  identified by 密码:

   授权: grant all on 数据库,表  to  用户名

   撤销:  revoke all  on  数据库,表名  from  用户名

   删除:  drop  user  用户名

你可能感兴趣的:(mysql,mysql,数据库,sql)