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 <列名> [CASCADE│RESTRICT]]
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 多表查询的注意事项
- 由于多表查询是进行笛卡尔积,假设现在进行5张表的多表查询,每一张表中有1000条记录(实际情况也许比这个假设多很多),那么会有多少操作,多少结果?
1000*1000*1000*1000*1000 = 1000^5
这个操作所耗费的资源是不可想象的。
所以在实际的开发中,我们要尽量的减少多表查询。 - 注意在多表查询中养成取别名的习惯
- 由于多表查询是进行笛卡尔积,假设现在进行5张表的多表查询,每一张表中有1000条记录(实际情况也许比这个假设多很多),那么会有多少操作,多少结果?
- SQL基础教程
- SQL基础教程
- SQL基础教程
- sql基础教程
- SQL基础教程
- SQL基础教程
- SQL 基础教程
- SQL基础教程
- SQL Server 2005基础教程
- SQL语句基础教程(一)
- SQL语句基础教程(二)
- SQL语句基础教程(三)
- MS SQL入门基础教程
- SQL基础教程--笔记
- 【SQL 基础教程】学习笔记
- SQL基础教程 学习计划
- SQL基础教程之函数
- SQL基础教程之其他
- Locators 定位器
- 分享!分享!分享!网易新闻iOS版使用的18个开源组件
- 字符串长度的计算与字符串比较
- python爬山算法
- 用通知进行两个界面之间的回调传值
- sql基础教程
- 编程的智慧
- XMLHttpRequest对象实例
- mysql 查询优化
- 关于背景图片
- opencv编译发展历程
- 深入分析Parquet列式存储格式
- QT 多线程事件通讯
- Selenium的PO模式