zoukankan      html  css  js  c++  java
  • 数据库的基本命令



    1.启动服务器

      net start mysql
    

    2.停止服务器:

      net stop mysql
    

    3.连接服务器:

      mysql  -uroot  -p123  
    

    4.断开服务器:

      exit   quit   q  
    

    5.创建数据库

       create database 数据库名;
    

    5.1 数据库的编码(字符集)设置

      create database 数据库名 character  set =utf-8
    

    6.使用数据库

      use 数据库名
    

    7.查看所有的数据库

      show databases;
    

    8.删除数据库

      drop database 数据库名;
    

    9.创建表

      Create table 表名(字段1  字段类型, 字段2  字段类型…)
    

    10.查看表结构

      Desc 表名;
      或者:show  columns  from 数据表名 [FROM 数据库名]; 
    

    11.在表中插入数据

       insert into 表名(字段1,字段2,字段3) values (值1,值2 ,值3);
    

    11.在表中增加字段(一个或多个)

    (增加一个字段)格式:alter table 表名 add 新字段名 新字段类型;

    (增加多个字段)格式:alter table 表名 add 新字段名1 新字段类型,add 新字段名2 新字 段类型;

    12.修改字段类型

      (修改一个字段)格式:alter table 表名 modify 字段名 字段类型;
      (修改多个字段)格式:alter table 表名 modify 字段名1 字段类型,modify 字
    

    13.修改字段名

      (修改一个字段)格式:alter table 表名 change 原字段名  新字段名  字段类型;
      (修改多个字段)格式:alter table 表名 change 原字段名1 新字段名1 字段类型;
    

    14.查询所有字段

    1、查询所有字段是指查询表中所有字段的数据。
    2、在Mysql中使用"*"代表所有的字段。
    3、语法格式:select *  from 表名;
    

    15.修改表记录

      update 表名 set 字段=值   where 条件;                    ------修改一个字段值
      update 表名 set 字段1=值1,字段2=值2....  where 条件;    ------修改多个字段值
    

    16.删除记录(2种方法)

      方法一:     格式:delete from 表名 where 条件;
      方法二:     格式:truncate  表名where  条件;
      SELECT * FROM用来查看表格的具体内容
    

    17.修改表名(rename--重命名)

      有2种方法:
    方法一:	 
           格式:alter table 原表名 rename to 新表名;
           或者:alter table 原表名 rename as 新表名;
    方法二:
           格式:rename table 原表名 to 新表名;
    

    18.查询指定字段

    1、查询指定字段是指查询指定的部分字段。
    2、语法格式:
       select 字段名 from 表名;
    3、如果查询多个字段,使用“,”对字段进行分隔
       语法格式:
       select 字段名1,字段名2,字段名3 from 表名;
    

    19.去重查询(重复记录只查询一次)

    1、使用关键字distinct可以去除查询结果中的重复记录
    2、语法格式:
       select distinct 字段名 from 表名;
    

    21.数据表的删除命令(drop)

       drop table 表名;
    

    22.列运算(掌握运算符)

      1、列运算:列和列之间进行运算。
    2、了解运算符:
       1)算术运算符:+   -   *   /(div)   %(mod) 
       2)比较运算符:>  >=   <   <=   =  !=  <> 
       3)逻辑运算符:and(&&)  or(||)  not(!)
    3、列运算实践:
       1)数值类型的列可以做算术运算(+ - * / %)
          例如:select 列*1.5   from 表名;
                select 列1+列2  from 表名;
                select 列1*列2  from 表名; 
       2)字符串类型的列可以做连接运算  concat(列1,列2)或者concat('字符常量',列))   
          例如:
              select concat(列1,列2) from 表名;
              select concat('$',列) from 表名; 
       3)数值型
          转换NULL值 (把值是NULL的列转换成数值0计算)
          ifnull(age,0)-----把age列中存在的NULL值当成0来计算。
          字符型
          ifnull(sname,'无姓名')-----把sname列中为NULL的转换为无姓名
       4)给列起别名
          例如:select 列1+列2 as 名字 from 表名;
          注意:as 可以省略
    

    23.算数运算符

      + 加号求和的
      —减号求差
      *乘号求积
      /除号求差
      %模求余数
      列如10%3=1
      10除3的差是3 余数为1所以答案唯1,
      奇数%2=1
      偶数%2=0
      例如查询id能被2整除的是?
      Select * from 表名 where id%2=0;
      查询id不能被二整除的是?
      Select * from 表名 where id%!=0;
      查询id能被2整除也能被3整除的信息?
      Select * from 表名 where id%2=0 and id%3=0;
    

    24.掌握集合查询(in)

      1、关键字in可以判断某个字段的值是否在指定的集合中。
       1)如果字段的值在集合中,则满足查询条件,该记录可以被查询出来。
       2)如果字段的值不在集合中,则不满足条件,该记录不能被查询出来。 
      2、案例实践
       1)查询学号是1001,1002,1003的记录
          select * from 表名 where id in(1001,1002,1003);
       2)查询学号不是1001,1002,1003的记录
          select * from 表名 where id not in(1001,1002,1003);  
    

    25.掌握范围查询(between...and)

      1、关键字between...and可以判断某个字段的值是否在指定的范围中。
       1)如果字段的值在指定的范围中,则满足查询条件,该记录可以被查询出来。
       2)如果字段的值不在指定的范围中,则不满足条件,该记录不能被查询出来。
      2、案例实践
       查询年龄在20到40之间的学生记录
            select * from 表名 where age between 20 and 40;
       或者:select * from 表名 where age>=20  and  age<=40;
    

    26.掌握空值及多重条件查询(is null,and,or)

      1、空值查询(is null)
          查询年龄为null的记录  
          select * from 表名 where age is null;
      2、查询姓名不为null的学生记录
            select * from 表名 where name is not null;
       或者:select * from 表名 where not name is null;
      3、带关键字and的多条件查询
         1、查询年龄大于25岁的男讲师
            select * from 表名 where age>25 and sex='男';
         2、查询出性别为男、年龄在30岁以下的精英学院的教师
            select * from 表名 where sex='男'and age<30 and xueyuan='精英学院';
      4、带关键字or的多条件查询
         查询出部门为大数据或者收入在5千以上教师姓名、性别、年龄
         select name,sex,age from 表名 where bumen='大数据' or money>5000
    

    27.限制查询结果的数量----limit关键字

    1、查询数据时,可能会查询出很多的记录,而用户需要的记录可能只是很少的一部分,这样就需要来限制查询结果的数量。
    关键字limit可以对查询结果的记录条数进行限定,控制它输出的行数。
    2、显示前3条记录 select * from 表名 limit 3;
    3、使用关键字limit还可以查询结果的中间部分取值。
    两个参数,参数1是开始读取的第一条记录的编号(在查询结果中,第一个结果的记录编号是0,而不是1);
    参数2是要查询记录的个数。
    例如:查询出第2条到第4条记录信息 select * from 表名 limit 1,3;

    28.约束的作用

     作用:完整性约束是为了表的数据的正确性,如果数据不正确,则数据不能添加到表中
    

    29.约束的分类

          1、主键约束-----唯一标识
                 a:当某一列添加了主键约束后,那么这一列的数据就不能重复出现,也不能为空。
                 b:每一个表中只能定义一个主键。
                 c:指定主键约束的关键字primary key
                 d:主键约束的方式有3种:
                 1)创建表的列的同时指定主键      格式: 列名  列类型  primary key;
                 2)创建表的列之后独立指定主键    格式: primary key(列名);
                 3)修改表指定主键                格式:alter table 表名 add primary key(列名);
                 e:删除主键约束(注意:只是删除主键约束,不会删除主键列)
                   格式:alter table 表名 drop primary key; 
        2、主键自增长约束
                a:主键必须是整型才可以自增长。
                b:当主键设置为自动增长后,在没有给出主键值时,主键从1开始,每次自增1。
                  当主键设置为自动增长后,在给定主键值后,会在给定值的基础上每次自增1。
                c:指定主键自增长约束的关键字是:auto_increment  
                d:主键自增长约束的方式有2种:
                1)创建表的列的同时指定主键自增长  格式:列名 类型 primary key auto_increment;
                2)修改表时设置主键自增长          格式:alter table 表名 change 旧列名 新列名 类型 primary key auto_increment;
                3)删除主键自增长约束:格式:alter table 表名 change 旧列名 新列名 类型;(只是加自增长约束,新列名和旧列名一样就行)
                e:主键自增长设置初始值
                   alter table 表名 auto_increment=初始值;
    
        3、非空约束
                 a:指定非空约束的列不能没有值,否则报错。
                 b:非空约束的关键字 not null
                 c:非空约束的格式: 列名 类型  not null;    
                 d:字段默认是可以为空   例如: age int ;  等价于 age int null;
    
        4、唯一约束
                 a:字段指定唯一约束后,那么字段的值必须是唯一的。类似于主键约束。
                 b:唯一约束的关键字 unique
                 c:唯一约束多的格式:列名 类型 unique;(you ni Q)
                 d:取消唯一约束: alter table 表名 drop index 列名;  
                      alter table student drop index sname;
    
        5、外键约束	                         
           a:主外键是构成表与表关联的唯一途径。
           b:外键是另一张表的主键。
           c:外键约束的格式:
             constraint 外键名 foreignkey(外键列) references 主键表(主键列);
               
           d:删除外键约束的格式:
             alter table 外键表 drop foreing key  外键名;
           e:查看外键:show create table 表名;
        6、默认值约束(补充) 
           a、使用关键字default(di fao te)设置列的默认值 
           b、语法格式: 
              列名 类型 default 默认值;
              例如:性别列默认值为男   sex varchar(50) default '男';
                    年龄列默认值为20   age int default 20;
        7,无符号约束
                Unsigned
    

    30.order by子句对查询结果排序ASC升序,DESC降序

    1、使用关键字order by 对查询的结果进行排序。
        2、在默认情况下,order by 按升序输出结果。升序(ASC) 降序(DESC)
        3、排序的语法格式:
           select * from  表名 order by 字段名  asc/desc;
        4、当排序时字段值相同,可以按照另一个字段排序
           语法格式:
           select * from 表名 order by 字段1  asc/desc,字段2  asc/desc;
    

    31.模糊查询 (like) like

     1、使用关键字like实现模糊查询,有两种通配符:% 和 下划线(_)
       2、“%”----可以匹配一个或多个字符,可以代表任意长度的字符串。
          1)查询姓王的学生信息 :select * from 表名 where name like '王%';
          2)查询名字中包含“明”的学生信息: select * from 表名 where name like '%明%';
       3、“_”----可以匹配一个字符。 
          1)查询以m开头,以n结尾的3个字符姓名的学生信息 select * from 表名 where name like 'm_n'; 
          2)查询由5个字母构成的姓名的学生信息      select * from 表名  where name like '_____';
    

    32.count()函数

    1、功能:统计指定列不为null的记录行数
        2、查询student表中记录数                 select count(*)  from student;
           查询student表中sex列不为空的记录行数   select  count(sex)  from student;
           查询student表中工资大于10000的人数    select count(*) from student where money>10000;
        3、多列字段同时统计就行数 
           格式:select count(字段1),count(字段2) from 表名;
    

    33.sum()函数

        1、功能:计算某列的和
        2、计算score列之和  select sum(score) from 表名;
        3、计算多列的和格式: select sum(列1),sum(列2) from 表名;
    

    34.avg()函数

    1、功能:计算某列的平均值 
        2、计算score列的平均值  select avg(score) from 表名;
        3、平均值保留两位小数 
            round(平均值,2) -----会进行四舍五入计算   
    select round(avg(score),保留的小数)from 表名
    

    35.max()函数

    1、功能:找出某列中的最大值
        2、语法格式: select max(列名)from 表名;
        3、找出多列中的最大值: select max(列名1),max(列名2) from 表名;
    

    36.min()函数

    1、功能:找出某列中的最小值
    2、语法格式: select min(列名)from 表名;
    3、找出多列中的最小值: select min(列名1),min(列名2) from 表名;
    

    37.灵活运用分组查询group by子句

    例如:每个公司都有多个部门,如果统计每个部门的在职员工人数,那么就需要分组统计人数...
              分组查询需要使用关键字group by
        语法格式:
        select ... from 表名 group by 列名;
        例如:
        查询每个部门的部门编号和每个部门的人数:
        select id,count(*) from 表名  group by id;
        
        having用法(补充)
    

    38.having 用法与WHERE用法类似,但有三点不同

    1、HAVING只用于GROUP BY(分组统计语句),
    	2、WHERE 是用于在初始表中筛选查询,HAVING用于在WHERE和GROUP BY 结果中查询。
    	3、HAVING可以使用聚合函数,面WHERE 不能。
    
    这个是用在聚合函数的用法。当我们在用聚合函数的时候,一般都要用到GROUP BY 先进行分组,然后再进行聚合函数的运算。
    HAVING子句----练习
         查询工资总和大于9000的部门编号以及工资和:
         SELECT deptno, SUM(sal) FROM emp GROUP BY deptno  HAVING SUM(sal) > 9000;
    

    39.limit子句

     限制查询结果的数量----limit关键字
     1、查询数据时,可能会查询出很多的记录,而用户需要的记录可能只是很少的一部分,这样就需要来限制查询结果的数量。
           关键字limit可以对查询结果的记录条数进行限定,控制它输出的行数。
        2、显示前3条记录  select * from 表名 limit 3;
        3、使用关键字limit还可以查询结果的中间部分取值。
           两个参数,参数1是开始读取的第一条记录的编号(在查询结果中,第一个结果的记录编号是0,而不是1);
                    参数2是要查询记录的个数。     
           例如:查询出第2条到第4条记录信息  select * from 表名 limit 1,3;
    

    40.合并结果集

    1、合并结果集就是把不同表中的记录连到一起,这样查询结果会产生笛卡尔积。
           笛卡尔积:多表连接时,表中记录个数的乘积。
           笛卡尔积中会存在我们不想要的结果,那么怎么去除这些记录呢?用条件过滤不想要的记录。
    
    2、合并结果集的方法:内连接查询和外连接查询。
    3、合并查询结果是将多个select语句的查询结果合并到一起。
           
           合并查询结果使用关键字union和union all。
           1)关键字union是将所有的查询结果合并到一起,然后去除重复记录;
           2)关键字union all则只是简单地将结果合并到一起,不会去除重复记录。
    
    4、语法格式:
           select 字段 from 表1    union/union all    select 字段 from 表2;
          1、子查询就是嵌套查询,即select中包含select,如果一条语句中存在两个,或两个以上select,那么就是子查询语句了。
          2、子查询出现的位置:
          1)where后作为条件存在
          2)from后作为表存在(多行多列)
    

    41.内连接查询 inner join内连接只显示符合条件的记录

    1、内连接是最普通的连接类型,它要求构成连接的表中有等同的字段。
        2、内连接要求构成连接的每一部分的每个表的匹配,不匹配的行将被排1除。
        3、语法格式: 	
                 假设两个表中都有等同的字段user
                 select 字段名 from 表1,表2  where 表1.user=表2.user;         ------隐式内连接
           或者:select 字段名 from 表1 inner join 表2 on 表1.user=表2.user;  ------显式内连接(效率高)
    

    42.外连接查询 outer join所有记录都显示没有的记录为null

    1、与内连接不同,外连接是指使用outer join关键字将两个表连接起来。
           外连接生成的结果集不仅包含符合连接条件的行数据,而且还包括左表(左外连接时的表)、右表(右外连接时的表)或两边连接表(全外连接时的表)中所有的数据行。
        2、语法格式:
           select 字段名 from 表名1 left|right|outer join 表名2 on 表名1.字段名1=表名2.字段名2;
        3、外连接分为左外连接(left join)、右外连接(right join)和全外连接3种类型。
        4、左外连接:
           左连接是先查询出左表(即以左表为主),然后查询右表,右表中满足条件的显示出来,不满足条件的显示NULL。
    列如:select * from 表名1  left outer join 表名2 on 是谁和谁连接的;
        5、右外连接:
           右连接就是先把右表中所有记录都查询出来,然后左表满足条件的显示,不满足显示NULL。
    列如:select * from 表名2 right outer join 表名1 on 是谁和谁连接的;
    在前面显示的表为主表在后面显示的为附表
    个人补充:一般来讲那个表的数据多一般是父表,视情况而定	
    如果父表是ts 子表为tt 那么用左外链接ts父表在左边,用右外链接ts父表在连接的右边
    

    43.小练习

    带关键字in的子查询 查询多列
        1、只有子查询返回的结果列包含一个值时,比较运算符才适用。
        2、假如一个子查询返回的结果集是值的列表,这时比较运算符就必须用关键字in代替。
        3、in 运算符可以检测结果集中是否存在某个特定的值,如果检测成功就执行外部的查询。
        4、练习:查询性别和工资与李鹏飞完全相同的员工信息
               select * from 表名 where (sex,salary)in (select sex,salary fron 表名 where sname='李鹏飞');     
    带比较运算符的子查询  >  >=   <  <=   =  !=  <> 查询一列
        练习1:查询工资高于李鹏飞的员工信息 
              select * from 表名 where salary>(select salary from 表名 where sname='李鹏飞'); 
        练习2:查询分数大于班级平均分的学生的信息
              select * from student where score>(select avg(score) from student);
    
    带exists的子查询
        1、含有exists的子查询特点:
           含有exists的子查询实际上不产生任何数据
           在有返回行的情况下,子查询将返回true,反之则返回false
           由于仅仅判断是否存在返回行,所以子查询的选择列表通常指定为(*)
        2、练习:
           1)如果student中存在name为张三,则查询表中的所有学生的姓名、性别和年龄
              select sname,sex,age from student where exists (select * from student where sname='张三');
           2)如果student中不存在name为张三,则查询表中的所有学生的姓名、性别和年龄
              select sname,sex,age from student where not exists (select * from student where sname='张三');
    
    带any的子查询-----等价于找最小值
        1、关键字any表示满足其中任意一个条件。
        2、使用关键字any时,只要满足内层查询语句返回的结果中的任意一个,就可以通过该条件来执行外层查询语句。
        3、练习:查询工资大于大数据任意一人薪资的员工信息
                 select * from 表名  where salary > any(select salary from 表名 where sname='大数据');
          等价于:select * from 表名  where salary >(select min(salary) from 表名 where sname='大数据');
    
    带all的子查询------等价于找最大值
        1、关键字all表示满足所有条件。
        2、使用关键字all时,只有满足内层查询语句返回的所有结果,才可以执行外层查询语句。
        3、练习:查询工资高于大数据所有人的员工信息
                 select * from 表名  where salary > all(select salary from 表名 where sname='大数据');
          等价于:select * from 表名  where salary >(select max(salary) from 表名 where sname='大数据');
    
    合并查询结果
        1、合并查询结果是将多个select语句的查询结果合并到一起。
           
           合并查询结果使用关键字union和union all。
           1)关键字union是将所有的查询结果合并到一起,然后去除重复记录;(比较常用)
           2)关键字union all则只是简单地将结果合并到一起,不会去除重复记录。
    
        2、语法格式:
               select * from 表1    union/union all    select * from 表2;
            或 select 字段 from 表1    union/union all    select 字段 from 表2;
    
  • 相关阅读:
    web总结
    工作总结
    python积累
    学习地图
    position:absolute绝对定位解读
    利用C++ RAII技术自动回收堆内存
    C++封装常用对象和对头文件探索
    String.split()方法你可能不知道的一面
    动态内存分配(new)和释放(delete)
    C#实现的异步Socket服务器
  • 原文地址:https://www.cnblogs.com/lxs1030/p/14101666.html
Copyright © 2011-2022 走看看