SQL是Structure Query Language(结构化查询语言)的缩写。
SQL主要可以分为三个类别:
1.DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象。常用的关键字有: create 、drop、alter等。
2.DML(Data Manipulation Language)语句:数据库操纵语言,用于添加,删除,更新和查询数据库,检查数据完整性。常用的语句关键字:insert 、delete 、 update和select等。
3.DCL(Data Control Language)语句:数据库控制语言,用于控制不同的数据段直接的许可和访问级别的语句。这些语句定义了数据库,表,字段,用户的访问权限和安全级别。主要的关键字包括:grant、revoke等。
DDL语句:
DDL是数据库定义语言的缩写,是对数据库内部的对象进行创建、删除、修改等操作的语言。
1).创建数据库:CREATE DATABASE dbname;
2).查看数据库:SHOW DATABASES;
3).选择要操作的数据:USE dbname;
4).查看所有数据表:SHOW TABLES;
5).删除数据库:DROP DATABAES dbname;
6).创建表:CREATE TABLE tablename;
7).查看表的定义:DESC tablename / SHOW CREATE TABLE tablename;
8).删除表:DROP TABLE tablename;
9).修改表类型: MODIFY,增加表字段:ADD,删除表字段:DROP,字段改名:CHANGE
注意:change 和 modify 都可以修改表的定义,不同的是 change 后面需要写两次列名,不方便,但是 change 的优点是可以修改列名称,modify 则不能。
DML语句:
DML是指对数据库中表记录的操作,主要包括了插入,更新,删除,查询等开发人员日常使用最频繁的操作。
1.插入记录:INSERT INTO tablename (字段1,字段2,....) VALUES(value1,value2,...);
2.更新记录:UPDATE tablename SET 字段1=value1,字段2=value2,.... [WHERE CONDITION];
更新多表:UPDATE t1,t2... SET t1.字段1=expr1,t2.字段1=expr1.... [WHERE CONDITION];
注意:多表更新的语法更多地用来根据一个表的字段来动态的更新另一个表的字段。
3.删除记录:DELETE FROM tablename [WHERE CONDITION];
删除多表:DELETE t1,t2,... FROM t1,t2,... [WHERE CONDITION];
注意:不管是单表还是多表删除,不加 where 条件都会把表的所有记录删除,操作时一定要小心。
4.查询记录:SELETE * FROM tablename [WHERE CONDITION];
查询时常用的关键字:DISTINCT(去重),ORDER BY(排序,DESC/ASC ),LIMIT(显示的行数--解释不太规范),GROUP BY(分类),HAVING(对分类后的结果进行筛选),
WITH ROLLUP(对分类聚合后的结果进行再汇总),聚合函数(sum<求和>,max<最大值>,min<最小值>,count<记录数>)
WHERE后面的条件是一个字段用=比较,除了=以外,还可以使用 >,<,<=,>=,!=等比较运算符;多个条件直接还可以使用or 、and等逻辑运算符进行多条件查询。
5.表连接:表连接分为外链接和内连接,他们的主要区别是,内连接仅选出两张表内互相匹配的记录,而外连接会选出其他不匹配的记录,我们常用的是内连接。
外连接又分为左连接和右连接,右连接和左连接之间类似,可以互相转化。
6.子查询:某些情况下,当进行查询的时候,需要的条件是一个select的结果,这个时候就会用到子查询,子查询会用到的关键字有:in、not in 、=、!=、exists、not exists等。
如果子查询记录数唯一,可以用=代替in;
注意:子查询和表连接之间的转换主要应用于两个方向:
表连接在很多情况下用于优化子查询,
MySql4.1以前的版本不支持子查询,需要用表连接来实现子查询的功能。
7.记录联合:将两个表的数据按照一定的查询条件查询出来后,将结果合并到一起显示出来。关键字:UNION 和 UNION ALL ,UNION ALL是把结果集合并到一起,而UNION则是进行了一次DISTINCT,去除重复记录。
DCL语句是DBA用来管理系统中的对象权限时使用,一般开发人员很少使用,常用的关键字有:grant , revoke等;
总结:MySQL在变种的sql基础上进行了很多扩展,本文章只是对一些简单的常用语法进行了汇总,有未曾写到的东西还请查询官方文档。