跳转至

sql命令总结

* / % binary greatest() least() ASCII() replace() week() yearweek() date_add() date_format()
mysql版本:select version();
当前登录用户:select user();
当前日期'年-月-日 时-分-秒':select now();
'年-月-日': select curdate();
'时-分-秒': select curtime();

system clear;

sql不区分大小写!

create      insert      ;     drop      delete      ;      alter      update      ;      show      select


数据库

创建:create database [if not exists] database_name default charset utf8 collate utf8_general_ci;
删除库:drop database database_name;
修改: alter database database_name charset latin1;
查看:show databases;
     查看指定数据库的创建信息:show create database database_name;
     返回当前使用的数据库的名称'可以设置列别名': select database() [as 'column_name'];

连接:mysql -uroot -p
退出:exit
使用:use database_name;


数据表

创建:
     create table [if not exists] table_name (
             列名 类型 约束,
             [列名 类型 约束]
     )default charset=utf8mb4; 删除表:drop table [if exists] table_name;
修改:alter table table_name add|modify|change|rename to|drop;
        添加字段:alter table 表名 add 列名 类型 约束 [after|frist table_field];
        删除字段:alter table 表名 drop column 列名;
        修改字段类型:alter table table_name modify column 列名 类型;
        修改字段类型 + 名称: alter table 表名 change 原列名 新列名 新类型;
        默认值:
                修改字段默认值 alter table 表名 alter 列名 set default 1000;
                删除字段默认值 alter table 表名 alter 列名 drop default ;
        表名:
                alter table 旧表名 rename 新表名;
                rename table 旧表名 to 新表名;
        修改存储引擎:
                alter table table_name engine=innodb;
查看:
        哪些表: show tables;
        表结构:desc table_name [字段名]; -- 可以只看其中某一字段的结构
        创建表结构的sql语句: show create table table_name[\G]; -- 表名加\G查看表详细信息

复制表:
        create table t6 select * from t5; -- 表结构和数据
        create table t6 select * from t5 where 1<0; -- 表结构 空表
克隆表:like|as


表记录

增加:insert into table_name values|set ... 共有四种方式(全列|指定列|多行批量|使用set子句)
        多行批量: 若不指定列则所有列的字段值都要一一对应赋值.
                insert into table_name[(字段名,字段名...)] values (字段值,字段值...),(字段值,字段值...);
        使用set子句: 可以不按照列顺序插入数据,对允许空值的列可以不插入.
                insert into table_name set 第2列字段值='',第4列字段值='';
        插入查询结果: 创建一个B表,将A表中的所有数据插入到B表中
insert into B select * from A;
删除记录:delete from table_name where 条件;
修改:update table_name set 字段1=值1[,字段2=值2,...] [where条件];
        replace into table_name values (字段值,字段值,字段值...);
        <举栗>
        update tb1 set age=age+1 where id=2; -- 整型 age在原有基础上加1
        update L3 set name=concat(name,"123") where id=2; -- concat一个函数,可以拼接字符串

查看:!!!!

清空表:
        delete from table_name;
        一条一条的删除记录 若有自增id,新增的数据id以删除前的最后一个id值的下一个作为起始值.
        truncate table_name;
        直接清空表 适用于数据量大,速度快,无法回滚,且新id从零开始.


ps: 若在windows系统中,插入中文字符,select的结果为空白,可以将所有字符编码统一设置成gbk!