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

     新增:

    INSERT INTO t1 (field1,field2) VALUE (v001,v002);            // 明确只插入一条Value
    INSERT INTO t1 (field1,field2) VALUES (v101,v102),(v201,v202),(v301,v302),(v401,v402);  //批量插入
    INSERT INTO t2 (field1,field2) SELECT col1,col2 FROM t1 WHERE //不要加values或value,和插入sql混了
    #不要写成:INSERT INTO Table2 (field1,field2,...) VALUES (select value1,value2,... from Table1)

    ps:

    1 如果value(s)左边的没有指定字段列表,则右边需按表默认字段顺序输入全部字段值

    删除:

    DELETE FROM table_name //清空表
    DELETE * FROM table_name //清空表
    DELETE FROM table_name WHERE condition//按条件删除行

    修改:

    UPDATE table_name SET column_name=new_value [, column_name=new_value] WHERE column_name=some_value

    查询:

    SELECT column_name, column_name FROM table_name;//指定列,没有排除列的写法
    SELECT * FROM table_name;//全部列

    聚合函数:

    //数值类型
    avg()
    min()
    max()
    sum()
    round(column_name,decimals)
    
    //通用
    count()计数
    
    //字符类型
    mid(str_column,start,end)截取字符//start从1开始,end可选默认到最后
    length(str_column) 长度
    
    //举例
    SELECT `category_id`, `name`,LENGTH(`name`) from `votes` GROUP BY `created_by` HAVING mid(`name`,2,8) LIKE '%风格%' ;

    条件:

    //and和or
    SELECT column_name(s)
    FROM table_name
    WHERE condition
    AND|OR condition
    
    //between
    SELECT column_name(s)
    FROM table_name
    WHERE column_name
    BETWEEN value1 AND value2
    
    //in
    SELECT column_name(s)
    FROM table_name
    WHERE column_name
    IN (value1,value2,..)
    
    //like
    SELECT column_name(s)
    FROM table_name
    WHERE column_name
    LIKE pattern
    
    //group by (按某字段分组,结果集中该字段唯一)
    SELECT column_name1,SUM(column_name2)
    FROM table_name
    GROUP BY column_name1
    
    //having (必须与group by配合使用)
    SELECT column_name1,SUM(column_name2)
    FROM table_name
    GROUP BY column_name1
    HAVING SUM(column_name2) condition value
    
    //order by (结果排序)
    SELECT column_name(s)
    FROM table_name
    ORDER BY column_name [ASC|DESC]
    
    //limit 和 offset
    SELECT column_name(s)
    FROM table_name
    ORDER BY column_name [ASC|DESC]  limit 5 offset 5
    //必须按 order by limit offset的顺序书写,否则报错,offset从0开始

    新建:create

    //新建数据库(完整)
    CREATE DATABASE IF NOT EXISTS dbname DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    
    //新建表格(完整)
    DROP TABLE IF EXISTS `city_info`;CREATE TABLE `city_info` (
    `ci_id`  int(10) NOT NULL COMMENT '城市ID值' ,//类型,是否空,默认值,注释,字符编码和排比规则5种信息,顺序随意
    `ci_province`  int(10) NOT NULL COMMENT '省份外键' ,
    `ci_city`  varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '城市名称' ,
    PRIMARY KEY (`ci_id`),//主键索引
    FOREIGN KEY (`ci_province`) REFERENCES `province_info` (`pr_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,//外键索引
    [unique|textfull] INDEX `ci_province` (`ci_province`) USING BTREE //[唯一|全文]普通索引
    )
    ENGINE=InnoDB //表引擎
    DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci //表数据的字符编码和排序比较规则
    COMMENT='城市表' //表注释
    AUTO_INCREMENT=123; //自增起始值
    
    //eg (外键失败,其余成功)

    CREATE TABLE `member_update_store` (
    `id` int(10) NOT NULL COMMENT '自增id' ,
    `memberid` int(10) NOT NULL COMMENT '主表会员id' ,
    `nickname` varchar(32) default '' NOT NULL COMMENT '昵称' ,
    `thumb` varchar(500) default '' NOT NULL COMMENT '头像' ,
    `address` varchar(500) default '' NOT NULL COMMENT '地址' ,
    PRIMARY KEY (`id`)
    )
    ENGINE=InnoDB
    DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
    COMMENT='会员信息修改暂存表'
    AUTO_INCREMENT=1;

    //创建索引,可参考:https://blog.csdn.net/u014518337/article/details/88179607
    CREATE [UNIQUE|fulltext] INDEX index_name ON table_name (column_name1[,column_name2...])//普通索引,唯一索引,组合索引,全文索引
    CREATE [UNIQUE|fulltext] INDEX index_name ON table_name (column_name1 [(length)] [ASC|DESC])//单列索引可以设置索引顺序,字符索引可以设置索引长度
    
    //创建视图
    CREATE VIEW view_name AS
    SELECT column_name(s)
    FROM table_name
    WHERE condition

    删除:drop

    //删除数据库
    DROP DATABASE [IF EXISTS] database_name
    
    //删除表
    DROP TABLE table_name
    
    //删除索引(mysql的语法)
    ALTER TABLE table_name DROP INDEX index_name
    
    //删除视图
    DROP VIEW <视图名1> [ , <视图名2> …]
    //删除字段
    ALTER TABLE table_name DROP COLUMN column_name
     

    修改:alter

    //修改数据库
    ALTER DATABASE dbname DEFAULT CHARSET SET utf8 COLLATE utf8_general_ci;
    
    //修改表名
    ALTER TABLE table_name rename to new_name;
    //修改表全局属性
    ALTER TABLE testalter_tbl 
    ENGINE=InnoDB //表引擎
    DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci //表数据的字符编码和排序比较规则
    COMMENT='城市表' //表注释
    AUTO_INCREMENT=123; //自增起始值
    
    //添加字段
    ALTER TABLE table_name 
    ADD column_name datatype [default,null,comment,character] [first|after column_name2]
    //eg
    alter table member add audit_state int(10) default 1 null comment '审核状态'G;
    
    //1. 添加单个字段
    alter table test add c4 varchar(2);

    //2. 添加多个字段
    alter table test add column sent_blacklist int(11) DEFAULT 0 COMMENT ' 我是注释1', add column sent_notexist int(11) DEFAULT 0 COMMENT '注释2', add column sent_error int(11) DEFAULT 0 COMMENT '注释3';

    #对比可以看到,添加多个字段需要"add column 字段名",而单个字段直接"add 字段名"。
    #添加多个字段中间的,不能换行添加会报错

    //删除字段 ALTER TABLE table_name DROP COLUMN column_name //修改字段 类型,默认值,是否null,注释,字符编码和排比规则(必须设置字段类型才能成功,即使不修改类型也需要加上datatype) ALTER TABLE table_name MODIFY column_name datatype [default,null,comment,character] //eg alter table member_update_store modify updated_at timestamp default ''G;
    //修改字段名称
    ALTER TABLE table_name CHANGE column_name new_name datatype; #datatype必须加上,否则失败

      modify和change的区别:https://www.cnblogs.com/liuurick/p/11627109.html

      modify和change都可以修改表的定义,但是change却需要写两次列名,不是很方便。但是change的优点是可以修改列名称,modify则不能

  • 相关阅读:
    每日日报16
    每日日报15
    每日日报14
    每日日报13
    每日日报12
    每日日报11
    每日日报10
    每日作业报告
    每日作业报告
    每日作业报告
  • 原文地址:https://www.cnblogs.com/tkzc2013/p/13218446.html
Copyright © 2011-2022 走看看