数据库知识总结
1、创建数据库(命令)
Create database BBS On
(name=BBS_dat , filename=’E:\?\BBS.mdf’) Log on
(name=BBS_log , filename=’E:\?\BBS.ldf’)
2、创建关系(表)(命令)
Create table stuInfo
(stuName varchar(20) not null ,
stuNo varchar(20) primary key not null , --设置主键 stuSex varchar(10) default('男') not null, --设置默认值 stuSeat int identity(0 ,2) not null, --设置标识列,种子,增值 stuAddress varchar(100) default('地址不详') not null, check (stuage>15 and stuage <50)) --设置check约束
Create table stuMarks
(examNo varchar(20) primary key not null, --设置主键 stuNo varchar(20) foreign key references stuInfo (stuNo) not null, --设置外键 writtenExam int default('0') not null, check (examno like 'E200507____'))
Unicode为国际编码
3、约束(constraint)
约束用来保证数据完整性,完整性=可靠性+完整性 五种约束:主键约束、外键约束、检查约束、默认约束和唯一性约束 主键约束(primary key): 主键只能有一个(非空的、唯一的),可以包含多列(称为:附和键), 选择主键的原则:最少性和稳定性 一般使用标识列(int型,自增长),以保证主键的唯一性 外键约束(foreign key):
外键(引用键)就是“子表”中对应于“主表”的列,它的值要求与主表的主键或唯一键相对应,一个表可以有多个外键
表间关系:
主表和外表的关系是一对多的关系,一方是主表,多方是子表,在子表中加外键约束 子表中的相关项的数据,在主表中必须存在
主表中相关项的数据更改了,则子表对应的数据项也要随之更改
在删除子表前,不能够删除主表
检查约束(Check):
Check约束表达式为boolean类型表达式
4、表达式
逻辑表达式 And同&& Or同|| Not同! 用in关键字来限制范围 例:not ( card=’信用卡’) or ( 信用卡 in (‘牡丹卡’ , ‘龙卡’ , ‘阳光卡’) )
5、增
插入单行数据 Insert into BBSUsers(id , number , ??) Values (‘5’,’BB543’,??)
注:如果要插入所有列,则可省略列名;无视标识列存在(全列可省列名,不可提供标识列名;default可提供默认值;所有列都可加单引号,money除外)
插入多行数据
Insert into Users(Uid , Unumber , ??)
Select id , number , ??
From BBSUsers
注:须先建好Users关系
Select BBSUsers.id , BBSUsers.number , ??)
Into Users
From BBSUsers
注:执行语句时创建Users关系
Insert into BBSUsers(id , number , ??)
Select ‘1’,’BB173’,?? union
Select ‘2’,’BB143’,?? union
Select ‘3’,’BB129’,?? union
??????
Select ‘20’,’BB125,??
注:不可使用default关键字
排错 1、个数要对 2、数据类型相符 3、不能有标识符 4、不能违反约束
6、改
Update 关系名
set 列名=更新值
where 更新条件
注:条件为boolean类型表达式
7、删
Delete from 关系名 Where 删除条件
注:用于删除关系中指定对象,如有外键约束,则先清空子表中的数据;删除后,标识继续往下排列,条件为boolean类型表达式
Truncate table 关系名
注:执行清空关系中的对象,如有外键约束,则先清空子表中的数据;清空后,标识列从原始值开始 Drop database 数据库名
注:删除整个数据库
Drop table 表名
注:删除整个表
8、查★
基本语法 Select 列名 或 * 或 计算列 或 常量列 注:常量列关键字 :as From 表名 Where 查询条件 注:列 is null 查询列为空值的行,and /or/not Order by 排序的列名 [asc 或desc] 注:asc为升序,desc为降序 查询返回限制的行数 Select top 5 --显示前5行数据 Select top 5 percent --显示前5%行数据 使用IN在列举值内进行查询 列 In (1,3,5) --显示值为1、3、5的行 列 not In (1,3,5) --排除值为1、3、5的行 注:接条件(where / having / on)关键字之后 聚合函数 Sum() 返回表达式中所有数值的总和,只能用于数字类型的列,不能直接与返回多行的列一起进行查询
Avg() 返回表达式中所有数值的平均值 Max() 返回表达式中的最大值 Min() 返回表达式中的最小值 Count() 返回提供的表达式中非空值的计数,可用于数字和字符类型的列 Group by分组查询 Group by 列名 - -对列中的值分组,一般和聚合函数一起使用,分组后的筛选条件只能是having
查询步骤:1、from选择关系 2、用where筛选 3、用group by 分组
4、用having筛选
注:where接普通列条件,having接聚合条件
多表联接查询 内联:列数是两表之和,行数是笛卡尔积(交叉相乘)选择行 Select * from 表名1 inner join 表名2 On 表名1 . 列名=表名2 . 列名 Inner join 表名3 On 表名1 . 列名=表名2 . 列名
无敌联接
一
Select t1.列名,表名3.列名
from (Select 表名1.列名,表名2.列名
from 表名1 inner join 表名2
On 表名1 . 列名=表名2 . 列名)
as t1 inner join 表名3
On 表名3 . 列名=t1 . 列名
????????????????????????????
二、
Select distinct t1.列名,表名3.列名 ?distinct 集合重复的列
from (Select 表名1.列名,表名2.列名
from 表名1 inner join 表名2
On 表名1 . 列名=表名2 . 列名)
as t1 inner join 表名3
On 表名3 . 列名not in(t1 . 列名) ?排除=t1.列名的行
小时:hh 分钟:mi 秒:ss 毫秒:ms
一定要记住,SQL 对大小写不敏感! 数据操作语言 (DML):? ? ? ?SELECT - 从数据库表中获取数据 UPDATE - 更新数据库表中的数据 DELETE - 从数据库表中删除数据 INSERT INTO - 向数据库表中插入数据数据定义语言 (DDL);? ? ? ? ? ? ?CREATE DATABASE - 创建新数据库 ALTER DATABASE - 修改数据库 CREATE TABLE - 创建新表 ALTER TABLE - 变更(改变)数据库表 DROP TABLE - 删除表 CREATE INDEX - 创建索引(搜索键) DROP INDEX - 删除索引SQL SELECT 语法 SELECT 列名称 FROM 表名称 语法:SQL SELECT DISTINCT 语句: SELECT DISTINCT 列名称 FROM 表名称 WHERE 子句: SELECT 列名称 FROM 表名称 WHERE 列 运算符 值操作符 = <> > < >= <= BETWEEN LIKE描述 等于 不等于 大于 小于 大于等于 小于等于 在某个范围内 搜索某种模式SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。 SELECT * FROM Persons WHEREFirstName='Bush'
SELECT * FROM Persons WHEREYear>1965AND 和 OR 运算符SELECT * FROM Persons WHERE FirstName='Thomas' SELECT * FROM Persons WHERE firstname='Thomas'AND ORLastName='Carter'lastname='Carter'ORDER BY 语句 排序SELECT Company, OrderNumber FROM OrdersORDER BY Company DESC,OrderNumber ASCINSERT INTO 语句INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing') INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')Update 语句UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing' WHERE LastName = 'Wilson'DELETE 语句DELETE FROM Person WHERE LastName = 'Wilson' DELETE * FROM table_name数据库分页技术: LIKE 操作符SELECT * FROM Persons WHERE City LIKE 'N%' 提示: 提示:"%" 可用于定义通配符(模式中缺少的字母)。SQL 通配符通配符描述
% _ [charlist] [^charlist] 或者 [!charlist]替代一个或多个字符 仅替代一个字符 字符列中的任何单一字符 不在字符列中SELECT * FROM Persons WHERE City LIKE '%lond%' SELECT * FROM Persons WHERE FirstName LIKE '_eorge' SELECT * FROM Persons WHERE City LIKE '[ALN]%'(以 "A" 或 "L" 或 "N" 开头的人) SELECT * FROM Persons WHERE City LIKE '[!ALN]%'(不以 "A" 或 "L" 或 "N" 开头的人)IN 操作符SELECT * FROM Persons WHERE LastName IN ('Adams','Carter')BETWEEN 操作符SELECT * FROM Persons WHERE LastName 的这个边界是不同的)BETWEEN'Adams'AND'Carter'(每个数据库SQL JOIN - 使用 Join? ? ? ?JOIN(Inner join): 如果表中有至少一个匹配,则返回行 LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行 FULL JOIN: 只要其中一个表中存在匹配,就返回行Inner join : SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name (注释:INNER JOIN 与 JOIN 是相同的) 注释: 注释
左连接( 左连接(LEFT JOIN)实例 )SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons LEFT JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName(左边的全部,加上右边中与左边相对应的[可以重复])右连接( 右连接(RIGHT JOIN)实例 )SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons RIGHT JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName全连接( 全连接(FULL JOIN)实例 )SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons FULL JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastNameSQL UNION 操作符SELECT E_Name FROM Employees_ChinaUNIONSELECT E_Name FROM Employees_USASQL 约束? ? ? ?NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY
? ?CHECK DEFAULTSQL UNIQUE 约束UNIQUE 约束唯一标识数据库表中的每条记录。MySQL / SQL Server / Oracle / MS Access: 约束唯一标识数据库表中的每条记录。CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255),CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName))SQL PRIMARY KEY 约束PRIMARY KEY 约束唯一标识数据库表中的每条记录。 主键必须包含唯一的值。 主键列不能包含 NULL 值。 每个表应该都一个主键,并且每个表只能有一个主键。CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255),CONSTRAINT uc_PersonID PRIMARY KEY (Id_P,LastName))
SQL CHECK 约束CHECK 约束用于限制列中的值的范围。 约束用于限制列中的值的范围。 My SQL:CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255),CHECK (Id_P>0))SQL CREATE INDEX 语法CREATE INDEX index_name ON table_name (column_name)AUTO INCREMENT 字段 用于 MySQL 的语法P_Id int NOT NULL AUTO_INCREMENT,用于 SQL Server 的语法P_Id int PRIMARY KEY IDENTITY,用于 Oracle 的语法CREATE SEQUENCE seq_person MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 10
INSERT INTO Persons (P_Id,FirstName,LastName) VALUES (seq_person.nextval,'Lars','Monsen')
二、名词解释1.数据冗余定义:同一数据存储在不同的数据文件中的现象。2.DBA数据库管理员3.事务(unit)。4.数据字典:数据…
1、数据(Data)——是数据库中存储的基本对象;2、数据库(Database,简称DB)3、数据库数据具有永久存储、有组织、可共…
第一章绪论1.数据库系统概述(1)数据、数据库、数据库管理系统、数据库系统(2)数据管理技术的产生和发展(3)数据库系统的特点2.…
第一章(1解决多用户,多个应用进程共享数据的需求计算机系统在引入数据库后的所构成的系(3描述和存储,具有较小的冗余度,据库中的同一…
题型:选择,填空,简答,综合题:1.SQL语句2.会画ER图3.ER图与关系模式的转换4.视图的创建,更新,修改,删除5.关系代数…
SELECT查询包括条件项、内连接、分组汇总(含HAVING)、排序、简单子查询(不考EXISTS)及一些输出选项。数据库管理系统…
题型:选择,填空,简答,综合题:1.SQL语句2.会画ER图3.ER图与关系模式的转换4.视图的创建,更新,修改,删除5.关系代数…
第一章(1解决多用户,多个应用进程共享数据的需求计算机系统在引入数据库后的所构成的系(3描述和存储,具有较小的冗余度,据库中的同一…
第一章绪论1.数据库系统概述(1)数据、数据库、数据库管理系统、数据库系统(2)数据管理技术的产生和发展(3)数据库系统的特点2.…
1、数据(Data)——是数据库中存储的基本对象;2、数据库(Database,简称DB)3、数据库数据具有永久存储、有组织、可共…
分布式数据库介绍自学、整理、备忘它和集中式操作系统的区别在于资源管理、进程通信和系统结构等方面。分布式程序设计语言用于编写运行于分…