mysql学习

一张常用的图说明一下mysql,并且里面的顺序不能变或者错

mysql学习

 

 

 

mysql命令行登录 

mysql -uroot -p
 root

当然学习阶段我一般使用phpStudy方便快捷,后面又发现了DBeaver更加方便高效

关闭

mysqladmin -uroot shutdown

创建数据库

CREATE DATABASE 数据库名;

mysql学习

 

 

CRUD

INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES
                       ( value1, value2,...valueN );

DELETE FROM runoob_tbl WHERE runoob_id=3;

UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
UPDATE runoob_tbl SET runoob_title=‘学习 C++‘ WHERE runoob_id=3;

SELECT column_name,column_name
FROM table_name
[WHERE Clause]
  • 联表查询
  • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
  • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
  • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录

 

下面这种图带你理解一下联表查询

mysql学习

 

 

 

mysql学习

 

 

 这个表很形象的用!!颜色!!区分了联表的不同范围!!!

查询参加了考试的同学,(学号(student表)( result表),姓名(student表),科目的编号( result表),分数( result表))

student表

mysql学习

 

 

 result表

mysql学习

 

 

 下面看一段错误代码

select studentNo,studentName,subjectNo,studentResult
from student(左) inner join result(右)

 

因为有两个studentNO,那么这段语句mysql不知道到底差谁所以会报错

加别名(AS也可以不写),公共的用别名区分!注意!(where只能在inner join中使用,left join 和right join只能用on)

select s.studentNo,studentName,subjectNo,studentResult
from student AS s inner join result AS r  //这里也可以用left join 或者right join

where s.studentNo=r.studentNo
 

mysql学习

 

经过实验即可知下面的规律

mysql学习

 

 mysql学习

 

 

 

那联表查询简单点就是以那个表为基准就join 它,比如我 主要需要学生的信息就from student left join result(所以空的即没有参考考试的同学也会打印查询出来)

 以科目信息如科目分数为主就from student right join result(即不想要没有参加考试的同学)

不过左右联表都不会影响查询的列名,该查什么还是出来什么如学号(,姓名(),科目的编号),分数

不一样的是里面的个数不一样,也许以学生表为主的左查询会多出不少缺考的同学,哈哈

 

 ---------------------------------------------------------------------------------------------

      模糊查询

mysql学习

 

 

 ---------------------like-------------------

查询姓刘的同学 %代表任意个字符

select `stuNO` from `student` where studentName like ‘刘%‘

那么只有一个字得刘姓同学

select `stuNO` from `student` where studentName like ‘刘_‘

同理的比如中间有明字得就是‘%明%‘.

-----------------in-------------------------

查询1002,1003的学生

select `studentNo`,`stuentName` from student
where studentNo IN(1002,1003);

-----------------is null-----------

select `stuNO` from `student` 
where adress=‘‘ or adress is null

 

 

分页和排序

下面用一张图了解下mysql中的分页LIMIT 和排序ORDE RBY的运用

mysql学习

 

 升序ASC 降序DESC

看一个案例

mysql学习

 

 那么如何分页呢

比如每一页只显示五个数据

语法     :   limit 起始值位置,页面的大小

那么仔细对比下面两张图

 

mysql学习

 

 mysql学习

 

 所以第一个参数是起始值的位置。既然知道这个了那就可以变通成网页的翻页了

即我们把每一页设置为

limit 第几页*页面的大小,页面的大小

就实现页面的翻页,数据库也翻

下面几个代码可以了解一下思想

Connection conn = new DBConnection().getConn();
            String sql = "select * from furnitures limit ?,?;";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setObject(1, pageIndex);
            ps.setObject(2,pageSize);
 <a href ="AuthorListPageServlet?currPage=${pageBean.currentPage + 1 }">下一页</a>
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        int pageSize = 2;
        AuthorDao ad = new AuthorDao();
        //总记录数
        int record = ad.queryUserListCount();
        //接收页面传入的页码
        String strPage = request.getParameter("currPage");
        int currPage = 1;//默认第一页

--------------------------------------------------------------------------------------------

                    事务

简而言之就是同生送死,即将一组sql放在一个批次去执行

那么说到事务就要谈到ACID

原子性

整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性

你钱1000银行微信支付宝一起操作后,所有钱加起来还是1000

隔离性

针对多个用户同时操作,主要是排除其他事务对本次事务的影响

持久性

表示事务结束后的数据不随着外界原因导致数据丢失。如停电,硬盘损坏等

那么来看看mysql中的事务操作

1,打开关闭事务自动提交

mysql学习

 

 2开启事务,并一组的同生共死,Insert有一个不行就全部rollback

mysql学习

 

 那么整个过程就下

mysql学习

 

 mysql学习

 

 那么了解了事务了之后开始mysql的索引

--------------------------------------------

索引

想了解索引点击这里去大神的博客http://blog.codinglabs.org/articles/theory-of-mysql-index.html

而这里只介绍怎样用

mysql学习

 

 mysql学习

 

 如果想批量插入上百万条sql可以用python可参考这里https://www.jianshu.com/p/36b87cb3a05a

mysql学习

上一篇:在net core控制台程序中使用net core的日志组件Logging


下一篇:oracle下的用户创建和授权