create table t_students(
id int not null,
name varchar(10) not null Primary Key (id, name),
age int,
dept_id int
注:联合主键的列需要限制非空约束。
第二种方法,给已有表增加联合主键:
create table t_dept(
dept_id int,
dept_name varchar(20),
stamp varchar(100)
--先设置非空约束
Alter table t_dept alter column dept_id int not null
Alter table t_dept alter column dept_name varchar(20) not null
--增加主键
Alter table t_dept add constraint pk_t_dept primary key( dept_id, dept_name)
第一种方法,新建表时增加联合主键:create table t_students(id int not null,name varchar(10) not null Primary Key (id, name),age int,dept_id int)注:联合主键的列需要限制非空约束。第二种方法,给已有表增加联合主键:create table t_dept(dept...
将多个键设置成主键时提示:无法将多个 PRIMARY KEY 约束添加到表 ‘表名’。
其实MS SQL是不能这样设置2个主键create table hello(id int primary key,name varchar(40) primary key);
应该是create table hello(id int,name varchar(20),CONSTRAINT 别名 PRIMAR...
《SQL Server 2008宝典》全面介绍了SQL Server 2008各方面的知识,全书由6部分组成:第1部分为数据库的基础篇,介绍了数据库的类型、概念、对象、SQL语言等;第2部分为SQLServer 2008的准备篇,介绍了SQL Server 2008的功能、特性、各版本的比较、安装方法、SQL Server 2008的服务、客户端的工具等;第3部分为SQL Server 2008的基本操作篇,介绍如何管理与配置SQL Server 2008服务器、如何创建数据库和数据表、如何对数据库里的数据进行操作;第4部分为数据库管理篇,介绍如何使用T-SQL程序对数据进行复杂的运算,以及如何使用视图、存储过程、触发器、索引、用户定义数据类型、用户定义函数、全文索引、游标、事务和锁、统计信息和同义词等方面的知识;第5部分为SQL Server高级技术,介绍如何进行数据库备份与恢复、如何规划数据库、如何保证数据库的安全、复制与发布、自动化管理、如何使用性能工具优化数据库、数据的导入导出、SQL Server邮件的使用、Analysis Services、Reporting Services、SQL Server与XML的应用,以及如何使用客户端和应用程序访问SQL Server;第6部分为SQL Server 2008改进篇,介绍了SQL Server 2008相对于之前版本进行了哪些方面的重大改进和优化,进一步帮助读者了解SQL Server 2008更多的独有特性。
《SQL Server 2008宝典》适合SQL Server 2008的初学者学习,也适合子数据库的管理人员和开发人员阅读和参考。
《SQL Server 2008宝典》:实例丰富,内容充实。书中针对每一个知识点列举了大量实例来说明该功能如何实现,全书共有超过500个精彩实例。
讲解通俗,步骤详细。通过通俗易懂的语言讲解SQL Server 2008的各个强大功能,并配以插图讲解和详细的步骤说明,帮助读者快速掌握实用技能。
由浅入深,难易穿插。《SQL Server 2008宝典》面向入门级和提高级两类读者,每个知识点都采用由浅入深的讲解方式,并穿插介绍重点和难点。
提供源码,方便学习。书中涉及到的T—SQL程序在网站上提供下载,打开相应SQL文件即可直接执行其中的代码。
SQL Server 2008是一个能用于大型联机事务处理、数据仓库和电子商务等方面应用的数据库平台,也是一个能用于数据集成、数据分析和报表解决方案的商业智能平台,为用户提供了强大、集成、便于使用的工具,使系统管理员与普通用户能更方便、更快捷地管理数据库或设计、开发应用程序。
封面 -33
封底 803
扉页 -32
版权 -31
前言 -30
目录 -26
第1部分 基础篇 1
第1章 认识数据库 2
1.1 数据库的类型 2
1.1.1 结构型数据库 2
1.1.2 网络型数据库 2
1.1.3 关系型数据库 2
1.1.4 面向对象型数据库 3
1.2 数据库的基本概念 3
1.2.1 数据 3
1.2.2 数据库 3
1.2.3 数据库管理系统 3
1.2.4 数据库系统 3
1.3 常见的数据库对象 3
1.3.1 表与记录 4
1.3.2 主键与外键 4
1.3.3 索引 4
1.3.4 约束 5
1.3.5 视图 5
1.3.6 关系图 5
1.3.7 默认值 5
1.3.8 规则 5
1.3.9 存储过程 6
1.3.10 触发器 6
1.3.11 用户和角色 6
1.4 数据库管理系统的基本功能 6
1.4.1 定义数据 6
1.4.2 处理数据 6
1.4.3 保证数据安全 6
1.4.4 备份和恢复数据 6
1.5 SQL语言简介 6
1.5.1 SQL语言的历史 7
1.5.2 SQL语言的优点 7
1.5.3 SQL语言分
最好的sql教程
轻举技术之“纲”,张合用之“目”,锻造SQL高可用性数据库应用指南从理论到实践,凝聚SQL主流数据库最前沿的技术要领,本书将深入浅出讨论。
本书特色:主要介绍SQL的语法规则及在实际开发中的应用,并且对SQL在MySQL、MS SQL Server、Oracle和DB2中的差异进行了分析;详细讲解数据库对增、删、改、查等SQL的支持并给出了相应的SQL应用案例;透彻分析函数、子查询、表连接、不同DBMS中的SQL语法差异、SQL调优、NULL值处理、事务、开窗函数等高级技术;通过对实际案例开发过程的详细分析,使读者掌握 SQL的综合应用技巧。
本书主要介绍SQL的语法规则及在实际开发中的应用,并且对SQL在MySQL、MS SQL Server、Oracle和DB2中的差异进行了分析。本书分为3部分:第1部分为基础篇,主要讲解数据库对增、删、改、查等SQL的支持,给出了这些 SQL的应用案例;第2部分为进阶篇,讲解了函数、子查询、表连接、不同DBMS中的SQL语法差异、SQL调优、NULL值处理、事务、开窗函数等高级技术;第3部分为案例篇,对前两部分的知识进行了综合运用。
本书适合程序开发人员及数据库工程师参考学习,也可作为高等院校相关专业师生的参考书。
第1章 数据库入门
1.1 数据库概述
1.1.1 数据库与数据库管理系统
1.1.2 数据库能做什么
1.1.3 主流数据库管理系统介绍
1.2 数据库基础概念
1.2.1 Catalog
1.2.2 表(Table)
1.2.3 列(Column)
1.2.4 数据类型(DataType)
1.2.5 记录(Record)
1.2.6 主键(PrimaryKey)
1.2.7 索引(Index)
1.2.8 表关联
1.2.9 数据库的语言——SQL
1.2.10 DBA与程序员
第2章 数据表的创建和管理
2.1 数据类型
2.1.1 整数类型
2.1.2 数值类型
2.1.3 字符相关类型
2.1.4 日期时间类型
2.1.5 二进制类型
2.2 通过SQL语句管理数据表
2.2.1 创建数据表
2.2.2 定义非空约束
2.2.3 定义默认值
2.2.4 定义主键
2.2.5 定义外键
2.2.6 修改已有数据表
2.2.7 删除数据表
2.2.8 受限操作的变通解决方案
第3章 数据的增、删、改
3.1 数据的插入
3.1.1 简单的INSERT语句
3.1.2 简化的INSERT语句
3.1.3 非空约束对数据插入的影响
3.1.4 主键对数据插入的影响
3.1.5 外键对数据插入的影响
3.2 数据的更新
3.2.1 简单的数据更新
3.2.2 带WHERE子句的UPDATE语句
3.2.3 非空约束对数据更新的影响
3.2.4 主键对数据更新的影响
3.2.5 外键对数据更新的影响
3.3 数据的删除
3.3.1 简单的数据删除
3.3.2 带WHERE子句的DELETE语句
第4章 数据的检索
4.1 SELECT基本用法
4.1.1 简单的数据检索
4.1.2 检索出需要的列
4.1.3 列别名
4.1.4 按条件过滤
4.1.5 数据汇总
4.1.6 排序
4.2 高级数据过滤
4.2.1 通配符过滤
4.2.2 空值检测
4.2.3 反义运算符
4.2.4 多值检测
4.2.5 范围值检测
4.2.6 低效的“WHERE 1=1”
4.3 数据分组
4.3.1 数据分组入门
4.3.2 数据分组与聚合函数
4.3.3 HAVING语句
4.4 限制结果集行数
4.4.1 MySQL
4.4.2 MS SQL Server 2000
4.4.3 MS SQL Server 2005
4.4.4 Oracle
4.4.5 DB2
4.4.6 数据库分页
4.5 抑制数据重复
4.6 计算字段
4.6.1 常量字段
4.6.2 字段间的计算
4.6.3 数据处理函数
4.6.4 字符串的拼接
4.6.5 计算字段的其他用途
4.7 不从实体表中取的数据
4.8 联合结果集
4.8.1 简单的结果集联合
4.8.2 联合结果集的原则
4.8.3 UNION ALL
4.8.4 联合结果集应用举例
第5章 函数
5.1 数学函数
5.1.1 求绝对值
5.1.2 求指数
5.1.3 求平方根
5.1.4 求随机数
5.1.5 舍入到最大整数
5.1.6 舍入到最小整数
5.1.7 四舍五入
5.1.8 求正弦值
5.1.9 求余弦值
5.1.10 求反正弦值
5.1.11 求反余弦值
5.1.12 求正切值
5.1.13 求反正切值
5.1.14 求两个变量的反正切
5.1.15 求余切
5.1.16 求圆周率π值
5.1.17 弧度制转换为角度制
5.1.18 角度制转换为弧度制
5.1.19 求符号
5.1.20 求整除余数
5.1.21 求自然对数
5.1.22 求以10为底的对数
5.1.23 求幂
5.2 字符串函数
5.2.1 计算字符串长度
5.2.2 字符串转换为小写
5.2.3 字符串转换为大写
5.2.4 截去字符串左侧空格
5.2.5 截去字符串右侧空格
5.2.6 截去字符串两侧的空格
5.2.7 取子字符串
5.2.8 计算子字符串的位置
5.2.9 从左侧开始取子字符串
5.2.10 从右侧开始取子字符串
5.2.11 字符串替换
5.2.12 得到字符的ASCII码
5.2.13 得到一个ASCII码数字对应的字符
5.2.14 发音匹配度
5.3 日期时间函数
5.3.1 日期、时间、日期时间与时间戳
5.3.2 主流数据库系统中日期时间类型的表示方式
5.3.3 取得当前日期时间
5.3.4 日期增减
5.3.5 计算日期差额
5.3.6 计算一个日期是星期几
5.3.7 取得日期的指定部分
5.4 其他函数
5.4.1 类型转换
5.4.2 空值处理
5.4.3 CASE函数
5.5 各数据库系统独有函数
5.5.1 MySQL中的独有函数
5.5.2 MS SQL Server中的独有函数
5.5.3 Oracle中的独有函数
第6章 索引与约束
6.1 索引
6.2 约束
6.2.1 非空约束
6.2.2 唯一约束
6.2.3 CHECK约束
6.2.4 主键约束
6.2.5 外键约束
第7章 表连接
7.1 表连接简介
7.2 内连接(INNER JOIN)
7.3 不等值连接
7.4 交叉连接
7.5 自连接
7.6 外部连接
7.6.1 左外部连接
7.6.2 右外部连接
7.6.3 全外部连接
第8章 子查询
8.1 子查询入门
8.1.1 单值子查询
8.1.2 列值子查询
8.2 SELECT列表中的标量子查询
8.3 WHERE子句中的标量子查询
8.4 集合运算符与子查询
8.4.1 IN运算符
8.4.2 ANY和SOME运算符
8.4.3 ALL运算符
8.4.4 EXISTS运算符
8.5 在其他类型SQL语句中的子查询应用
8.5.1 子查询在INSERT语句中的应用
8.5.2 子查询在UPDATE语句中的应用
8.5.3 子查询在DELETE语句中的应用
第9章 主流数据库的SQL语法差异解决方案
9.1 SQL语法差异分析
9.1.1 数据类型的差异
9.1.2 运算符的差异
9.1.3 函数的差异
9.1.4 常用SQL的差异
9.1.5 取元数据信息的差异
9.2 消除差异性的方案
9.2.1 为每种数据库编写不同的SQL语句
9.2.2 使用语法交集
9.2.3 使用SQL实体对象
9.2.4 使用ORM工具
9.2.5 使用SQL翻译器
9.3 CowNewSQL翻译器
9.3.1 CowNewSQL支持的数据类型
9.3.2 CowNewSQL支持的SQL语法
9.3.3 CowNewSQL支持的函数
9.3.4 CowNewSQL的使用方法
第10章 高级话题
10.1 SQL注入漏洞攻防
10.1.1 SQL注入漏洞原理
10.1.2 过滤敏感字符
10.1.3 使用参数化SQL
10.2 SQL调优
10.2.1 SQL调优的基本原则
10.2.2 索引
10.2.3 全表扫描和索引查找
10.2.4 优化手法
10.3 事务
10.3.1 事务简介
10.3.2 事务的隔离
10.3.3 事务的隔离级别
10.3.4 事务的使用
10.4 自动增长字段
10.4.1 MySQL中的自动增长字段
10.4.2 MS SQL Server中的自动增长字段
10.4.3 Oracle中的自动增长字段
10.4.4 DB2中的自动增长字段
10.5 业务主键与逻辑主键
10.6 NULL的学问
10.6.1 NULL与比较运算符
10.6.2 NULL和计算字段
10.6.3 NULL和字符串
10.6.4 NULL和函数
10.6.5 NULL和聚合函数
10.7 开窗函数
10.7.1 开窗函数简介
10.7.2 PARTITION BY子句
10.7.3 ORDER BY子句
10.7.4 高级开窗函数
10.8 WITH子句与子查询
第11章 案例讲解
11.1 报表制作
11.1.1 显示制单人详细信息
11.1.2 显示销售单的详细信息
11.1.3 计算收益
11.1.4 产品销售额统计
11.1.5 统计销售记录的份额
11.1.6 为采购单分级
11.1.7 检索所有重叠日期销售单
11.1.8 为查询编号
11.1.9 标记所有单内最大销售量
11.2 排序
11.2.1 非字段排序规则
11.2.2 随机排序
11.3 表间比较
11.3.1 检索制作过采购单的人制作的销售单
11.3.2 检索没有制作过采购单的人制作的销售单
11.4 表复制
11.4.1 复制源表的结构并复制表中的数据
11.4.2 只复制源表的结构
11.5 计算字符在字符串中出现的次数
11.6 去除最高分、最低分
11.6.1 去除所有最低、最高值
11.6.2 只去除一个最低、最高值
11.7 与日期相关的应用
11.7.1 计算销售确认日和制单日之间相差的天数
11.7.2 计算两张销售单之间的时间间隔
11.7.3 计算销售单制单日期所在年份的天数
11.7.4 计算销售单制单日期所在月份的第一天和最后一天
11.8 结果集转置
11.8.1 将结果集转置为一行
11.8.2 把结果集转置为多行
11.9 递归查询
11.9.1 Oracle中的CONNECT BY子句
11.9.2 Oracle中的SYS_CONNECT_BY_PATH()函数
11.9.3 My SQL Server和DB2中递归查询
附录A 常用数据库系统的安装和使用
A.1 DB2的安装和使用
A.2 MySQL的安装和使用
A.3 Oracle的安装和使用
A.4 Microsoft SQL Server的安装和使用
有的业务场景可能用2个字段或者多个字段来确定一条记录,说明这2个字段或多个字段都不是唯一的,可以分别重复对表设置组合主键方法如下:1.创建表sql代码CREATE TABLE `combina_test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`dd` varchar(25) DEFAULT NULL,
`keyword` varchar(25) D...
foreign key(外键)
用于定义主表和从表之间的关系;外键约束要定义在从表上,主表则必须具有主键约束
或是UNIQUE约束,要求外键列数据必须在主表的主键列存在或者为null
1.存储引擎必须是innodb,这样的表才支持外键
2.外键字段类型要和那个表的主键字段类型一致(长度可以不一样)
FOREIGN KEY(本表字段名) REFERE
添加字段3 alter table tbname add 字段3 varchar(10);
删除主键 alter table tbname drop primary key;
添加主键 alter table tbname add primary key(字段1,2,3);
在 SQL Server 中,可以使用 ALTER TABLE 语句来给表增加列。具体操作步骤如下:
1. 打开 SQL Server Management Studio,连接到需要操作的数据库。
2. 找到需要增加列的表,右键点击该表,选择“设计”选项。
3. 在表设计界面中,点击最下方的“添加列”按钮,增加一列。
4. 在“列名”一栏中,输入需要增加的列的名称。
5. 在“数据类型”一栏中,选择需要的数据类型。
6. 如果需要设置该列为主键,则在“标识”一栏中,勾选“标识列”。
7. 如果需要设置该列为非空,则在“允许空值”一栏中,取消勾选。
8. 点击“保存”按钮,保存修改。
9. 在弹出的对话框中,选择“是”以保存对表的修改。
以上就是给 SQL Server 表增加列的操作步骤。注意,在执行 ALTER TABLE 语句修改表结构之前,一定要备份数据,以免造成不必要的损失。
Python使用time.strftime报错:‘locale‘ codec can‘t encode character ‘\u5e74‘ in position 2: encoding error
mysql201906:
xshell中出现中文乱码解决方法
wyl677:
SQL Server 中查找子串在字符串中的位置的函数PATINDEX()和CHARINDEX()
itnmg0520:
Python使用中报错信息:AttributeError: ‘builtin_function_or_method‘ object has no attribute ‘randint‘
xhweng: