zoukankan      html  css  js  c++  java
  • MySQL 操作部分

    一、创建/删除数据库

    1. create database db_name;

    2. drop database db_name;

    二、创建/删除表

    1. use db_name;

    2. create table tb_name(字段名1 属性,字段名2 属性...字段名n 属性);

    例:mysql> create table student(
              -> id int unsigned auto_increment primary key,
              -> name varchar(30),
              -> sex varchar(3) not null default "nan");

    三、增

    1.插入单行数据:
    insert   into  表名(列名1,列名2,列名3,...,列名n)  values(值1,值2,值3,...,值n)
    注:其中列名列表省略时,值列表必须全部按照表中列的顺序依次指定值,如果不想输入值,必须以NULL或者default代替
    2.批量插入数据:
    insert  into  表名(列名1,列名2,…,列名n)
    select  值11 , 值12 , ...  from dual  union
    select  值21 , 值22 , ...  from dual  union
    ...
    select  值n1 , 值n2 , ...  from dual ;

    注:每一个select后的值必须与括号中的列名在数量和含义上一一对应;当需要为所有列插入数据时,可省略列名列表。其中dual是Oracle中的一个系统表,用户可以使用但不能删除。dual相当于一个临时的表,用于提供一些计算而来或临时存储的数据。

    复制已有表中的数据
    insert into 表名(列名1,列名2,…,列名n)
    select 列名11,列名12,…,列名1n from 表名1 union
    select 列名21,列名22,…,列名2n from 表名2 union …
    注:每一个select后的列名必须与括号中的列名在数量和含义上一一对应;当需要为所有列插入数据时,可省略列名列表。
    所有增加数据都需commit提交,否则不会存入数据库。

    四、删
    delete  from  表名  where  删除条件
    注:先执行from表名,再执行where,然后执行delete。
    truncate  table  表名
    注:属于DDL-数据定义语言的范畴;删除所有数据,但保留表结构;效率高于delete;删除数据;无需使用commit提交数据。

    五、改
    update 表名  set  列名1=新值1 , 列名2=新值2,… where  更新条件
    注:先执行update表名,然后执行where,然后执行set;需要使用commit提交数据。

    六、查
    select   列名列表  from  表名  where  列条件表达式  group  by  分组列表达式  having  分组条件  order  by  排序列表达式1  asc/desc,排序列表达式2  asc/desc
    注:执行顺序:from、where、group by、having、select、order by;
        在使用group by 时,有一个规则需要遵守,即出现在select列表中的字段,如果没有在组函数中,那么必须出现在group by 子句中搜索。
    #模糊查询:
    select   列名列表  from  表名  where  列表达式  like   '模式符'
    select  列名列表  from  表名  where  regexp_like(列名,'[模糊数据]')
    #多条件查询:
    select  列名列表  from  表名  where  条件表达式1  and/or  条件表达式2
    #作列表达式相关的函数:
    length(字符串数据或列名):计算字符串中的字符总数
    substr(字符串数据或列名,m,n):从字符串中第m个开始连续取n个字符
    trim(字符串数据或列名):去掉字符串首尾的空格
    upper(字符串数据或列名):将字符串中的字母变为大写
    lower(字符串数据或列名):将字符串中的字母变为小写
    sysdate:返回系统的当前日期,精确到秒
    systimestamp:返回系统的当前时间,精确到微秒
    #聚合函数:
    count(*):计算所有列整体的总行数
    count(列名):计算指定列下非空数据的总行数,重复值也计数
    sum(数值型列名):计算数值型指定列下非空数据的总和
    avg(数值型列名):计算数值型指定列下非空数据的平均值
    max(列名):计算指定列下非空数据的最大值
    min(列名):计算指定列下非空数据的最小值
    #四舍五入函数:
    round(数值数据或列名,小数位数):根据指定小数位数,对数值数据四舍五入
    #重新编码函数:
    decode(Exp,V1,R1,V2,R2,...Rn):
    用于对表达式进行重新编码。当表达式Exp的值为V1时,结果为R1,当表达式Exp的值为V2时,结果为R2,以此类推,如果没有符合条件的值,则decode的最终结果是Rn。
    #类型转换函数:
    to_char(列名,格式):常用于对日期时间数据转换格式(yyyy、mm、dd、hh、hh24、mi、ss、q季度)
    to_number(数据或列名):将数据转换为数值
    to_date(数据或列名):常用于将字符串转换为日期

    高级查询:
    1.并(union、union  all)
    select  列名列表  from  表1  union select  列名列表  from  表2
    select  列名列表  from  表1  union all select  列名列表  from  表2
    注:要求多个select后的列名列表必须列数相同、类型兼容、语义相同;
        终结果表中的列名以第一个select后的列名为准;
        使用all会保留重复行,效率较高。不适用all的union默认具有去重功能。
    2.交(intersect)
    select  列名列表  from  表1  intersect  select  列名列表  from  表2
    注:多个select结果集必须具有完全相同的列数,并且各列具有相同的数据类型、相同的语义。
        多个表中的列名没有要求,但最终结果表中的列名以第一个select后的列名为准。
    3.差(minus)
    select  列名表  from  表1  minus  select  列名表  from  表2
    注:多个select结果集必须具有完全相同的列数,并且各列具有相同的数据类型、相同的语义。
        多个表中的列名没有要求,但最终结果表中的列名以第一个select后的列名为准。
    4.等值连接:
    select  列名列表  from  表1,表2  where  连接条件表达式
    select  列名列表  from  表1  cross  join  表2  where  连接条件表达式
    其中,连接表达式的写法:表名1.列表达式1=表名2.列表达式2
    5.自然连接:
    select  列名列表  from  表1  natural  join  表2
    注:自然连接后,结果会自动去掉重复列。
    6.内连接:
    select  列名列表  from  表1  join 表2  on 表1.列表达式1=表2.列表达式2
    注:on表示连接条件,不能替换为where。列表达式同名时不可省略表名。
    7.自连接:
    select  列名列表  from  表名  表别名1  join  表名  表别名2  on  表别名1.表达式1=表别名2.表达式2
    8.外连接:
    #左连接
    select  列名列表  from  表1 left  join 表2  on  表1.列表达式1=表2.列表达式2
    使用where的简略写法:
    select  列名列表  from  表1,表2  where 表1.列表达式1=表2.列表达式2(+)
    注:在非基础表的列名结束处添加“(+)”;可缩小代码长度,但数据源多时难维护。
    #右连接:
    select  列名列表  from  表1 right  join 表2  on  表1.列式=表2.列式
    select  列名列表  from  表1,表2  where 表1.列表达式1(+)=表2.列表达式2
    #全外连接:
    select  列名列表  from  表1 full  join 表2  on  表1.列式=表2.列式
    9.子查询:
    select  列名列表  from  表1  where  列表达式  比较运算符(select  列表达式  from  表2)
    注:比较运算符有=、!=、>、>=、<、<=、in、not in等;
        列表达式必须同义,且只能写一个列表达式。
    select  列名表  from  表1  where  exists(select  *  from  表2  where  列表达式=表1.列表达式)
    #单行子查询
    单行子查询指返回一个一行一列的数据(子查询可以没查到数据)。
    能够使用比较运算符=、!=、>、>=、<、<=、in、not in和谓词exists。
    #多行子查询
    多行子查询表示子查询会返回多行多列数据(子查询可以没查到数据)。
    只能使用比较运算符in、not in和谓词exists,不能使用=、!=、>、>=、<、<=等运算符。

    #子查询提供数据源
    1.查询数据源:select * from (子查询select语句)
    注:子查询外的括号不能省略。
    2.建表数据源:create  table  表1  as  select  列名列表  from  表2
    注:相当于导出数据到表。
    3.插入数据源:insert  into  表1  select   列名列表   from  表2
    注:允许重复插入数据,不会覆盖原有数据。

    七、其他操作

    1、导入sql文件: 创建并进入数据库后执行 source sql文件路径
    2、查看表字段:desc 表名;
    3、查看表中的所有索引: show index from 表名;
    4、查看数据库中的基本信息:s
    5、查看数据库字符集:show create database 数据库名;
    6、查看表字符集:show create table 表名;
    7、mysql帮助手段:?show   //查看show的使用方法

  • 相关阅读:
    UVALive
    HDU6405 Make ZYB Happy 广义sam
    企业级通用链表雏形
    数据结构与算法-递归的形象化理解
    Pictures & texts synthesiser
    全局变量、局部变量、静态全局变量、静态局部变量在内存里的区别
    LINUX 目录文件结构
    测试
    maven 查找jar包的version
    web.xml文件的web-app标签体各版本的约束
  • 原文地址:https://www.cnblogs.com/FengZiQ/p/8451948.html
Copyright © 2011-2022 走看看