zoukankan      html  css  js  c++  java
  • MySQL基本语句

    一. 基础语句

    1.  数据库操作

    数据库连接  mysql -u用户名 -p密码 -h主机名称  -h主机名称如果实在本机则可以省略

    执行sql命令时,分号不能省略。

    查看数据库(所有的) show databases;

    查看指定数据库   show create database db_name;

    创建数据库          create database db_name;

    修改数据库编码    alter database db_name default character set  utf8;

    使用数据库          use db_name;

    删除数据库          drop database db_name;(不能一次删除多个!)

    2. 数据表操作

    查看所有表           show tables ;

    查看某个表的创建语句  show  create  table 表名;

    查看某个表信息  desc 表名;

    创建表                 create table 表名(列名 数据类型 [not null] [primary key],列名 数据类型 [not null],..) ;

    删除表记录   delete from  表名; delete * from 表名;

    删除表                 drop table 表名;(删除整个表结构和表记录)

    更改表名              rename table 旧表名 to 新表名;

    增加一个列              Alter table 表名 add column 列名 数据类型;(column 关键字可省略)

    删除一个列              Alter table 表名 drop column 列名; (column 关键字可省略)

    修改一个列              Alter table  表名 change column  列名  新列名 数据类型;(可修改 列名 数据类型)

    修改一个列      Alter table  表名 modify column  列名   数据类型;(可修改 数据类型)

    3. 数据记录操作

    查看表的所有记录       select * from 表名        *代表所有列  也可以select  `列名`,`列名` from 表名;

    增加表内容 插入数据     insert  into  表名(列名,列名...)values(值,值...);

    修改列中的一条记录      update  表名  set   列=值   where   列=值;

    删除列中的一条记录      delete  from  表名   where   列=值;  

    二. 高级查询语句

    1. like 

    LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式

      select  字段名,字段名 from 表名 where 字段名 like  pattern

      like 匹配/模糊匹配,会与 % 和 _ 结合使用。

    1. '%a'   以a结尾的数据
    2. 'a%'   以a开头的数据
    3. '%a%'   含有a的数据
    4. '_a_'   三位且中间字母是a的
    5. '_a'   两位且结尾字母是a的
    6. 'a_'   两位且开头字母是a的

    2. top

    TOP 子句用于规定要返回的记录的数目

      select  top 2 * from 表名;

    TOP 子句用于规定要返回的记录的百分比

      select  top 50 percent * from 表名;

    3. order by

    用于根据指定的列对结果集进行排序

      select * from 表名 order by 字段名 desc/asc;  

      asc   升序;

      desc    降序;

      结果集默认以升序排序;

    4. group by 

    GROUP BY 语句根据一个或多个列对结果集进行分组

    在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。

      select  name, count(*)  from table_name  group  by  name;  

    分组查询时添加约束条件

      select  *  from  table_name  group  by  name  having   条件;

    5. in

    IN 操作符允许我们在 WHERE 子句中规定多个值.

      select * from 表名 where 字段名 in (value1,value2,value3);

    6. between

    会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。

      select name, count(*) from 表名 where 字段名 between  value1  and  value2;

    7. union

    UNION 操作符用于合并两个或多个 SELECT 语句的结果集

    请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

      select * from 表1 union select * from 表2;

    默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

      select * from 表1 union all select * from 表2;

    另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

    三. 多表联合查询

      将两张表的列组合在一起产生新的结果集。

    create table student (id int, name varchar(20), code int);
    insert into student(name,code) values('张三', 1),('李四',2),('王五',3);
    
    create table exam (code int, subject varchar(120), score int);
    insert into exam(code,subject,score) values(1,'语文',85),(1,'数学',88),(1,'英语',66),(2,'语文',72),(2,'数学',64),(2,'英语',88),(3,'语文',89),(3,'数学',96),(3,'英语',98);

    1. inner join(内连接)

      在表中存在至少一个匹配时,INNER JOIN 关键字返回行。

      先在表一中查询出一套记录,再根据后面的条件筛选从表一查询的记录。

      select  table1.field1,table2.field1  from table1 inner join table2 on table1.field= table2.field;

      此处的 inner 可省略;

      

    2. left join(左外连接)

      将左表中所有的基础查询出来,再将右表中符合条件的记录查询出来,不符合条件的记录显示为NULL;

      先从左表查询出一套记录,再根据条件去匹配右表,如果匹配不到,则结果集中右表对应的字段显示为NULL

      select  table1.field1,table2.field1  from table1 left join table2 on table1.field= table2.field;

      

      先从左表查询出一套记录,再根据条件去匹配右表,通过 where 子句 进行过滤筛选,此时一般根据右表的字段进行筛选;

      select  table1.field1,table2.field1  from table1 left join table2 on table1.field= table2.field where table2.field 条件;

      

    3. right join(右外连接)

      将右表中所有的基础查询出来,再将左表中符合条件的记录查询出来,不符合条件的记录显示为NULL;

      先从右表查询出一套记录,再根据条件去匹配左表,如果匹配不到,则结果集中左表对应的字段显示为NULL

      select  table1.field1,table2.field1  from table1 right join table2 on table1.field= table2.field;

       

      先从左表查询出一套记录,再根据条件去匹配右表,通过 where 子句 进行过滤筛选,此时一般根据左表的字段进行筛选;

      select  table1.field1,table2.field1  from table1 left join table2 on table1.field= table2.field where table1.field 条件;

      

    4. union(联合查询)

      UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

      请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

      select * from table1 union select * from table2;

      查询的结果自动去重

      select * from table1 union all select * from table2;

      不去重

      

    5. full join (全外连接)

      mysql本身不支持全外连接,用左右连接可实现全连接效果

      通过 union 合并左外连接右外连接

      select  table1.field1,table2.field1  from table1 left join table2 on table1.field= table2.field

      union all

      select  table1.field1,table2.field1  from table1 right join table2 on table1.field= table2.field;

     6.  cross join(交叉连接)

      得到两个表的乘积。即笛卡尔积。

      select * from table1 cross join tablle2;

      用 table1的每一条记录去匹配 table2 的所有记录;

      若 table1有4条记录,table2 有5条记录,则结果就有4x5=20 条记录;

      

  • 相关阅读:
    Linux -- 如何减少IO过程中的CPU copy
    Linux -- 在多线程程序中避免False Sharing
    智能文件选择列表—— bat 批处理
    Windows NTFS 符号链接 与 Linux 软连接
    【2017.12.12】deepin安装U盘制作,支持 BIOS+UEFI,deepin_Recovery+Win PE
    Qt creator中文输入—fctix-qt5 源码编译 libfcitxplatforminputcontextplugin.so
    安装 Qt 及所需 gcc 等
    虚拟机安装 deepin Linux 注意事项
    deepin 常用设置
    VIM常用快捷键
  • 原文地址:https://www.cnblogs.com/virgosnail/p/9663327.html
Copyright © 2011-2022 走看看