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

    1.创建数据库 :create database 名称 [charset 字符集 collate 校对规则] ;  如:

    drop database if exists `mydb` ;  # 若存在就删除

    create database `mydb`  default charset=utf8mb4 collate=utf8mb4_general_ci ;

    2.查看校队规则 :show collation;

    3.查看数据库/表 :show databases/tables;

    4.显示数据库/表的创建语句 :show create database/table 数据库名/表名 [G];

    5.查看当前使用的数据库 :select database();

    6.创建表 :create table 表名(
    字段名 数据类型 [该字段约束条件],
    字段名 数据类型 [该字段约束条件],
    ......
    )[engine=InnoDB default charset=utf8mb4  collate=utf8mb4_general_ci];

    7.删除数据集/表 :drop database/table 名;

    8.查看表结构 :describe 表名 ; (或者 desc 表名;)

    9.修改表:

     alter table test1 add column colname varchar(10);   --添加字段
     alter table test1 drop column colname;   --删除字段
     alter table test1 rename to test2 或 rename table test1 to test2;   --修改表名
     alter table test1 modify colname varchar(100);   --修改字段类型
     alter table test1 rename column oldcol to newcol;   –修改字段名

    10.主键约束(非空+唯一) :primary key
         外键约束:foreign key...reference...
       唯一约束 :unique
       非空约束 :not unll
         检查约束 :check(条件)

    11.添加数据 :insert into 表名(字段名,字段名,字段名...不写默认全部字段) values
    (数据,数据,数据),
    (数据,数据,数据),
    ...;
    或者 :insert into 表名
    set 字段名=值,字段名=值,...;

    12.删除数据 :delete from 表名 where 过滤条件;
    或者 truncate 表名;

    13.更新数据 :update 表名 set 字段名=值,字段名=值...where 过滤条件;

    14.查询 :select * from 表名;
    select 字段名,字段名,...from 表名;

    过滤:where 过滤条件
    in(集合)、 between...and(范围)、 is null(空值) 、distinct(排除重复值)、 like '%*%' (模糊查询) 、and(并且)、 or(或者)

    15.复制表 :create table 新表名 like 旧表名; (拷贝结构)
    create table 新表名 as (select * from 旧表名);   (拷贝结构和数据)
    insert into 新表名 as (select * from 旧表名);   (拷贝数据)

    16.聚合函数 :count()返回某列的行数, sum()返回某列的和 avg()返回某列的平均值,max()返回某列的最大值, min()返回某列的最小值, IFNULL(参数,如果为空则改为的值)

    17.排序 :order by 字段名 asc/desc;
    asc为升序 desc为降序 默认为asc

    18.分组 :group by 字段名 having 过滤条件;    # 注:having中可以使用聚合函数,而where则不能!

    19.限制查询结果 :limit a,b;
    a代表开始的标号(第一条为0) b代表显示的条数

    20.子查询 :select 字段名,(子查询) from 表名;
    select * from (子查询);
    select * from 表名 where (子查询);
    子查询关键字:exists(子查询):只要里面的子查询返回了行,exists的值为真,外部查询就执行。
    字段名(比较运算符如>)all(子查询):大于子查询里的每一个值,即只需要大于最大值。
    字段名(比较运算符如>)some 或 any(子查询):大于子查询里的任何值,即只需要大于最小值。
    in(子查询):存在相等。

    not in(子查询):不存在相等,注意子查询必须排除 NULL 值。

    21.联合操作 :select * from a
                        union
                        select * from b;
    将两张表纵向连接起来,但是两张表的字段数必须相同

    22.外键约束 :alter table 表名
    add constraint 外键名 foreign key (外键字段名) references 外键表名 (主键字段名);
    删除外键 :alter table 表名 drop foreign key 外键名

    23.联表查询(笛卡尔积):多张表关联,将表的所有信息都要显示出来,如果关联不到的数据用null代替或不显示。

    1) 内连接(笛卡尔积中,只显示有关联的数据,无关联不显示):select * from 表1 [inner] join 表2 [on/where 表1.关系字段=表2.关系字段]; (on是内联前过滤 ,where是产生笛卡尔积之后再过滤)

    2) 外连接 (必须写关联条件):

    左外(笛卡尔积中,左边表中的数据必须都显示): select * from 表1 left [outer] join 表2 on 表1.关系字段=表2.关系字段;
    右外(笛卡尔积中,右边表中的数据必须都显示): select * from 表1 right [outer] join 表2 on 表1.关系字段=表2.关系字段;
    全外: select * from 表1 full [outer] join 表2;(MySQL不支持)

    3) 交叉(也是笛卡尔积,等价于 inner join):cross join;
    4) 自连接(必须有别名) :select * from 表1 别名1 join 表1 别名2;

    24.创建视图 :create view 视图名 as
                        select语句
    查看视图 : ①desc 视图名
    ②show table statas like '视图名'
    ③show create view 视图名
    修改视图 :create or replace view 视图名 as
                   select语句
    或者 alter view 视图名 as
           select语句
    25.case when 字段=数据1 then '返回值1' when 字段=数据2 then '返回值2'... else '返回值3’ end [as] 字段别名

    例如:select id,name,(case when ismale=1 then '男' when ismale=2 then '女' else '未知性别' end) as 性别 from employee;

    26.备份

    备份所有数据库:
    mysqldump –u 用户名 –p –h 主机名 --all-databases > 备份文件名.sql

    备份整个或多个数据库:
    mysqldump –u 用户名 –p –h 主机名 --databases db1 db2 db3 … > 备份文件名.sql

    备份某个数据库的某些表:
    mysqldump –u 用户名 –p –h 主机名 数据库名 表1 表2 表3… > 备份文件名.sql

     27.恢复

    通过mysqldump,如果使用了"--all-databases"或"--databases"选项,则在备份文件中包含CREATE DATABASE和USE语句,故并不需要指定一个数据库名去恢复备份文件。
    mysql –u 用户名 –p < 备份文件.sql

    通过mysqldump,如果没有使用"--databases"选项,则备份文件中不包含CREATE DATABASE和USE语句,那么在恢复的时候必须指定数据库。
    mysql –u 用户名 –p 数据库名 < 备份文件.sql

    28.设置自动创建和自动更新时间(格式是:2018-01-01 00:00:00)

    自动创建时间:`create_datetime` timestamp default current_timestamp

    自动更新时间:`update_datetime` timestamp default current_timestamp on update current_timestamp

    29.修改用户密码

    alter user username@localhost identified by 'newpwd';

    30.给用户授权

    grant all privileges on db.* to username@localhost;  # 符号*代表所有库或表

    flush privileges;  # 刷新生效

    31.允许远程客户机访问MySQL服务

    修改 mysql 数据库中 user 表的 host 字段:

    use mysql;

    update user set host='访问者IP' where user='访问者用户名';  # 或者新创建一个用户,host设为访问者IP,设为%表示任何局域IP。(可能还需赋予读写权限等)

    flush privileges;  # 务必刷新权限

      至此,转载请注明出处。

     

  • 相关阅读:
    深入理解Java Proxy机制
    StringBuilder与StringBuffer的区别
    反射
    list和set区别
    spring总结
    Hibernate与 MyBatis的比较
    手机拍照或选择照片上传html5代码
    JSP两种跳转
    离散化
    圆方树
  • 原文地址:https://www.cnblogs.com/wcwnina/p/8719734.html
Copyright © 2011-2022 走看看