zoukankan      html  css  js  c++  java
  • MySql入门

    MySql是什么?

    MySql是最流行的关系型数据库管理系统,在WEB应用方面MySql是最好的RDBMS(关系型数据库管理系统)应用软件之一。

    什么是数据库?

    数据库就是存储数据的仓库,其本质是一个文件系统,数据按照待定的格式将数据储存起来,用户可以同过sql对数据库中的数据进行增加,删除,修改以及查询。

    1.什么是关系型数据库

    数据库中的记录是有行有列的数据库就是关系型数据库,与之相反的就是NoSql数据库了。

    数据库管理系统:指的就是一种操作和管理数据库的大型软件,用于建立,使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。

    用户通过数据库管理系统访问数据库中表内的数据。(记录)  

    MySQL安装

    个人推荐安装图解链接:https://www.cnblogs.com/whaben/articles/6687544.html

    什么是SQL?

    SQL(Structured Query Language,结构化查询语言)是用来操作关系数据库的语言。

    SQL分类:

    数据定义语言

    简称DDL(Data Definition Language)

    例如:create,alter,drop

    数据操作语言

    简称DML(Data Manipulation Language)

    例如:insert,delete,update

    数据控制语言

    简称DCL(Data Control Language)

    例如:grant,revoke 

    数据查询语言

    简称DQL(Data Query Language)

    例如:select,from,where

      

    SQL语句对表的操作

    1. 数据库

           语法:

            创建数据库: create 创建 database数据库

            删除数据库: drop 删除 EXISTS存在 IF如果

            DROP DATABASE IF EXISTS test;

                  切换数据库:USE test;

        

    语法:

    删除表  drop table [if exists] 表名;

           创建表  create table [if not exists] 表名 (

          字段1 数据类型 [字段属性|约束][索引][注释],

          字段n 数据类型 [字段属性|约束][索引][注释]

    )[表类型][表字符集][注释];         

    注意:

        1、如果数据库名,表名,字段名等与保留字冲突,用撇号括起来

        2、多个字段使用逗号隔开  

        3、单行注释:#

             多行注释:/*…*/

        4、设置为自动增长auto_increment

    查看表:

    show tables;

    查看表结构:

    desc 表名

    清空表数据,序列号从1开始:

     truncate table 表名;

    删除表:

    drop table 表名

    修改表

    alter table 表名 add 列名 类型(长度) 约束; --修改表添加列.

    alter table 表名 modify 列名 类型(长度) 约束; --修改表修改列的类型长度及约束.

    alter table 表名 change 旧列名 新列名 类型(长度) 约束;--修改表修改列名.

    alter table 表名 drop 列名; --修改表删除列.

    rename table 表名 to 新表名; --修改表名

    alter table 表名 character set 字符集; --修改表的字符集

    插入记录

    语法:insert into 表 (列名1,列名2,列名3..) values  (值1,值2,值3..);

    修改记录:

    语法:update 表名 set 字段名=值,字段名=值;

    删除记录:

    语法:delete from 表名 [where 条件];

    对表数据的查询

      1. 查询所有的商品

    select * from product;

          2.别名查询,使用的as关键字,as可以省略的.

    2.1表别名: select * from product as p;

    2.2列别名:select pname as pn from product;

    3.去掉重复值

    select distinct price from product;

    4.查询结果是表达式(运算查询):将所有商品的价格+10元进行显示.

    select pname,price+10 from product;

    条件查询

       Select *from product where price=50

    排序

       SQL语法关键字:ORDER BY   ASC(默认升序) DESC(降序)

    示例: select * from product order by price;  

    聚合函数

      常用的聚合函数

    sum():求某一列的和

    avg():求某一列的平均值

    max():求某一列的最大值

    min():求某一列的最小值

    count():求某一列的元素个数

    示例: select sum(price) from product;

    多表查询

    内连接: inner join

    示例:SELECT  *  FROM  A  INNER JOIN  B ON A.id = B.id

    左外连接:LEFT JOIN 或者 LEFT OUTER JOIN

    示例:SELECT  *  FROM  A  LEFT  JOIN  B ON A.id = B.id

    右外连接:RIGHT JOIN 或者 RIGHT OUTER JOIN

    示例:SELECT  *  FROM  A  RIGHT  JOIN  B ON A.id = B.id

    分页查询LIMIT

    示例:SELECT * FROM table LIMIT [offset,] rows

    子查询:  in 或者 not in

    示例:SELECT StudentName FROM Student where studentNo  in

       ( select studentNo from result r inner join subject s on r.subjectNo

      =s.subjectNo where studentResult<60 and subjectName ='java')

     子查询注意事项:子查询可以出现在SQL语句中任何表达式的位置,子查询可以出现在select子句,from 子句 group by 子句中

         查询原理

    第一、单表查询

    根据WHERE条件过滤表中的记录,形成中间表(这个中间表对用户是不可见的);然后根据SELECT的选择列选择相应的列进行返回最终结果。

    第二、两表连接查询

    对两表求积(笛卡尔积)并用ON条件和连接连接类型进行过滤形成中间表;然后根据WHERE条件过滤中间表的记录,并根据SELECT指定的列返回查询结果。

    第三、多表连接查询

    先对第一个和第二个表按照两表连接做查询,然后用查询结果和第三个表做连接查询,以此类推,直到所有的表都连接上为止,最终形成一个中间的结果表,然后根据WHERE条件过滤中间表的记录,并根据SELECT指定的列返回查询结果。

    理解SQL查询的过程是进行SQL优化的理论依据。

     

  • 相关阅读:
    ACM题目————最短路径问题
    ACM题目————已知前序和中序求后序
    ACM题目————数素数
    ACM题目————玩转二叉树
    ACM题目————二叉树的遍历
    ACM题目————士兵杀敌(四)
    ACM题目————士兵杀敌(三)
    ACM题目————星际之门(一)
    ACM第四站————最小生成树(克鲁斯卡尔算法)
    ACM第四站————最小生成树(普里姆算法)
  • 原文地址:https://www.cnblogs.com/luckyjiang/p/12182957.html
Copyright © 2011-2022 走看看