• mysql 开发基础系列1 表查询操作


      在安装完数据库后,不管是windows 还是linux平台,  mysql的sql命令都大同小异,相关命令都是相同的,每个命令结束后 都以  ;  结尾,

    注意在windows平台中表名是不区分大小写的,在linux中是区分的。 例如tl1 与TL1在linux中是区分的。 为了一致所有的数据库名,表名,列名都采用小写。为了方便简单使用了sqllog客户端工具学习。

      在安装完数据库后会出现的几个系统数据库:

      Mysql 库: 该数据库存储了系统的用户权限信息

      In_formation_schema库: 该数据库存储了一些数据库对象信息。比如用户表信息,列信息,权限信息,字符集信息,分区信息等。

      Test库: 系统自动创建的测试数据库,任何用户都可以使用。

      1. 切换数据库

    USE test;

      2. 查看该数据库下的表

    SHOW TABLES;

      3.删除数据库

    DROP DATABASE test1;

      4.创建表

      基本语法是CREATE TABLE  tableanme (column_name column_type CONSTRAINTS)

    CREATE TABLE emp
    (ename VARCHAR(10), 
    hiredate DATE,
    sal DECIMAL(10,2),
    deptno INT(2));

      5.删除表

    DROP TABLE emp;

      6.修改表

    --  修改表类型, 将emp表ename字段从varchar(10)改为varchar(20)
    ALTER TABLE emp MODIFY ename VARCHAR(20);
    -- 再查看表架构
    DESC emp;
    -- 增加表字段 ALTER TABLE emp ADD COLUMN age INT(20); -- 再查看表架构 DESC emp;
    -- 删除表字段 ALTER TABLE emp DROP COLUMN age; DESC emp;
    -- 字段改名 ALTER TABLE emp CHANGE deptno deptno1 INT(2); DESC emp;
    -- 修改字段的排列顺序,添加字段birth 放在ename下面 ALTER TABLE emp ADD birth DATE AFTER ename; DESC emp;
    -- 修改sal字段排序,放在最前面 ALTER TABLE emp MODIFY sal DECIMAL(10,2) FIRST; DESC emp;

      7.修改表名

    ALTER TABLE emp RENAME emp1;

      8. 插入数据

     INSERT INTO emp (ename,sal)VALUES('dony',1000);
    -- 插入多条
     INSERT INTO emp (ename,sal)
    VALUES('dony01',1000),('dony02',1000);

      9.更新 

    UPDATE emp SET sal=4000 WHERE ename='dony';   
    -- 更新两个表
    UPDATE emp,emp1 SET emp.sal=3000, emp1.sal=3000 WHERE 
    emp.ename=emp1.ename  

      10.删除数据

    DELETE FROM emp WHERE emp.ename='dony02';

      11. 查询

    -- 查询不重复记录 DISTINCT
    SELECT DISTINCT * FROM emp;
    -- 查询条件(比较运算符可以是=,>,<, >=,<=,!=)
    SELECT * FROM emp WHERE sal >=3000;
    -- 排序 ordery desc|asc
    SELECT * FROM emp  ORDER BY sal DESC;
    -- 查询前1条
    SELECT * FROM emp ORDER BY sal LIMIT 1;
    -- 查询前3条,从第2条开始
    SELECT * FROM emp ORDER BY sal LIMIT 1,3;

       12. 聚合

      常用的聚合函数sum(),count(*),max(),min()  group by分类聚合, having 聚合后的结果进行过滤, with rollup 分类聚合后的结果进行汇总

    -- 查询GROUP BY
    SELECT ename,COUNT(1) FROM emp GROUP BY  sal ;
    -- with rollup 
    SELECT ename,COUNT(1) FROM emp GROUP BY  sal WITH ROLLUP;
    -- 查询 HAVING
    SELECT ename,COUNT(1) FROM emp GROUP BY ename HAVING COUNT(1)>1;

      13.表连接

       内连接:两张表中相互匹配的记录,外连接选出不匹配的记录(外连接有分为左连接和右连接)

    -- 内联接
    SELECT * FROM dept,emp WHERE dept.`deptno`=emp.`deptno`;
    -- 左联接
    SELECT * FROM dept LEFT JOIN emp   ON  dept.`deptno`=emp.`deptno`;
    -- 右联接
    SELECT * FROM dept RIGHT JOIN emp   ON  dept.`deptno`=emp.`deptno`;

      14.子查询

      子查询的关键字主要包括in、not in、=、!=、exists、not exists

    --  in 子查询
       SELECT * FROM emp WHERE deptno IN(SELECT deptno FROM dept);
     -- 如果子查询记录数唯一,可以用=  
       SELECT * FROM emp WHERE deptno = (SELECT deptno FROM dept LIMIT 1);

      15. 记录联合

     union 和union all,   union 是将union all的结果集合并后在distinct

    SELECT deptno FROM emp
    UNION ALL
    SELECT deptno FROM dept;
    
    SELECT deptno FROM emp
    UNION
    SELECT deptno FROM dept;

     

     

     

  • 相关阅读:
    操作系统:DOS
    袁氏-人物:袁淑
    移植linux-2.6.32.2到qq2440
    qq2440启动linux后出现错误提示request_module: runaway loop modprobe binfmt-464c
    qq2440启动linux后插入u盘出现usb 1-1: device descriptor read/64, error -110,usb 1-1: device not accepting address 8, error -110
    ubuntu14.04 64bit安装teamviewer
    vi 的使用
    添加了环境变量,然而交叉编译器还是无法运行的解决方案
    linux下route命令使用实战
    ubuntu14.04纯命令行下连接有线网和无线网
  • 原文地址:https://www.cnblogs.com/MrHSR/p/9225377.html
Copyright © 2020-2023  润新知