SQL数据库知识总结

数据库知识总结

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____'))

SQL数据库知识总结

SQL数据库知识总结

Unicode为国际编码

3、约束(constraint)

约束用来保证数据完整性,完整性=可靠性+完整性 五种约束:主键约束、外键约束、检查约束、默认约束和唯一性约束 主键约束(primary key): 主键只能有一个(非空的、唯一的),可以包含多列(称为:附和键), 选择主键的原则:最少性和稳定性 一般使用标识列(int型,自增长),以保证主键的唯一性 外键约束(foreign key):

外键(引用键)就是“子表”中对应于“主表”的列,它的值要求与主表的主键或唯一键相对应,一个表可以有多个外键

表间关系:

主表和外表的关系是一对多的关系,一方是主表,多方是子表,在子表中加外键约束 子表中的相关项的数据,在主表中必须存在

主表中相关项的数据更改了,则子表对应的数据项也要随之更改

在删除子表前,不能够删除主表

检查约束(Check):

Check约束表达式为boolean类型表达式

4、表达式

SQL数据库知识总结

SQL数据库知识总结

SQL数据库知识总结

逻辑表达式 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.列名的行

SQL数据库知识总结

SQL数据库知识总结

SQL数据库知识总结

SQL数据库知识总结

小时:hh 分钟:mi 秒:ss 毫秒:ms

 

第二篇:数据库SQL知识

一定要记住,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')

相关推荐