SQL 基础

SQL 基础

一、SQL简介

         现在SQL是基于SQL-86标准逐步修改出来的

二、MySQL使用入门

1、SQL分类

         SQL语句主要分为3类:

(1)      DDL:数据定义语句,用于定义数据库对象,例如:create、drop、alter

(2)      DML:数据操纵语句,用于添加、删除、更新和查询数据库记录,例如:insert

(3)      DCL:数据控制语句,用于控制不同数据段的访问权限和级别,例如:grant、revoke。

2、DDL语句

         即是对数据库内部的对象进行创建、删除、修改的操作语句。

         主要由DBA使用,开发人员较少使用。

(1)      创建数据库

创建db语句:create database dbname;

查看已有db语句:show databases;

         选择要操作的db语句:use dbname;

         查看数据库中所有数据表语句:show tables;

注:安装mysql时系统自带的语句有如下几个:

1)information_schema:主要存储系统中数据库对象信息,比如用户表信息、权限信息

         2)mysql:存储西游的用户权限信息

         3)test:测试数据库,任何用户都可以使用

(2)      删除数据库

删除数据库语句:drop database dbname;

(3)      创建表

创建一个表: create table tablename(列名 列值类型 约束,…. );

查看表定义:desc  tablename;

查看创建表的sql语句:show create table tablename;

(以上语句除了可以看到表定义语句,还可以看到存储引擎和字符集)

Mysql的表名是以目录形式存于磁盘的,所以表名约束与目录名一致。

(4)      删除表

删除表:drop table tablename;

(5)      修改表

修改表类型:alter table tablename modify [column] 列定义 [first|after 列名]

增加表字段:alter table tablename add [column] 列定义 [first|after 列名]

(默认增加的字段在最后面)

删除表字段:alter table tablename drop [column] 列名

字段改名:alter table tablename change [column] 旧列名 列定义 [first|after 列名]

修改字段排列顺序:[first|after列名]用于设置新增列的位置,first将列置于最前,after 列名是将该列置于某列之后。

更改表名:  alter table tablenamerename [to] 新表名

3、DML语句

DML是指对数据库中表记录的操作,主要包括表记录的插入、更新、删除和查询。

是开发人员使用最频繁的语句。

(1)      插入记录

插入语法:insert into tablename(filed1,… filedn) values(value1, …,valuen);

默认的字段值顺序是按表顺序,所以如果不写字段名称,就要将值按字段顺序来插入。

         可以一次性插入多条记录,每条记录间用逗号分隔,这是mysql的特性,可以使得Mysql在插入大量记录时,节省很多的网络开销,大大提高插入效果(可用于优化sanguo

(2)      更新记录

更新语法:update tablename set filedn = valuen [where condition];

在Mysql中,update命令可以同时更新多个表中数据,语法是:

update tablename set t1.filed1 = value1, tn.fileldn=valuen[where condition];

注:多表更新的语法更多是用在根据一个表的字段,来动态的更新另一个表的字段。

(3)      删除记录

删除语法:delete from tablename [where condition];

在Mysql中,delete命令可以同时删除多个表中数据,语法是:

Delete 表别名1,表别名2  from 表名1 表别名1,表名2表别名2 [where condition];

注:如果不加条件将会清空整个表,所以要非常小心。

(4)      查询记录

1)查询语法(最基本的):select * from tablename [where condition]

查询不重复记录的语法:select distinct列名 from 表名;

2)条件查询:select * from tablename where condition

3)排序和限制

order by按照某个字段排序:

select * from tablename [where condition] [order by fieldn [desc|asc]]

desc和asc是排序顺序关键字,desc表示按照字段进行降序排列,asc升序排列(默认)。

limit使得只显示一部分而不是全部:

select …[limitoffset_start, row_count]

默认的起始偏移量是0

4)聚合

汇总操作主要是针对按某个字段进行统计使用的。语法如下:

Select [字段列表] ,聚合函数名 from 表名

[where条件]

[group by字段列表]

[with rollup]

[having where条件]

常用的聚合函数有:sum、count、max、min

Group by表示要进行分类聚合的字段

With rollup是表明是否对分类聚合后的结果进行再汇总(即是合计)

Having表示对分类后的结果再进行条件的过滤

5)表连接

需要同时显示多个表中的字段时,就用表连接

内连接是仅选出两表中互相匹配的记录(最常用),外连接是选出其他不匹配的记录(包括左连接和右连接)。

Ex:select ename, deptname from emp, dept where emp.deptno=dept.deptno;

6)子查询

         进行查询时,需要的条件是另外一个select语句的结果,这个时间就要用到子查询,用于子查询的关键字有:in、not in、=、!=、exists、not exists等。

         MySQL4.1以前的版本不支持子查询。

7)记录联合

         将两个表的数据按照一定的查询条件查询出来后,将结果合并到一起显式出来,这时候需要用union和union all。

         Union all是把结果集直接合并到一起,而union是对union all结果去除重复记录。

Ex:  select deptno from emp

union all |union

select deptnofrom dept;

4、DCL语句

         主要用于DBA管理系统中的对象权限时使用,开发人员用的也少。

         主要是授权grant和收权revoke的使用。

Ex: grant select, insert on 数据库名.* to ‘用户名’@’localhost’identified by ‘123’

            revoke insert on 数据库名.* from ‘用户名’@’localhost’;

三、帮助的使用

使用MySQL安装后的自带的帮助文档

1、按照层次看帮助

         可以用“? contents”命令来显示所有可供查询的分类。

         然后可以使用“? 类别名称”来针对用户感兴趣的内容做进一步的查看。

2、快速查阅帮助

         可以使用”? 关键字”来快速查询某项语法

3、常用的网络资源

         官方下载: //dev.mysql.com/downloads/

         官方文档: //dev.mysql.com/docs

posted @ 2010-12-08 16:30  红脸书生  阅读(1546)  评论(0编辑  收藏  举报