zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    WCF双工通讯以及客户端间的间接通讯
    认识IoC
    学习“迷你ASP.NET MVC框架”后的小结
    MVP的PV模式与SC模式
    Android学习笔记(九) 视图的应用布局效果
    C# 动态编译
    C#中协变与抗变(逆变)
    线程池ThreadPool的初探
    关于异步的初步认识
    仿Office的程序载入窗体
  • 原文地址:https://www.cnblogs.com/steven_oyj/p/1900379.html
Copyright © 2011-2022 走看看