sql基础教程

来源:互联网 发布:网络歌曲吉祥如意 编辑:程序博客网 时间:2024/05/14 16:40

1. 创建表

CREATE TABLE 语句用于创建数据库中的表。

CREATE TABLE 表名称(列名称1 数据类型,列名称2 数据类型,列名称3 数据类型,....)

约束条件:
对于主键字段,在定义的数据类型后面加 PRIMARY KEY;
对于不可重复字段,在定义的数据类型后面加 UNIQUE
对于自增字段,在定义的数据类型后面加AUTO_INCREMENT;
对于有默认值字段,在定义的数据类型后面加 DEFAULT 默认值;
对于非空字段,在定义的数据类型后面加 NOT NULL;
对于外键字段,

CREATE TABLE book ( bid int PRIMARY KEY NOT NULL , name VARCHAR(50) , pid int ,CONSTRAINT book_pid_fk FOREIGN KEY(pid) REFERENCES person(pid))/* book_pid_fk与person中的pid为主-外键关系*//*CONSTRAINT 外键名 FOREIGN KEY(外键字段)REFERENCES 关联表名(关联字段)*/

2. 查询

  • 2.1 简单查询语句
    SELECT 语句用于从表中选取数据。
    结果被存储在一个结果表中(称为结果集)。
SELECT 列名称 FROM 表名称SELECT * FROM 表名称/*注释:SQL 语句对大小写不敏感。SELECT 等效于 select。*/
  • 2.2 起别名
SELECT 列名称 别名 FROM 表名称 别名SELECT 列名称 as 别名 FROM 表名称 as 别名
  • 2.3 distinct 关键字
    使用distinct 关键字可以消除重复的列,返回唯一的不同值。
SELECT distinct 列名称  FROM 表名称
  • 2.4 sql 中的运算
    四则运算
SELECT 列名称*12  FROM 表名称;SELECT 列名称+12  FROM 表名称.../*四则运算的列类型一般为数字类型*/

其他运算函数:
COUNT() 计数函数
MAX() 求出最大值函数
MIN() 求出最小值函数
AVG() 求平均数函数
SUM() 求和函数

SELECT SUM(列名称),SUM(列名称), AVG(列名称),MAX(列名称),MIN(列名称) FROM tableName;
  • 2.5 WHERE 关键字
    WHERE关键字的语法:
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值(条件)

下面的运算符可在 WHERE 子句中使用:
运算符

  • 2.6 ORDER BY 排序关键字
    ORDER BY 语句用于对结果集进行排序
    ORDER BY 语句默认按照升序(ASC)对记录进行排序。
    如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。
SELECT * FROM table1 t1,table2 t2 WHERE t1.id = t2.idORDER BY t1.id DESC;
  • 2.7 GROUP BY 分组关键字
    语法格式:
SELECT {DISTINCT} *| 查询列1 别名1, 查询列2 别名2, 查询列3 别名3,…..FROM 表名称1 别名1, 表名称2 别名2,……{WHERE 条件(S)}{GROUP BY 分组条件}{ORDER BY 排序字段 ASC|DESC}

3. 表结构修改

  • 3.1 ALTER 关键字

 ADD子句:增加新列和新的完整性约束条件

ALTER TABLE <基本表名> [ ADD <新列名> <数据类型> [ 完整性约束 ] ]

 DROP子句:删除指定的列 (sqlite 不支持)

ALTER TABLE <基本表名>  [ DROP COLUMN <列名> [CASCADERESTRICT]]

 MODIFY子句:修改原有列的宽度和数据类型

ALTER TABLE <基本表名>  [ MODIFY <列名> <数据类型> ]; 

CASCADE方式表示:在基本表中删除某列时,所有引用到该列的视图和约束也要一起自动地被删除。
RESTRICT方式表示:在没有视图或约束引用该属性时,才能在基本表中删除该列,否则拒绝删除操作。

-3.2 UPDATE 关键字
修改指定表中满足WHERE子句条件的元组
语句格式:

  UPDATE  <表名>    SET  <列名>=<表达式>[,<列名>=<表达式>…] │ROW =(元组)     [WHERE <条件>];
  • 3.3 DELETE 关键字
    语法格式:
DELETE       FROM     <表名>       [WHERE <条件>];

功能:
删除指定表中满足WHERE子句条件的元组;
WHERE子句:
指定要删除的元组,
缺省表示要删除表中的所有元组。

4. 多表查询

  • 4.1 多表查询概念
    以上教程我们进行的查询都是简单查询,都只针对一张表进行操作。当我们同时正对两张以上的表进行查询操作时,即为多表查询。

语法格式:

SELECT {DISTINCT} *| 查询列1 别名1, 查询列2 别名2, 查询列3 别名3,…..FROM 表名称1 别名1, 表名称2 别名2,……{WHERE 条件(S)}{ORDER BY 排序字段 ASC|DESC}
  • 4.2 笛卡尔积的概念
    笛卡尔(Descartes)乘积又叫直积。假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)}。可以扩展到多个集合的情况。类似的例子有,如果A表示某学校学生的集合,B表示该学校所有课程的集合,则A与B的笛卡尔积表示所有可能的选课情况。

    笛卡尔积的运算性质:
      由于有序对<x,y>中x,y的位置是确定的,因此A×B的记法也是确定 的,不能写成B×A.
      笛卡尔积也可以多个集合合成,A1×A2×…×An.
      笛卡尔积的运算性质. 一般不能交换.
      笛卡尔积,把集合A,B合成集合A×B,规定
      A×B={<x,y>½xÎAÙyÎB}
      在任意集合A上都可以定义笛卡尔积因为对任意两个集合A和B,用A中元素为第一元素,B中元素为第二元素构成有序对,所有这样的有序对组成的集合就是集合A和B的笛卡尔积.当集合A = B 时,笛卡尔积就记作A A.

笛卡尔积的案例:
  给出三个域:
  D1=SUPERVISOR ={ 张清玫,刘逸 }
  D2=SPECIALITY={计算机专业,信息专业}
  D3=POSTGRADUATE={李勇,刘晨,王敏}
  则D1,D2,D3的笛卡尔积为D:
  D=D1×D2×D3 =
  {(张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨),
  (张清玫,计算机专业,王敏),(张清玫,信息专业,李勇),
  (张清玫,信息专业,刘晨),(张清玫,信息专业,王敏),
  (刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨),
  (刘逸,计算机专业,王敏),(刘逸,信息专业,李勇),
  (刘逸,信息专业,刘晨),(刘逸,信息专业,王敏) }
  这样就把D1,D2,D3这三个集合中的每个元素加以对应组合,形成庞大的集合群。
  本个例子中的D中就会有2X2X3个元素,如果一个集合有1000个元素,有这样3个集合,他们的笛卡尔积所组成的新集合会达到十亿个元素。假若某个集合是无限集,那么新的集合就将是有无限个元素。

  • 4.3 多表查询的注意事项
    1. 由于多表查询是进行笛卡尔积,假设现在进行5张表的多表查询,每一张表中有1000条记录(实际情况也许比这个假设多很多),那么会有多少操作,多少结果?
      1000*1000*1000*1000*1000 = 1000^5
      这个操作所耗费的资源是不可想象的。
      所以在实际的开发中,我们要尽量的减少多表查询。
    2. 注意在多表查询中养成取别名的习惯
0 0
原创粉丝点击