• 数据库:

    • 概念:

      • 数据存储的仓库,用于存储和管理数据
    • 常见数据库产品:

      • Oracle:oracle公司 大型的关系型数据库 收费的

      • DB2:IBM公司 大型的关系型数据库 收费的

      • Mysql:mysql公司 中小型关系型数据库 免费的。后来被oracle收购,mysql6之后收费(社区版,旗舰版)

      • Sql Server:微软公司 中小型关系型数据库 收费的

      • Sqllite:安卓系统内置数据库 微型关系型数据库 免费的

      • NoSql系列数据库:not only sql 非关系型数据库

  • Mysql:数据库软件

    • 安装:
      见图解

    • 卸载:
      1.关闭mysql服务
      1.手动关闭:我的电脑–>右键–>管理
      2.cmd–>services.msc,打开服务面板
      3.cmd–>net stop mysql。(注意获取cmd管理员权限)
      2.卸载
      3.删除数据存储文件
      * 找到mysql的安装目录。中my.ini文件
      datadir目录,删除

    • 使用:

      • 登陆数据库:
        cmd–>mysql -uroot -p你自己的密码

      • 服务:系统后台进程

        • 启动服务: net start mysql
        • 停止服务: net stop mysql
          * 删除服务 sc delete mysql
    • 配置:
      修改mysql的密码步骤:

      1. 停止mysql服务 运行输入services.msc 停止mysql服务
        或者 cmd – net stop mysql
      2. 在cmd下 输入 mysqld --skip-grant-tables 启动服务器 光标不动 (不要关闭该窗口)
      3. 新打开cmd 输入mysql -u root -p 旧密码
        use mysql;
        update user set password=password(‘123456’) WHERE User=‘root’;
      4. 关闭两个cmd窗口 在任务管理器结束mysqld 进程
      5. 在服务管理页面 重启mysql 服务
  • SQL:结构化查询语言

    • 概念:通过sql语言可以操作所有的关系型数据库。每种数据库之间会存在差异,称为 “方言”

    • sql分类:
      DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;
      DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(增、删、改)
      DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
      DQL(Data Query Language):数据查询语言,用来查询记录(数据)。

    • DDL:操作数据库 和 表

      • 操作数据库:

        • 创建:create database 数据库名称;
        • 删除:drop database 数据库名称;
        • 修改:ALTER DATABASE mydb1 CHARACTER SET 要修改的字符集名称
        • 查询:show databases; – 查询所有数据库的名称
          show create database 数据库名称; – 查询创建数据库语句
      • 操作表:

        • 创建:

          • 列的数据类型:
            * int:整型 id int,
            * double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
            money double(5,2)
            char:固定长度字符串类型;
            name char(10) “张三”
            * varchar:可变长度字符串类型;
            name varchar(10) “张三”

              text:字符串类型;存大格式的文本 比如存个小说 一般不用blob:字节类型;存字节类型的数据  比如电影字节  图片字节 但是一般不会把字节数据存到数据库当中date:日期类型,格式为:yyyy-MM-dd;time:时间类型,格式为:hh:mm:ssdatetime:日期时间类型   yyyy-MM-dd hh:mm:ss* timestamp:时间戳类型    yyyy-MM-dd hh:mm:ss* 如果该类型的字段不给赋值,则默认当前时间
            
          • 语法:
            create table 表名(
            列名1 类型1,
            列名2 类型2,

            列名n 类型n

            );

            create table student(
            sname varchar(20),
            age int,
            gender varchar(6)
            );

        • 删除:drop table 表名;

        • 修改:

          1. 修改之添加列:给stu表添加classname列:
            ALTER TABLE stu ADD (classname varchar(100));
          2. 修改之修改列类型:修改stu表的gender列类型为CHAR(2):
            ALTER TABLE stu MODIFY gender CHAR(2);
          3. 修改之修改列名:修改stu表的gender列名为sex:
            ALTER TABLE stu change gender sex CHAR(2);
          4. 修改之删除列:删除stu表的classname列:
            ALTER TABLE stu DROP classname;
          5. 修改之修改表名称:修改stu表名称为student:
            ALTER TABLE stu RENAME TO student;
        • 查询:show tables; – 查询该数据库下所有表名称
          desc 表名; – 查询表结构

          • 注意:操作表之前,应该先选择一个数据库使用:use 数据库名称;
    • DML:操作表中的数据

      • 增:

        • 语法:

          • insert into 表名(列名1,列名2,…) values(值1,值2,…);

            • 注意:如果表的所有列都添加值,则列名可以省略

        insert into stu(sname,age) values(“lisi”,23);
        insert into stu(sname,age,sex) values(“zhangsan”,23,‘1’);
        insert into stu values(“ww”,23,‘2’);

      • 删:

        • 语法:

          • delete from 表名 [where 条件];
          • truncate table 表名;-- 删除所有记录
            • 先删除表,再创建表。

          delete from stu where sname = ‘lisi’

      • 改:

        • 语法:

          • update 表名 set 列名1 = 值1 , 列名2 = 值2… [where 条件]

          update stu set sex = “1” where sname = “lisi”;

          update
          customer
          set
          money = 500000
          where
          id = xxx;

    • DQL:查询

      • 语法:
        SELECT
        selection_list /要查询的列名称/
        FROM
        table_list /要查询的表名称/
        WHERE
        condition /行条件/
        GROUP BY
        grouping_columns /对结果分组/
        HAVING
        condition /分组后的行条件/
        ORDER BY
        sorting_columns /对结果分组/
        LIMIT
        offset_start, row_count /结果限定/

      • 条件查询:where 子句
        =、!=、<>(不等于)、<、<=、>、>=;
        BETWEEN…AND; 在什么范围之间
        IN(set);
        IS NULL;为空
        IS NOT NULL 不为空
        AND; 并且
        OR; 或者
        NOT;非



雇员表:emp
字段名称 字段类型 说明
empno int 员工编号
ename varchar(50) 员工姓名
job varchar(50) 员工工作
mgr int 领导编号
hiredate date 入职日期
sal decimal(7,2) 月薪
comm decimal(7,2) 奖金
deptno int 部分编号

CREATE TABLE emp(
empno INT,
ename VARCHAR(50),
job VARCHAR(50),
mgr INT,
hiredate DATE,
sal DECIMAL(7,2),
comm decimal(7,2),
deptno INT
) ;
INSERT INTO emp values(7369,‘SMITH’,‘CLERK’,7902,‘1980-12-17’,800,NULL,20);
INSERT INTO emp values(7499,‘ALLEN’,‘SALESMAN’,7698,‘1981-02-20’,1600,300,30);
INSERT INTO emp values(7521,‘WARD’,‘SALESMAN’,7698,‘1981-02-22’,1250,500,30);
INSERT INTO emp values(7566,‘JONES’,‘MANAGER’,7839,‘1981-04-02’,2975,NULL,20);
INSERT INTO emp values(7654,‘MARTIN’,‘SALESMAN’,7698,‘1981-09-28’,1250,1400,30);
INSERT INTO emp values(7698,‘BLAKE’,‘MANAGER’,7839,‘1981-05-01’,2850,NULL,30);
INSERT INTO emp values(7782,‘CLARK’,‘MANAGER’,7839,‘1981-06-09’,2450,NULL,10);
INSERT INTO emp values(7788,‘SCOTT’,‘ANALYST’,7566,‘1987-04-19’,3000,NULL,20);
INSERT INTO emp values(7839,‘KING’,‘PRESIDENT’,NULL,‘1981-11-17’,5000,NULL,10);
INSERT INTO emp values(7844,‘TURNER’,‘SALESMAN’,7698,‘1981-09-08’,1500,0,30);
INSERT INTO emp values(7876,‘ADAMS’,‘CLERK’,7788,‘1987-05-23’,1100,NULL,20);
INSERT INTO emp values(7900,‘JAMES’,‘CLERK’,7698,‘1981-12-03’,950,NULL,30);
INSERT INTO emp values(7902,‘FORD’,‘ANALYST’,7566,‘1981-12-03’,3000,NULL,20);
INSERT INTO emp values(7934,‘MILLER’,‘CLERK’,7782,‘1982-01-23’,1300,NULL,10);


 * 模糊查询:like* 通配符* _:匹配单个任意字符比如: 我要查询姓名是3个任意字符组成的select  * from student sname like='___';例如:我要查询第二个字符是m的select * from student where sanme like '_m%';* %:匹配多个任意字符例如:我要查询名字中包含m的 select * from student where sname like '%m%';例如我要查询名字是a开头的 select * from student where sname like 'a%';例如我要查询名字是b结尾的 select * from student wher like '%b';* 字段控制:* 修改字段的别名:AS (可以省略)* 给字段起别名:例如:   select sname as 姓名, sage 年龄 from student;*给运算字段起别名:例如: select sname as 姓名, (工资+奖金) as 总收入 from student;* 给表起别名:给每一张表起一个别名。简化书写

` 例如: select stu.sname, stu.sage from student as stu;
* 字段运算:
* null参与的运算,结果都为null
比如 工资 是100 奖金是null 我们让这两个字段运算 那结果就为null
* 一般会将null替换为0: ifnull(字段名称,如果是null的替换值) ifnull 是mysql的方言

         所有如果奖金字段为null 一般我们把奖金替换为0例如: select sname,(工资+ifnull(奖金,0)) as 总收入from student;* 去除重复记录   比如我查询工资是3000的 出现了多条工资为3000 的记录 那我只想展示一条3000的记录  所以可以用 distinct 去除重复记录* DISTINCT     例如: select distinct 工资  from student;排序: order by  默认升序排列  ASC 默认值                DESC 降序排列按工资从小到大排select * from student order by 工资 asc;按工资从大到小排select * from student order by 工资 desc 如果出现多条工资一样的 那我们可以指定第二排序条件 select * from student order by 工资 desc,奖金desc;* 聚合函数:* 聚合函数是用来做纵向运算的函数:COUNT():统计指定列不为NULL的记录行数; 统计个数的 比如我统计有多少个学生select count(sid) from student;  或者传个星 号    select count(*) from student;         一般不要传有null 值的字段MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;例如 查询工资最大值    select max(工资) as 最高工资 from student;MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;例如 查询 最少工资   select min(工资) as 最小工资 from student;SUM():计算指定列的数值和,如果指 定列类型不是数值类型,那么计算结果为0;例如 计算总工资  select sun(工资) as 总支出 from student;AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;例如:计算平均 工资 select avg(工资) as 平均工资 from student;* 分组查询:group by     一般配合聚合函数使用 查出的数据才有意义* 查询的字段:1.分组字段本身2.聚合函数比如我按部分编号分组  比如有三个部门 然后我求每个部门的平均工资  那展示出来的数据应该有三条例如: select 部门编号,AVG(工资) from student group by 部门编号;1.例如查询 每个部门的部门编号 已经每个部门工资大于1500的人数select 部门编号, count(*) from student where 工资>1500 group by 部门编号;注意这里的 where 是对分组前的条件限定 也就是说不满足条件的 不参与分组* where和having* where:在分组之前对条件进行限定。不满足条件,就不会参与分组* having:在分组之后,对结果集的筛选2.例如 我要查询 各个部门平均工资 大于2000 的部门select 部门编号,avg(工资) from student group by 部门编号 having avg(工资)>2000;3. 例如我要查询 各个部门  员工工资大于1500 的平均工资  并且平均工资 大于2000的部门上面这句话怎么理解呢? 首先查询各个部门 那肯定要按部门编号分组 分组前的条件限定是 员工工资大于1500的才参与分组计算出平均工资  然后对结果再进行筛选 筛选出 平均工资 大于2000的部门select 部门编号,avg(工资) from student group by 部门编号 where avg(工资)>1500 having  avg(工资)>2000;* 分页查询:limit* limit 0,5 开始的记录索引, 每一页显示的条数     索引从0开始开始的记录索引  =     (页码-1)*每一页显示的条数例如 我显示第一页  每页5条记录select * from student limit 0,5 ;  这是第一页 5 条记录select * from student limit 5,5 ; 这是第二页 5条记录select * from student limit 10,5 这是第三页 5条记录* oracle:rownum 分页方言* sqlserver:top 分页方言

数据库sql 四种语言DDL DML DCL DQL 基本语法相关推荐

  1. SQL四种语言:DDL,DML,DCL,TCL

    1.DDL(Data Definition Language)数据库定义语言statements are used to define the database structure or schema ...

  2. 【数据库1】mysql,DDL/DML,DQL,外键约束,多表/子查询,事务,登陆,连接池,jdbc,redis,crontab,ftp,oracle,数据交换/存储/收集

    文章目录 1.mysql安装:存储:集合(内存:临时),IO流(硬盘:持久化) 1.1 服务端:双击mysql-installer-community-5.6.22.0.msi 1.2 客户端:命令行 ...

  3. 数据库必会必知 之 SQL四种语言:DDL DML DCL TCL

    今天群里面讨论,DDL 还是 DML,我这种小白还是总结下他们的区别吧. 1. DDL – Data Definition Language 数据库定义语言:定义数据库的结构. 其主要命令有CREAT ...

  4. 数据库,结构化查询语言的四种语言

    SQL四种语言:DDL,DML,DCL,TCL 1.DDL(Data Definition Language)数据库定义语言statements are used to define the data ...

  5. Python|SQL详解之DDL|DML|DQL|DCL|索引|视图、函数和过程|JSON类型|窗口函数|接入MySQL|清屏|正则表达式|executemany|语言基础50课:学习(14)

    文章目录 系列目录 原项目地址 第41课:SQL详解之DDL 建库建表 删除表和修改表 第42课:SQL详解之DML insert操作 delete 操作 update 操作 完整的数据 第43课:S ...

  6. consistent read一致性读,DDL DML DCL

    一致性读的概念consistent read mysql 的读操作是快照读,也就是说,在读操作执行的时候是某一个时刻的数据内容,不管其他的事务在做什么,原始数据会依据undo log 进行重新组织.一 ...

  7. DDL, DML, DCL, 和TCL的含义

    DDL, DML, DCL, 和TCL是什么? 在一些公司中提交给测试团队的SQL脚本会划分为DDL.DML等,但这些概念到底是如何定义的呢?SQL(Structure Query Language) ...

  8. 数据库的定义、关系型数据库的四种约束。。

    今天离开C#开始进入数据库的学习,初步认识了一下:1,什么是数据库  2,数据库表的创建  3,关系型数据库的四种约束方法 1,什么是数据库: (1)定义:数据库是存储在计算机硬盘上,有组织,可以共享 ...

  9. Oracle数据库的四种启动方式

    Oracle数据库的四种启动方式 1.startup nomount 非安装启动:这种方式启动下可执行:重建控制文件.重建数据库 启动instance,即启动SGA和后台进程,这种启动只需要init. ...

  10. 数据库的四种隔离级别及对应解决的脏读、不可重复读、幻读问题

    数据库的四种隔离级别 数据库事务的隔离级别有4种,由低到高分别为Read uncommitted .Read committed .Repeatable read .Serializable .而且, ...

最新文章

  1. 汇编语言_实验九_根据材料编程
  2. asp.net中将Excel文件(.xls)绑定到DataGrid
  3. 本地配yum(没有网络)
  4. Caused by: java.lang.ClassNotFoundException: Didn't find class android.support.v4.view.ViewPager
  5. 学习Qt的资源-网站、论坛、博客等
  6. 什么是云服务举例说明_云服务是什么功能
  7. 郁金香汇编代码注入怎么写看雪_雷军1994年写的诗一样的代码,我把它运行起来了!...
  8. 有序链表转换二叉搜索树Python解法
  9. mac安装mysql记录,使用zsh
  10. Android 调整屏幕分辩率
  11. 从一个表复制到另一个表SQL
  12. 删除Terminating状态的Pod
  13. C++通过WIN32 API获取逻辑磁盘详细信息
  14. BS7799、ISO/IEC 17799、ISO/IEC 27001的联系与区别
  15. 量子力学的经典教材_我是亲民_新浪博客
  16. javaw java_java与javaw区别
  17. httpwatch professional 破解版v9.4.17
  18. 一个APP想法,如何做到从想法到上线的全过程操作
  19. android 佳博蓝牙打印机功能开发
  20. python逻辑回归识别猫(持续更新中)

热门文章

  1. python爬取斗鱼礼物数据_Python---20行代码爬取斗鱼平台房间数据(上)
  2. java ee 设计模式解析与应用_《Java EE 设计模式解析与应用》PDF 下载
  3. 全国计算机考试一级在线模拟考试系统,全国计算机等级考试模拟系统全国计算机等级考试一级模拟试题和答案.doc...
  4. 精读CSS权威指南第四版(3)
  5. Chrome历史版本安装包下载
  6. 网站短信验证码接口收费标准
  7. MNIST数据集下载与保存为图片格式
  8. android自定义pickerview,开源项目 好用的PickerView库了
  9. Adobe Reader PDF阅读器背景设置为护眼豆沙色
  10. mysql vs0215_0215 docker环境