数据库的创建
CREATE DATABASE 数据库名称
表的创建
CREATE TABLE 表名称
(
-- not null 设置非空
列名称1 数据类型 not null,
列名称2 数据类型,
.......
--设置主键
constraint PK_Reader_ID primary key (Reader_id)
)
设置约束
1.设置外键约束
alter table 表A add constraint FK_B(外键缩写FK_...) foreign key (列名) references 表B(列名)
示例:
alter table Readers
add foreign key(Type_id) references ReadersType(Type_id)
2.设置默认约束
alter table 表名 add constraint 约束名 default 默认值 for 列名
示例:
alter table Readers
add constraint df_Type_id default 2 for Type_id
3.设置字段值的条件约束
alter table 表名 add 字段名 数据类型 constraint 约束名 check(约束条件)
示例:
alter table Books
add BookNum Tinyint constraint CK_BookNum check(BookNum>=0)
插入数据
1.插入全部字段名的值
insert into 表名 values(数据,数据,数据,.....)
示例:
insert into Readers values (2013010010,'张会悦',2,'医学系',null,'女','1994-02-20')
2.插入部分数据
insert into 表明 (列名,列名,..) values (数据,数据,...)
示例:
insert into stuinfo(sid,sname,sclass) values (3,'码仙3',1003);
3.插入多条数据
insert into 表名(列名,列名...) values (列值,列值,..),(列值,列值,..),(列值,列值,...),....
示例:
INSERT INTO
items(name,city,price,number,picture)
VALUES
('耐克运动鞋','广州',500,1000,'003.jpg'),
('耐克运动鞋2','广州2',500,1000,'002.jpg');
修改值
update 表名 set 列名=新的字面值 where 条件
注意:不添加条件会更改该列的全部值
示例:
update ReadersType set BorrowTerm=45 where Type_Name='其他'
删除数据
delete from 表名 where 条件
注意:不添加条件会删除整张表
示例:
delete from Books where Author='高玉祥'
查询数据
1.查询全张表数据
select * from 表名
2.查询全表指定条件的数据
select * from 表名 where 条件
示例:
select * from Readers where Reader_id=20088702
3.查询显示指定列满足指定条件的数据
select 列名,列名,... from 表名 where 条件
示例:
select Book_Name,Author,publishedDate,price from Books where publisher='清华大学出版社'
4.模糊查询
select * from 表名 where 列名 like 数据
示例:
select * from Books where BooK_Name like '%数据库%'
5.查询数据并排序
desc:降序
asc:升序
select * from 表名 order by 列名 desc
示例:
select * from Books order by PublishedDate desc
select * from 表名 order by 列名 asc(不写默认升序)
示例:
select * from Books order by PublishedDate asc
select * from Books order by PublishedDate
6.查询并显示前n行数据
select top n * from 表名 order by 列名 desc
示例:
--查询降序,并显示前三行数据
select top 3 * from Books order by PublishedDate desc
7.查询并更改列名显示
as 或者 空格 或者 =
select 列名 as 新列名,列名 as 新列名,...... from 表名
示例:
select BookNum as '图书总量' from Books
8.将查询的数据存入新表中
1.表不存在
select * into 新表名 from 表名 where 条件
示例:
select * into bookstsinghua from Books where publisher='清华大学出版社'
select (字段1,字段2,...) into b from a
2.表存在
如果两表字段相同
--b表存在(两表结构一样)
insert into b select * from a
若两表只是有部分(字段)相同,则
insert into b(col1,col2,col3,col4,...) select col1,col2,col3,col4,... from a where...
9.sum函数
sum(列名或者数据) 求和函数
将某张表的某列不同数据统计并显示
--将Readers表中的Department列不同系部的读者人数显示
select Department as 系部,sum(1) as '读者人数' from Readers group by Department
--查询每年借出的图书数量。(按year(BorrowDate)分类)
select datepart(yyyy,BorrowDate) as '年份',sum(1) as '图书数量' from Borrow group by datepart(yyyy,BorrowDate)
10.group by
GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
11.跨表查询
同一数据库
方法1:
---Books,Borrow,Readers 三张表 Borrow.Book_Id=Books.Book_id and Borrow.Reader_Id=Readers.Reader_id 为主外键
select Books.BooK_Name as '图书名称',Books.Author as '作者',Books.PublishedDate as '出版日期',Readers.Reader_id as '读者编号',Borrow.BorrowDate as '借阅日期',Borrow.ReturnDate as '归还日期'
from Books,Readers,Borrow where Author='*鸿' and
Borrow.Book_Id=Books.Book_id and Borrow.Reader_Id=Readers.Reader_id
方法2:
--使用join关键字连接两张表 一对多
SELECT * FROM student
INNER JOIN class on student.stu_classes = class.id AND class.class_name = '1804'
--使用join关键字连接两张表加中间表 多对多
SELECT * FROM teacher
INNER JOIN cla_teacher ON cla_teacher.teacher_id = teacher.id
INNER JOIN class ON class.id = cla_teacher.class_id and class.class_name = '1804'
12.UNION 和 UNION ALL 操作符
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2
另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。