常用SQL语句

SQL语句

DDL语句##

DDL是数据定义语言的缩写,简单来说,就是对数据库内部的对象进行创建、删除、修改等操作的语言。它和DML语句的最大区别是DML只是对表内部数据操作,而不涉及表的定义、结构的修改,更不会涉及其他对象。DDL语句更多的由数据库管理员(DBA)使用,开发人员一般很少使用。

  • 创建数据库 CREATE DATABASE dbname;
  • 查看数据库 SHOW DATABASES;
  • 选择数据库 USE dbname;
  • 查看数据表 SHOW TABLES;
  • 删除数据库 DROP DATABASE dbname;
  • 创建表 CREATE TABLE tablename(
    column_name1 column_type1 constraints,
    column_name2 column_type2 constraints,
    ......
    );
  • 查看表定义 DESC tablename;
  • 查看创建表的SQL语句 SHOW CREATE TABLE tablename;
  • 删除表 DROP TABLE tablename;
  • 修改表字段类型 ALTER TABLE tablename MODIFY column_name column_type;
  • 增加表字段 ALTER TABLE tablename ADD column_name column_type;
  • 删除表字段 ALTER TABLE tablename DROP column_name;
  • 字段改名 ALTER TABLE tablename CHANGE old_column_name new_column_name column_type;

注意:change和modify都可以修改表的定义,不同的是change后面需要写两次列名,不方便。但是change的优点是可以修改列名称,modify则不能。

  • 修改字段排列顺序 在MODIFU,ADD CHANGE语句后面加上FIRST|AFTER column_name可以修改字段在表中的位置。
  • 更改表名 ALTER TABLE tablename RENAME [TO] new_tablename;

DML语句##

  • 插入记录(字段名和值对应) INSERT INTO tablename (field1,field2,field3...)VALUES(value1,value2,value3...);
  • 插入记录(全部) INSERT INTO tablename VALUES(value1,value2,value3...);
  • 一次插入多条记录 INSERT INTO tablename (field1,field2,field3...)VALUES(value1,value2,value3...),(value1,value2,value3...),(value1,value2,value3...);
  • 更新记录 UPDATE tablename SET field1=value1,field2=value2,field3=value3...[WHERE contidion];
  • 同时更新多个表中的数据
  • 删除记录 DELETE FROM tablename [WHERE CONDITION];
  • 同时删除多个表中的数据 DELETE a,b FROM tb1 a,tb2 b WHERE a.f1=b.f2 AND a.f1=n;(删除表tb1,tb2中f1等于f2等于n的字段)
  • 查询 SELECT * FROM tablename [WHERE CONDITION];
  • 查询特定字段 SELECT f1,f2,f3 FROM tablename;
  • 用DISTINCT关键字去重复查询 SELECT DISTINCT f1 FROM tablename;(查询多个字段将查询出字段一一对应不重复的内容)
  • 条件查询 SELECT * FROM tablename WHERE f1=v1;(v1如果是字符串必须用""括起来)

注意:WHERE后面的条件除了=以外还可以用>,<,>=,<=,!=等比较运算符;多个条件之间还可以用or、and等逻辑运算符进行多条件联合查询。

  • 排序和限制 SELECT * FROM tablename [WHERE CONDITION] ORDER BY f1 DESC|ASC,f2 DESC|ASC;

注意:默认升序排列,每个字段可以有不同的排列顺序,如果排序字段的值一样,则值相同的字段按照第二个排序字段进行排序,依次类推。如果只有一个排序字段,则这些字段相同的记录将会无序排列。

  • 查询部分数据 SELECT * FROM tablename ORDER BY f1 LIMIT offset_start(起始偏移量默认为0),row_count;

显示tablename表中按照f1排序后从offset_start+1条记录开始的row_count条记录

  • 聚合 41页
  • 表连接:当需要同时显示多个表中的数据时,就可以用表连接来实现这样的功能。从大类上分,表连接分为内连接外连接,它们之间的最主要的区别是,内连接仅选出两张表中互相匹配的记录,而外连接会选出其他不匹配的记录。
    内连接:SELECT f1,f2 FROM t1,t2 WHERE t1.f=t2.f;(查询所有f1对应f2的数据,f字段是两个表中的相同字段)
    外(左/右)连接:SELECT f1,f2 FROM t1 LEFT JOIN t2 ON t1.f=t2.f;(查询出所有的f1,即使f1不对应f2,内连接仅仅列出了存在f2的f1;)
  • 子查询
  • 记录联合 SELECT语句 UNION/UNION ALL SELECT语句; UNION和UNION ALL的主要区别是UNION ALL是把结果直接合并在一起,而UNION是将UNION ALL后的结果进行一次DISTINCT,去除重复记录后的结果。
posted @ 2016-07-27 15:14  宋先生。  阅读(67)  评论(0)    收藏  举报