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的使用方法

原文地址:https://www.cnblogs.com/FengZiQ/p/8451948.html