#SQL语法

###数据库

  • 连接: mysql -uroot -proot
  • 创建: create database databaseName [character set utf8/gbk] ;
  • 使用: use databaseName
  • 查看: show databases;
  • 查看数据库定义信息: show create database databaseName;
  • 删除: drop database databaseName
  • 修改: alter database databaseName character set utf8 [collate 校对规则];
  • 查看当前使用的数据库: select database();

###表

  • 创建: create table tableName(id int primary key auto_increment,username varchar(40) not null unique,password varchar(40) not null,date date);
  • 查看表: show tables;
  • 查看某个表结构: desc tables;
  • 删除表: drop table tableName;
  • 修改表:
    • 添加列: alter table tableName add colName varchar(40) unique not null;
    • 删除列: alter table tableName drop colName;
    • 修改列类型、长度和约束: alter table tableName modify colName int(150);
    • 修改列名称: alter table tableName change oldColName newColName varchar(40) not null unique;
    • 修改表名: rename table oldTableName to newTableName;
    • 修改表的字符集: alter table tableName character set gbk/utf8;

###记录

  • 插入:
    • 格式1: - insert into tableName (colName1,colName2,…) values (value1,value2,…);
      • 格式2: insert into tableName values (value1,value2,…);
    • 中文乱码,修改:找到MySQL的安装路径下的my.ini文件,修改文件中[client]下的字符集default-character-set=gbk,重启mysql,services.msc
  • 修改: update tableName set colName=value,colName2=value2,… [where 条件];
  • 删除: delete from tableName [where 条件]
  • 查询: S(select)… F(from)…W(where)…G(group by)…H(having)…O(order by);
    • select [/colName1,colName2,… [as nickname]]* from tableName [where 条件];
      • 条件查询:
    • , < , >= , <= , <> ,=

    • like:模糊查询
      • like可以进行模糊查询,在like子句中可以使用或者%作为占位符。只能代表一个字符,而%可以代表任意个字符。
      • like ‘李_’ :名字中必须是两个字,而且是姓李的。
      • like ‘李%’ :名字中姓李的学生,李子后可以是1个或任意个字符。
      • like ‘%四’ :名字中以四结尾的。
      • like ‘%王%’ :只要名称中包含这个字就可以。
    • in:范围查询
      • select * from exam where english in (69,75,89);
    • 条件关联:and , or ,not
      • 排序查询: order by 字段名称 asc/desc;
    • select * from exam where name like ‘李%’ order by chinese desc,english asc;
      • 聚合函数:
    • sum() select sum(english + chinese + math) from exam;
    • count() select count(*) from exam;
    • max() select max(math) from exam;
    • min() select min(chinese) from exam;
    • avg() select avg(chinese) from exam;
      • 分组查询: select product,count(*) from orderitem group by product;
        • where的子句后面不能跟着聚合函数。如果现在使用带有聚合函数的条件过滤(分组后条件过滤)需要使用一个关键字having
          • select product,sum(price) from orderitem group by product having sum(price) > 5000 order by sum(price) asc;
文章目录
  1. 1. #SQL语法
|