mySQL基本语句

来源:互联网 发布:sql 去掉重复行 编辑:程序博客网 时间:2024/06/14 19:25

    DDL(Data Defination Languages)

        创建数据库, 
    CREATE DATABASE 数据库名;
        查看数据库
    show databases;
        删除数据库
    drop database 数据库名
        创建表
    CREATE TABLE 表名字 (column_name column_type constraints ...... column_name column_type constraints);
        column_name 字段名,column_type字段类型,constraints约束条件(索引类型)
        查看表定义
    desc 表名称;
        查看表创建语句
    show create table 表名称 \G;
        \G选项能够使记录按照字段竖着排列
        删除表
    drop table 表名称;
        修改表字段
    ALTER TABLE 表名称 MODIFT [COLUMN] column_definition [FIRST | AFTER col_name];
        column字段名,column_definition字段类型,FIRST|AFTER col_name移动字段到表开头或者某个字段后面
        增加表字段
    ALTER TABLE 表名称 ADD [COLUMN] column_definition [FIRST|AFTER col_name];
        删除表字段
    ALERT TABLE 表名称 DROP [CLOUMN] col_name;
        字段改名
    ALTER TABLE 表名称 CHANGE[CLOUMN] old_dol_name column_definition [FIRST|AFTER col_name]
        表改名
    ALTER TABLE 表名称 RENAME [TO] 新表名

    DML语句(Data Manipulation Language)

        插入记录

    INSERT INTO 表名 (field1,field2,...) VALUES (value1, value2,...);
       也可以不指定字段名称,但要按照字段排列顺序,

    INSERT INTO 表名称 (value1, value2,...);
        一次性插入多条记录
    INSERT INTO 表名称 (field1, field2, ...) VALUES (values1, values2,...), (values1, values2,...)
        更新记录

    UPDATE 表名称 SET field1=value1, field2=value2,..., fieldn=valuen;
        同时更新多个表数据

    UPDATE t1,t2...tn SET t1.field1=expr1, ...,tn.fieldn=exprn [WHERE CONDITIONS];
        删除记录

    DELETE FROM 表名称 [WHERE CONDITION]
        删除多个表(注意表别名的使用)

    DELETE t1,t2...,tn FROM t1,t2..,tn [WHERE CONDITION];
        查询记录
    SELECT * FROM 表名称 [WHERE CONDITION];
        查询不重复语句

    SELECT DISTINCT 字段名 FROM 表名;
        排序和限制

    SELECT * FROM 表名 [WHERE CONDITION] ORDER BY field1 [DESC|ASC],...,fieldn [DESC|ASC] LIMIT offset_start,row_count; 
        ASC升序,DESC降序默认是ASC,LIMIT的用法像php中的substr()函数,两个参数分别是起始值和长度。
        聚合

    SELECT [field1, field2,...,fieldn] fun_name FROM 表名称 [WHERE CONDITION] [GROUP BY field1,field2,...,fieldn 
    [WITH ROLLUP]]
    [HAVING WHERE_CONDITION]
        fun_name: 函数 sum(),count(),max(),min()

        GROUP BY:分类聚合字段

        WITH ROLLUP:可选,是否对分类后结果再汇总

        HAVING:对分类后结果进行条件过滤
        例如,统计字段1数量大于1的行数据:

    SELECT 字段1,count(1) from 表名 group by 字段名 having  count(1)>1;
        表连接

        最常用的是内连接

    SELECT 字段1 FROM 表1,表2 WHERE 表1.字段1=表2.字段1;
        外连接,左连接:包含所有左边表的记录甚至右表没有和它匹配的记录,
    SELECT 字段1 FROM 表左 LEFT JOIN 右表 ON 左表.字段1=右表.字段1;

        右连接:包含所有右边表的记录甚至左表没有和它匹配的记录,
    SELECT 字段1 FROM 表左 RIGHT JOIN 右表 ON 左表.字段1=右表.字段1;
        子查询,主要关键字: in, not in,=,!=,exists,not exists,mySql 4.1之前不支持子查询,只能用表连接实现相应功能。
        记录联合
    SELECT * FROM t1 UNION|UNION ALL SELECT * FROM t2... UNION|UNION ALL SELECT * FROM tn;
        UNION和UNION ALL的主要区别是UNION ALL把结果集直接拼在一起,而UNION对UNION ALL后的结果进行一次DISTINCT,去除重复记录后结果。

    DCL(Data Control Language)

        DCL语句一般是DBA用来管理系统中对象权限使用
        赋予权限
    grant select,insert on 数据库名.* to '用户名'@ip地址 identified by '密码';















        



原创粉丝点击