MySql 入门(1)

来源:互联网 发布:怎么用邮箱注册淘宝 编辑:程序博客网 时间:2024/06/08 11:49

SQL 分类:

DDL:定义数据语言,这些语句定义了不同的数据段,数据库,表,列,索引等数据库对象的定义,例如create, drop ,alter等
DML:数据操纵语句,用于添加,删除,更新和查询数据库记录,并检查数据完整性,常用的语句关键字主要包括insert,delete,update和select等
DCL:数据控制语句,用于控制不同的数据段直接的许可和访问级别的语句,这些语句定义了数据库,表,字段,用户的访问权限和安全级别。主要的语句包括grant,revoke等。

mysql自动创建的表:

information_scheme:主要存储系统中的一些数据库对象信息,比如用户表信息,列信息,权限信息,字符集信息,分区信息等
cluster:存储了系统的集群信息
mysql:存储了系统的用户权限信息
test:系统自动创建的测试数据库,任何用户都可以使用。

change 和 modify都可以修改表的定义,不同的时change后面要写两次表名,不太方便,但是change可以修改表名,modify做不到。

DML 格式:

INSERT INTO tablename (field1,field2,……fieldn) VALUES(value1,value2,……valuesn);
UPDATE tablename SET field1=value1,field2.=value2,……fieldn=valuen [WHERE CONDITION]
UPDATE t1,t2…tn set t1.field1=expr1,tn.fieldn=exprn [WHERE CONDITION]
DELETE FROM tablename [WHERE CONDITION]
DELETE t1,t2…tn FROM t1,t2…tn [WHERE CONDITION]
SELECT * FROM tablename [WHERE CONDITION]
SELECT * FROM tablename [WHERE CONDITION] [ORDER BY field1 [DESC|ASC],field2 [DESC|ASC],……fieldn [DESC|ASC]] 排序
SELECT ……[LIMIT offset_start,row_count] 显示一部分数据,起点, 步长

SQL聚合语法:

SELECT [field1,field2,……fieldn] fun_nameFROM tablename[WHERE where_contition][GROUP BY field1,field2,……fieldn[WITH ROLLUP]][HAVING where_contition]
  1. fun_name表示要做的聚合操作,也就是聚合函数,常用的有sum(求和)、count(*)(记
    录数)、max(最大值)、min(最小值)
  2. GROUP BY关键字表示要进行分类聚合的字段,比如要按照部门分类统计员工数量,部门
    就应该写在group by后面。
  3. WITH ROLLUP是可选语法,表明是否对分类聚合后的结果进行再汇总。
  4. HAVING关键字表示对分类后的结果再进行条件的过滤。

表连接

当需要同时显示多个表中的字段时,就可以用表连接来实现这样的功能。
select ename,deptname from emp,dept where emp.deptno=dept.deptno;
连接分为内连接和外连接,区别主要为内连接仅会包含两者共有的,但是外连接会以一个为准,列出所有数据,哪怕另一边没有数据。
外连接分为左连接和右连接,本质是一样的,凡是放在左边的都是完全的数据。

子查询

某些情况下,当我们查询的时候,需要的条件是另外一个select语句的结果,这个时候,就
要用到子查询。用于子查询的关键字主要包括in、not in、=、!=、exists、not exists等。
select * from emp where deptno in(select deptno from dept);
子查询和表连接,有时候可以相互转换:
select * from emp where deptno in(select deptno from dept);
等价于
select emp.* from emp ,dept where emp.deptno=dept.deptno;

记录联合

我们经常会碰到这样的应用,将两个表的数据按照一定的查询条件查询出来后,将结果合并
到一起显示出来,这个时候,就需要用union和union all关键字来实现这样的功能,

SELECT * FROM t1UNION|UNION ALLSELECT * FROM t2……UNION|UNION ALLSELECT * FROM tn;

UNION和UNION ALL的主要区别是UNION ALL是把结果集直接合并在一起,而UNION是将
UNION ALL后的结果进行一次DISTINCT,去除重复记录后的结果。