MySQL数据库基础

数据库的创建

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 语句中的列名。

上一篇:输入整数n(0<=n<=1000),紧接着在下一行连续输入n个数。随后输出这一组数的最小值和最大值。


下一篇:快速排序(Quicksort)的Javascript实现(转载)