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;
    
  • 相关阅读:
    HDU 2236 无题Ⅱ
    Golden Tiger Claw(二分图)
    HDU 5969 最大的位或 (思维,贪心)
    HDU 3686 Traffic Real Time Query System (图论)
    SCOI 2016 萌萌哒
    Spring Boot支持控制台Banner定制
    构建第一个Spring Boot程序
    Spring Boot重要模块
    Java fastjson JSON和String互相转换
    BCompare 4 Windows激活方法【试用期30天重置】
  • 原文地址:https://www.cnblogs.com/lxs1030/p/14101666.html
Copyright © 2011-2022 走看看