1.SQL的分类使用(*代表重点的程度)
    DDL ** (Data Definition Language)数据库定义语言
        用来定义数据库对象: 库 表 列 等
    DCL (Data Contorl Language)数据控制语言
        用来定义访问权限 和 安全级别
    DML ** (Data Manipulation Language)数据操作语言
        用来定义数据库记录(数据):增 删 改
    DQL *****(Data Query Language)数据查询语言
        用来查询记录(数据): 查询

SQL的语法:
    1.sql语句 以 英文 ; 号 作为一条语句的结束 所有符号必须都是英文
    2.sql大小写区分问题 (表名 列表)
        windows 不区分大小写
        unix/linux 区分大小写

1.1 DDL 用来定义数据库对象: 库 表 列
        关键字 create / alter / drop
    
        对数据库的操作:
            cmd ---> 进入数据库 mysql -u root -p -->输入密码 出现welcome...证明登录成功
        1.1.1 查询
            查看当前数据库服务器中 有几个库
            show databases;
            查看前面创建的数据库定义信息
            show create database 数据库名;
        1.1.2 创建
            create database 数据库名;
            create database 数据库名 character set utf8; 创建数据库 并设置字符集
        1.1.3 修改
            修改数据库编码集
            alter database 数据库名 character set gbk;
        1.1.4 删除
            drop database 数据库名;
        1.1.5 其他
            查看当前正在使用的数据库
            select database();
            切换数据库
            use 数据库名;
            查看当前库下所有的表
            show tables;
        对表的操作:
        1.1.6 创建
            create table 表名(
                字段名1 字段类型 约束条件,
                字段名2 字段类型 约束条件,
                字段名3 字段类型 约束条件,
                .....
                字段名N 字段类型 约束条件
            )
            字段名 -->表头
            字段类型 ---> 规定列可以存储的数据类型是什么
            约束条件 ---> 可省略不写

            MySQL中的常用数据类型:
                int 整型
                float 浮点型 double 浮点型
                float(5,2) 表示最多可5位 其中 必须有2位是小数
                        999.99
                decimal 用来存储工资 从MySQL 5.1之后才有
                char 固定长度的字符串类型 char(10) 'aaa       '占10位
                varchar 可变长度字符串类型 varchar(10) 'aaa' 占3位
                text 字符串类型 超长
                blob 字节类型
                date 日期类型 格式为 yyyy-MM-dd
                time 时间类型 格式为 HH:mm:ss
                timestamp 时间戳类型 yyyy-MM-dd HH:mm:ss 会自动赋值 会自动赋值当前时间
                datetime 时期类型yyyy-MM-dd HH:mm:ss
        1.1.7 修改
            alter 修改表的字符集
                alter table 表名 character set 字符集;
            change 修改列名 用来给字段重命名 不能修改字段的类型 和 约束
                alter table 表名 change 旧字段名 新的字段名 数据类型
            modify 修改列属性 只能修改类型和约束条件
                alter table 表名 modify 字段名 字段类型

修改表名
                alter table 原表名 rename 新表名
                rename table 原表名 to 新表名
        1.1.8 删除
            drop table 表名
        1.1.9 查看
            查看数据库中的表结构
            desc 表名;
            查看创建表的语句
            show create table 表名
            查看数据库中所有的表
            show tables;
        
        对字段的操作:
            新增字段
                alter table 表名 add 新增的字段名 字段类型
            删除字段
                alter table 表名 drop 字段名

1.2 DCL (Data Contorl Language)数据控制语言
        用来定义访问权限 和 安全级别
        主要包括 创建用户 / 给用户授权 / 对用户撤销授权 / 删除用户
        需要使用root 登录 才可以

1.2.1 创建用户
            create user 用户名@xxx identified by '密码';

xxx 表示创建的用户 使用ip地址
                可以设置为 localhost 代表本机
                       或者 % 代表允许所有ip地址登录
        1.2.2 给用户分配权限
            grant 权限1,权限2....权限n on 数据库.* to 用户名@xxx;
            如果想要将数据库所有操作权限全都授予用户
                all
            grant all on 数据库.* to 用户名@xxx;
        1.2.3 撤销授权
            revoke 权限1,权限2....权限n on 数据库名.* from 用户名@xxx;
        1.2.4 查看用户的权限
            show grants for 用户名@xxx;
        1.2.5 删除用户
            drop user 用户名@xxx;
            
    1.3 DML
        不要与 DDL 混淆 增删改对表中的数据进行操作
        insert 增加
        update 修改
        delete 删除//delect删除不了约束,就是auto——increament的默认的值
        注意:
            在mysql中 字符串类型 和 日期类型 都要使用引号 引起来 '' ""
            用来操作数据
        1.3.1 insert 增加 插入
            insert into 表名(列名1,列名2....列名n) values(值1,值2...值n)
        
            注意:
                1. 列名 可省略 但是在插入数据的时候和表结构完全一致
                2. 列名 和 值 的类型/个数/顺序 必须一致
                3. 如果插入 空值 请使用 null
                4. 日期类型 可以使用- , . 分割 或者不分割 "2018-3-12"
                5. 同时可以插入多条数据(值1,值2...值n),(值1,值2...值n),(值1,值2...值n)....
        1.3.2 update 修改
            update 表名 set 列名1=值1,列名2=值2.... where 列名=值
            
            注意:
                1.where子句 可省略
                    写 就是修改符合条件的那个
                    如果不写 就是修改当前表中的所有记录
        1.3.3 delete 删除
            delete from 表名 where 列名=值
            
            注意:
                1.where子句 可省略
                    写 就是删除符合条件的那个
                    如果不写 就是删除表中所有的记录
            
            删除表中所有记录
                delete from 表名
                    删除表中的数据 表结构还在 删除后 数据可找回
                truncate table 表名//truncate后面不能有条件能删除约束


                    删除是直接把表drop掉
                    然后创建一个同样的新表
                    删除后 数据不能找回 执行速度比delete快
    1.4 DQL 数据查询语言 非常重要
        select
            select 列名 from 表名 where --> group by --> having --> order by --> limit

where --> group by --> having --> order by --> limit 可不写
            数据库执行DQL语句 不会对数据进行改变
            而是让数据库发送结果集 返回给客户端
            查询返回的结果 是一张虚拟表

* 是查询所有列 实际开发中尽量少用
            只要获取想要的列就可以了

select 列名 /*要查询的结果 列*/
            from 表名 /*要查询的表名称 (多张表联合查询)*/
            where 行条件
            group by 对结果进行分组
            having 分组后的行条件
            order by 对结果的排序
            limit 从x开始,取N个 结果限定
        基础查询
            1.查询所有列 select * from 表名
            2.查询指定列 select 列名1,列名2... from 表名
        条件查询
            条件车讯 是在查询时 给出where 子句
            在where子句中 可以给出一些关键字来用作条件匹配
            将符合条件的数据查询出来
        
        符号
            > < != <> = >= <=
            between...and.. 两者之间 >= <= 包含边界

            in 在xxx范围内
            is null 是空的
            and 和
            or 或者
            not 非

SELECT * FROM stu WHERE age BETWEEN 20 AND 75;
            SELECT * FROM stu WHERE age >=20 AND age<=75;
            /*性别是女的 并且 年龄 小于30*/
            SELECT * FROM stu WHERE gender='female' AND age<30;
            /*查询 sid是 S_1002 或者 性别为男的*/
            SELECT * FROM stu WHERE sid='S_1002' OR gender='male';
            /*查询性别是null的记录*/
            SELECT * FROM stu WHERE gender IS NULL;
            /*查询性别 非男的*/
            SELECT * FROM stu WHERE gender !='male';
            SELECT * FROM stu WHERE gender <>'male';
            SELECT * FROM stu WHERE NOT gender ='male';
        /*模糊查询*/
            like
            通配符
                % 任意0-n个字母
                _ 任意一个字母

/*查询学生名字 有五个字母组成的记录 结尾是 i组成*/
            SELECT * FROM stu WHERE sname LIKE "____i";
            SELECT * FROM stu WHERE sname LIKE "__";
            /*查询名字 以w开头*/
            SELECT * FROM stu WHERE sname LIKE "w%";
            /*查询名字中 包含a的*/
            SELECT * FROM stu WHERE sname LIKE "%a%";
        /*字段控制查询*/
            1.去除重复记录
            distinct
            /*去除重复*/
            SELECT DISTINCT sname FROM stu;
            2.判断列的值是否是空
                IFNULL(列名,值) 用指定值 替换 null
            /*查看 员工 薪资 和 奖金的和*/
            SELECT *,sal+IFNULL(comm,0) AS total FROM emp;

3.AS 起别名
              可以给 列 / 表 起别名
              AS关键字可不写
              原名 as 别名
        /*排序 order by*/ 根据xx来进行排序 默认是升序的

asc 升序
            desc 降序
            /*根据学生年龄 升序 / 降序*/
            SELECT * FROM stu ORDER BY age DESC;
            /*获取员工信息 先按照工资升序 然后按照奖金 降序*/
            SELECT * FROM emp ORDER BY sal ASC,comm DESC;

升序和降序可在一起使用(先紧着第一个,相同看后一个)一般在日期中使用


        /*聚合函数*/
            sum avg max min count
            用来做纵向运算的函数
            count() 统计指定列 不为null 的行数
            max()/min() 最大最小值
            sum() 求和
            avg() 平均数

聚合函数 不能放在where子句里
            聚合函数 是针对结果集进行的

where条件并不是在查询出结果之后才运行的
            所以放在where语句中 会报错
        sql语句的执行过程
            from-->where-->group by-->having-->select-->order by-->limit

count()
            /*查询表中记录数*/
            SELECT COUNT(*) FROM emp;
            /*查询emp表中 有奖金的人数*/
            SELECT COUNT(comm) FROM emp;
            /*查询 月薪 与 奖金之和 大于>2500的人数*/
            SELECT COUNT(*) FROM emp WHERE sal + IFNULL(comm,0)>2500;
        /*分组查询*/
            group by 当需要分组查询的时候 就是用 group by 子句
            理解为 "根据(by)一定的规则进行分组(group)"
        /*having*/
            where 是先过滤 后分组
            having 先分组 再过滤
        
        having 和 where 的区别
            1.having 是在分组后 对数据进行过滤
              where 是在分组前 对数据进行过滤
            2.having后面可以使用聚合函数
              where后面不可以

where是对分组前 记录的条件 如果某行记录 没有满足where条件 将不会参与分组
              having是对分组后的数据进行筛选

/*查询 工资总和 大于9000 的部门编号 以及 工资和*/
            SELECT deptno,SUM(sal) FROM emp GROUP BY deptno HAVING SUM(sal)>9000;
            /*错误写法 查询 工资总和 大于9000 的部门编号 以及 工资和*/
            SELECT deptno,SUM(sal) FROM emp WHERE SUM(sal)>9000 GROUP BY deptno;
         /*limit*/ 用来限定查询结果的起始行 以及总行数
            从哪儿开始 取几个
            /*查询五行记录 从第几行开始 起始行是0 0代表第一行 */
            SELECT * FROM emp LIMIT 5,5;
  
        分页查询
            35条记录需要分页显示
            1.需要获取 总行数 count() = 35
            2.确定每一页要显示的数量 pageSize = 10
            3.确定一共分多少页
                page = count%pageSize==0?count/pageSize:count/pageSize + 1
            4.
              第一页 起始行 0 一共查询10
                select * from xx limit 0,10
              第二页 起始行 10~19
                select * from xx limit 10,10
              第三页 起始行 20~19
                select * from xx limit 20,10
               ...

每页的起始行 = (页码-1)*pageSize

=============条件语句运算符===============

==============条件语句运算符优先级====================


**************************
查询语句书写顺序:
    select -- from -- where -- group by -- having -- order by -- limit
查询语句执行顺序:
    from -- where -- group by -- having -- select -- order by -- limit

SQL的分类使用(增删改查)的更多相关文章

  1. MVC无限级分类02,增删改查

    继上一篇"MVC无限级分类01,分层架构,引入缓存,完成领域模型与视图模型的映射",本篇开始MVC无限级分类的增删改查部分,源码在github. 显示和查询 使用datagrid显 ...

  2. SQL语法之初级增删改查

    SQL语法之初级增删改查 1.增 1.1插入单行 INSERT INTO [表名](列名) VALUES(列值) 语法如下: INSERT INTO bsp_Nproductclass(guid,pi ...

  3. SQL学习之简单增删改查

    SQL最常用的语句,就是增删改查: 增删改查的对象,分别是库(文件夹),表(文件),表的内容(表的记录): 一.创建一个基本的表 #create table Student_Info (Name VA ...

  4. Python 模拟SQL对文件进行增删改查

    #!/usr/bin/env python # _*_ coding:UTF-8 _*_ # __auth__: Dalhhin # Python 3.5.2,Pycharm 2016.3.2 # 2 ...

  5. SQL简单语句(增删改查)

    简单的SQL语句增删改查操作 说明: 在mysql里面亲测结果正确    用到的表(学生表:studnets) 1.创建一个学生表,(学号,姓名,性别,家庭住址) mysql> create t ...

  6. VS连接SQL Server数据库,增删改查详细教程(C#代码)_转载

    工具: 1.Visual Studio (我使用的是vs2013) 2.SQL Server  (我使用的是sql server2008) 操作: 1.打开SQL Server,打开后会看到数据库的初 ...

  7. SQL server数据类型、增删改查

    数据类型: 整数型:bigint.int.smallint.mediumint.tinyint 小数类型:decimal.numeric 浮点型:real.float.double 位型:bit 字符 ...

  8. SqL语句基础之增删改查

    增查删改的SQL语句,如此的实用,下面我就来简单介绍一下它简单的用法. 1.什么是SQL? SQL是用于访问和处理数据库的标准的一种计算机语言. 2.SQL可以做什么?  (1)可以向数据库进行查询 ...

  9. SQL数据库中的增删改查总结1

    一.增:有2种方法 1.使用insert插入单行数据: 语法:insert [into]<表名> [列名] values <列值> 例:insert into Strdents ...

  10. mybatis反向生成sql,基本的增删改查

    用到的几个文件 MyBatisGeneratorProxy.java package com.timestech.wsgk.test.tools; import static org.mybatis. ...

随机推荐

  1. 你每天跑这么多自动化用例,能发现BUG吗?

    阿里QA导读:为什么要度量测试有效性?这么多的CASE,花了大量时间和资源去运行,真能发现bug吗?CI做到90%的行覆盖率了,能发现问题吗?测试用例越来越多,删一些,会不会就发现不了问题了?怎么找出 ...

  2. concurrent包分析之Executor框架

    文章目录 线程生命周期的开销:线程比较少的情况使用new Thread(task)无多大影响,但是如果涉及到线程比较多的情况,应用的性能就会受到影响,如果jdbc创建连接一样,new Thead创建线 ...

  3. 听起来很美,用起来很累!停车类APP软肋在哪

    据数据显示,全国现有汽车已达1亿7千万辆,停车位缺于6800万个.而在北京,汽车保有量和车位的配比大约是1:0.5,而国际上一般是1:1.2,结构严重失衡.正所谓哪里有需求,哪里就有市场.停车位的走俏 ...

  4. 推荐系统--隐语义模型LFM

    主要介绍 隐语义模型 LFM(latent factor model). 隐语义模型最早在文本挖掘领域被提出,用于找到文本的隐含语义,相关名词有 LSI.pLSA.LDA 等.在推荐领域,隐语义模型也 ...

  5. 小程序在ios10.2系统上兼容

    1.  定位元素在ios10.2系统上出现样式问题??? 没错,就是在测试在侧道ios10.2系统时发现了样式错误的问题,比如一个Swiper中,最后一个展示有问题. 这是啥原因❓❓❓❓❓❓ 大写的问 ...

  6. Grafana+Prometheus监控mysql性能

    #cmd /usr/local 今天讲一下如何监控服务器中的mysql数据库的性能 一.数据库操作 1.mysql启动 #service mysqld start #启动数据库 #service my ...

  7. .netCore下的jwt的梳理-->借鉴于“老张的哲学”

    之前在公司的项目中有用到jwt进行token验证,但是公司里用的框架已经集成好了jwt,所以对jwt的的了解不够清晰,感觉还是隔着一层.在看了“老张的哲学”的jwt部分后对jwt的认识才更加深刻了一些 ...

  8. vue项目npm run dev 报错Uncaught SyntaxError: Unexpected token <

    目前代码所处位置是micro分支,该分支是从dev分支直接拉下来进行npm run dev的,而dev分支是可以正常运行的,网上的诸多解释是babel转义时候报错,其实对比可见,两个分支不同的地方应该 ...

  9. 基于springcloud搭建项目-Feign篇(四)

    上一篇已经写过ribbon客户端负载均衡的用法了,这篇主要是介绍feign的用法,首先我们必须了解feign是什么?能干嘛?怎么用? 这里简单介绍一下,然后进行代码测试 1.概述 Feign是一个声明 ...

  10. Head First设计模式——生成器和责任链模式

    生成器 生成器模式:封装一个产品的构造过程,并允许按步骤构造. 现又一个度假计划指定,需要指定度假每一天的活动.旅馆.用餐.门票等等事情,但是每个客人的度假计划可能不太一样.例如天数.活动类型.用餐等 ...