MySQL数据库 dos 命令窗口命令集

一、DDL:数据库定义语言

  数据库的操作:(操作关键字不分大小写)
    create database day01;//创建数据库
    show databases;//查看该帐号下的所有数据库
    show create database day01;//查看创建的指定数据库的信息,默认字符集编码是utf-8;
    SHOW CHARACTER SET;//查看mysql支持的所有字符集
    alter database day01 character set gbk;//修改数据库的字符集编码为gbk
    create database day001 character set gb2312;//直接创建一个字符集编码为gb2312的数据库
    drop database day001;//删除数据库

  创建表的前提条件:指明使用的数据库 :use day01; 

    create table student (id int,name varchar(100),gender varchar(100),age int...);//创建表

    show tables;//查看数据库下的所有表
    desc student;//查看指定的表的字段信息(表的内容)
    alter table student add score int;//修改表(添加一个列)
    alter table student drop score;//删除表的一个列(删除的是已知的列所以不需要类型)
    alter table student modify age text;//修改表的某一个列的类型
    alter table stu change age ag int;//修改列的名称
    rename table student to stu;//修改表名
    show create table stu;//查看创建表的语句
    drop table stu;//删除表

二、DML:数据库表的操作语言
  插入:insert
    --单条插入
      方式一:insert into student (id,name,gender,age) values (1,'ff','female',20);

      方式二: insert into student values (2,'gg','male',22); 所有字段值必须按照数据库中表的字段顺序依次写入 ,其中表的字段名可以全部省略

  修改:update
    update stu set name='mmm' ,age=18 where id=1 ;
    update stu set name='mmm' ;

  删除:delete
    -- delete删除的是表中的具体数据
    -- 单条删除某条记录(删除一整行的内容)
      DELETE FROM stu WHERE id=1;


    -- 多条删除(删除所有数据)
      DELETE FROM stu;


    -- 选择器删除(连接符是or)
      DELETE FROM stu WHERE id=9 OR id=10;

 

    -- 删除整个表以及表中的数据,重新创建了一个新的表
      TRUNCATE TABLE stu;

 

三、DQL:数据库表的查询语言

  student表

 

emp表

  1.基础查询:1.1查询所有列: 1.2查询指定列:

-- 查询所有数据
SELECT * FROM  student;
-- 查询指定列的数据
SELECT age FROM stu;

 

  2.条件查询:

    2.1 条件查询介绍 条件查询就是在查询时给出WHERE子句,在WHERE子句中可以使用如下运算符及关键字: =、!=、<>、<、<=、>、>=; BETWEEN…AND; IN(set); IS NULL; IS NOT NULL AND; OR; NOT

-- 查询年龄不是20的学生 :!=和<>都表示不等于
SELECT * FROM  student WHERE sage!=20;
SELECT * FROM  student WHERE sage<>20;
-- 查询年龄大于26的学生
SELECT * FROM student WHERE sage >26;
-- 查询年龄22到26之间的学生(BETWEEN 22 AND 26:包含22和26岁的人)
SELECT * FROM student WHERE sage BETWEEN 22 AND 26 ;
SELECT * FROM student WHERE sage>=22 AND sage<=26 ;

-- 在给定的表中查找指定集合中有的记录
SELECT * FROM student WHERE sname IN ('qq','rr','ww');

-- 查询名称为null的学生
  SELECT * FROM student WHERE  sname IS NULL;
-- 查询名称不为null的学生
  SELECT * FROM student WHERE  sname IS NOT NULL;

-- 查询sid=S_1005且名字为田七的学生(and:一般情况下连接不同字段的信息)
 SELECT * FROM student WHERE  sid='S_1005' AND sname='田七';
-- 查询sid=S_1005或者sage=20的学生
 SELECT * FROM student WHERE  sid='S_1005' OR sage=20;
--  查询名称不是张三的学生
 SELECT * FROM student WHERE  NOT sname='张三';

 

  3.模糊查询:当想查询姓名中包含f字母的学生时就需要使用模糊查询了.模糊查询需要使用关键字LIKE。 通配符: _ 任意一个字符 %:任意0~n个字符

-- 1.以w开头的名称的学生
SELECT * FROM student WHERE sname LIKE  'w%'; 
-- 1.1以w开头的名称长度为2的学生
SELECT * FROM student WHERE sname LIKE  'w_';
-- 2.以w结尾的名称的学生
SELECT * FROM student WHERE sname LIKE  '%w'; 
-- 2.1以w结尾的名称长度为5的学生
SELECT * FROM student WHERE sname LIKE  '____w';
-- 3.含有w的名称的学生
SELECT * FROM student WHERE sname LIKE  '%w%'; 

 

  4.排序 order by 列名 asc(默认) desc

 

-- 排序order by:默认增序,递增asc,递减desc 
SELECT * FROM student ORDER BY sage DESC;
 
SELECT * FROM student ORDER BY sage ASC;

 

  5.字段控制查询

    5.1 去除重复记录 DISTINCT

SELECT DISTINCT * FROM emp WHERE mgr=7698;
SELECT DISTINCT mgr FROM emp WHERE mgr=7698;

 

    5.2 a.数值类型和非数值类型无法做加法运算 b.数值类型和空数值做加法运算:把NULL转换成数值0的函数IFNULL,例如IFNULL(列名,0) c.给列名添加别名

查看雇员的月薪与佣金之和。
SELECT sal+IFNULL(comm,0) FROM emp ;
给上面的结果新生成的列起个别名。
SELECT sal+IFNULL(comm,0)  AS a FROM emp ;

 

  6.聚合函数 sum avg max min count 聚合函数是用来做纵向运算的函数:

    COUNT():统计指定列不为NULL的记录行数;

    MAX():计算指定列的最大值;

    MIN():计算指定列的最小值; max和min指定的列是字符串类型,使用字符串排序运算;

    SUM():计算指定列的数值和(非数值计算结果为0);

    AVG():计算指定列的平均值(非数值计算结果为0);

查询emp表中记录数:
SELECT  COUNT(*) FROM emp;
查询emp表中有奖金的人数:
SELECT  COUNT(comm) FROM emp;
查询emp表中月薪大于2500的人数:
SELECT  COUNT(*) FROM emp WHERE sal>2500;
统计月薪与奖金之和大于2500元的人数:
SELECT  COUNT(*) FROM emp WHERE sal+IFNULL(comm,0)>2500;
查询有奖金的人数,有领导的人数:count统计数量(非null)
SELECT COUNT(comm),COUNT(mgr) FROM emp;
SELECT COUNT(comm),COUNT(mgr) FROM emp WHERE comm IS NOT NULL OR mgr IS NOT NULL;
查询所有雇员月薪和:
SELECT SUM(sal) FROM emp;
查询所有雇员月薪和,以及所有雇员奖金和:
SELECT SUM(sal),SUM(comm) FROM emp;
查询所有雇员月薪+佣金和:
SELECT SUM(sal+IFNULL(comm,0)) FROM emp;
统计所有员工平均工资:
SELECT AVG(sal+IFNULL(comm,0)) FROM emp;
查询最高工资和最低工资:
SELECT MAX(sal+IFNULL(comm,0)),MIN(sal+IFNULL(comm,0)) FROM emp;

 

  7.分组查询:

    7.1当需要分组查询时需要使用GROUP BY子句

    7.2  HAVING子句 注:having与where的区别: 1.having是在分组后对数据进行过滤.后面可以使用聚合函数 where是在分组前对数据进行过滤,不可以使用聚合函数

查询每个部门的部门编号和每个部门的工资和:
SELECT deptno,SUM(sal+IFNULL(comm,0))  部门总工资 FROM emp  GROUP BY deptno;
查询每个部门的部门编号   以及  每个部门的人数:
SELECT deptno, COUNT(*)FROM emp GROUP BY deptno;
查询每个部门的部门编号以及每个部门工资大于1500的  人数:
SELECT  deptno, COUNT(*) FROM emp WHERE (sal+IFNULL(comm,0))>1500 GROUP BY deptno;
查询部门工资总和大于9000的部门编号以及工资和:
SELECT deptno,SUM(sal+IFNULL(comm,0)) FROM emp GROUP BY deptno HAVING SUM(sal+IFNULL(comm,0))>9000; 

 

  8.LIMIT用来限定查询结果的起始行,以及总行数

 

查询5行记录,起始行从0开始
SELECT * FROM emp LIMIT 0,5;

 

 

查询总结:

  select * from 表名 where 行条件 group by 列名 having 条件 order by 列名 limit start,count
    ①执行顺序:from where 得到一个虚拟表1
    ②group by having :先分组再从组中取出符合having的条件 得到一个虚拟表2
    ③select:在所有条件完成后去查询
    ④order by
    ⑤limit

 

转载于:https://www.cnblogs.com/liujianliang/articles/6915273.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值