标签:返回 复制表 划线 切割 最大 链接 address 嵌套 font
一、关系型数据库管理
1.数据库概述
(1)数据库概念:
所谓数据库,就是在计算机上集中存放数据的地方。将所需数据和信息保存在计算机数据库中,对数据进行集中控制。
(2)优点:
2.数据库中的存储形式
3.关系型数据库的基本概念——以关系模型来创建的数据库称为关系型数据库,类似的实体被存入到表中
(1)一对一关系
一对一关系是比较少的关系类型
(2)一对多关系
(3)多对多关系
二、数据库和表
1.管理数据库
(1)创建和使用数据库
创建语法:
create database 数据库名;
示例:
create database Instance;
标识符规则:
(2)连接到数据库
语法:
use 数据库名;
示例:
use Instance;
(3)删除数据库
语法:
drop database 数据库名;
示例:
drop database Instance;
(4)查看数据库
语法:
show databases;
2.数据类型
(1)整数数据类型,列举常用类型
1)smallint型:范围是-32768-32767之间,每个该类数据占据2个字节的存储空间
2)int型:每个数据占用4个字节的存储空间
(2)浮点型
1)float型:可精确到小数点后15位
2)DECIMAL型和NUMERIC型:二者可以提供小数所需的世纪存储空间,用于货币单位之间
(3)字符串型:
1)char型:定长字符数据,长度最多为8kb,SQL假定的长度为1个字符
2)varchar型:可变长度字符数据,长度不超过8kb
3)TXET类型:长度超过8kb可用TXET类型存储
3.管理表
(1)创建表
语法:
create table 表名字(列名 列的数据类型 列的约束);
示例:
create table student(stu_name varchar(20));
(2)删除表
语法:
drop table 表名字;
示例:
drop table student;
(3)复制表
示例:
select * into My_Student from student;
(4)添加新的列
示例:
alter table student add address varchar(50);
(5)一次添加多个列
示例:
alter table student add address varchar(50),ICQ varchar(30);
(6)删除某一列
示例:
alter table student drop column stu_address;
4.管理索引
(1)创建索引
语法:
create index 索引名 on 表名字 (列名1,列名2...);
(2)删除索引
示例:
drop index student.IDindex;
三、数据完整性
1.概述
2.实现
(1)创建非空约束
示例:
create table student(
name varchar(50) not null,
phoneNo varchar(20) not null
);
(2)设置主键约束
primary key:应用于标的列的一个约束,注意,主键列不允许存储null值。
示例:
create table student(
name varchar(50) not null primary key,
phoneNo varchar(20) not null
);
(3)设置唯一约束
unique:给定列的所有值必须是唯一的,该列在每一行的值都必须唯一。
示例:
create table student(
name varchar(50) primary key not null,
phoneNo varchar(20) unique
);
(4)指定默认值
示例:
create table student(
name varchar(50) not null,
phoneNo varchar(20) default ‘不知道电话号码‘ not null
);
(5)设置检查约束
检查约束是最灵活的约束类型,允许我们再更改或插入列到数据库时有一个叫宽泛的限制
示例:
create table student(
name varchar(50) not null,
phoneNo varchar(20) default ‘不知道电话号码‘ not null,
age int,
constraint checkAge check (age between 10 and 100)
);
(6)引用完整性和外键约束
外键维护两张表之间的数据的关系
foreign key 约束连接的两个列必须是相同的(或至少是相似的)数据类型
示例:
CREATE TABLE users(
u_id INT PRIMARY KEY,
u_name VARCHAR(20),
u_pwd VARCHAR(20),
u_type SMALLINT
)
CREATE TABLE userinfo(
info_di INT PRIMARY KEY,
info_nickName VARCHAR(20),
info_email VARCHAR(20),
#外键约束
u_id INT,
CONSTRAINT FK_userinfo_uId FOREIGN KEY (u_id) REFERENCES users (u_id)
)
四、使用DML语句更改数据
1.添加新数据
(1)插入单行记录
语法:
insert into 表名字(列名1,列名2列名3...) values(1,2,3...);
示例:
insert into student(name,hireDate)values(John,2004-01-01);
说明:
(2)插入多行记录——将数据从一个表复制到另一个表上
语法:
insert into 目标表名字(目标列名字) select 源列名字 from 源表名字;
示例:
insert into student1(studentName) select 源列名字 from 源表名字;
(3)表数据的复制
select 列名 into 新表名 from 表名;
示例:
select * into student2 from student;
2.更改已有数据
(1)更新单列数据
示例:
update student set address=‘shanghai‘ where stu_name=‘lisi‘;
(2)更新多列数据
示例:
update student set address = ‘chengdu‘,phoneNumber =1234 where stu_name=‘李四‘;
(3)通过更新删除列的数据
示例:
update set address=null where stu_name=‘lisi‘;
3.删除数据
(1)使用delete删除行
语法:
delete from 表名 where 过滤条件;
示例:
delete from student where stu_id = 1;//删除整行,但不能删除表本身
(2)使用truncate语句初始化
语法:
truncate table 表名;
示例:
truncate table student;
truncate table一次性完成删除与表有关的所有数据操作,但结构,列,约束,索引不会被改动,不能用于有外键约束的引用的表
5.简单的数据查询
(1)基本结构
标准select查询由select子句、from子句、where、order by子句组成,select、from、where、order by和distinct都是SQL的关键字。
数据库的基本差需操作分为——投影操作、选择操作、排序操作
(2)投影操作
语法:
select 列名列表 from 表名;
示例:
select stu_id,stu_name,stu_grade from student;
1)表名前缀
示例:
select users.u from users;
2)列别名
语法:
select 列A as A,列B as B,列C as C from 表名 as T;
当使用表的别名时,可以在同一SQL语句中的列名中使用别名,如:
select T.列A as A,T.列B as B,T.列C as C from 表 as T;
示例:
select Name as studentName,studentID as ID from student;
3)计算列
4)排除重复数据
语法:
select distinct 列名 from 表名;
示例:
select distinct grade from student;
(2)选择操作
语法:
select 列名列表 from 表 where 条件;
1)单条件选择操作
语法:
select 列A,列B from 表 where 列C=值;
示例:
select stu_name from student where stu_id;
2)多条件选择操作
语法:
select 列A,列B from 表 where 条件1 and(or)条件2;
示例:
select studentID,mark,comments from studentExam where ExamID = 1 and ifPassed = 1;
3)执行范围测试
语法:
select 列A,列B from 表 where 列C between 下限 and 上限;
示例:
select ExamID,sustainedOn,comments from Exam where sustainedOn between ‘2003-03-02‘ and ‘2003-03-20‘;
4)定义集合关系
语法:
select 列A,列B from 表 where 列C (not) in (值集合);
示例:
select studentID,examID,mark from studentExam where studentID in (2,7,3);
5)模糊查询
语法:
select 列A,列B from where 列C like 模式;
通配符:
% -----> 包含零个或更多字符的任意字符串
_ -----> 任何单个字符串
示例:
select name from student where name like ‘%L‘;
6)处理空值数据
语法:
select 列A,列B from 表 where 列C is not null; ---->测试不为空
select 列A,列B from 表 where 列C is null; ----->测试为空
(4)排序操作
语法:
select 列A,列B,列C from 表 order by 列A,列B,列C...;
1)单序排列
语法:
select 列A,列B,列C from 表 order by 列A;(升序)
select 列A,列B,列C from 表 order by 列A ASC;(字母排序)
select 列A,列B,列C from 表 order by 列A desc;(降序)
示例:
select name,ID,from student order by name desc;
2)多列排序
语法:
select 列A,列B,列C from 表 order by 列A,列B,列C...;
示例:
select course,professor,sustainedOn from exam order by course,professor,sustainedOn;
6.聚合函数与分组
(1)使用聚合函数进行统计汇总
1)执行行和列计算
语法:
select count (计数规范) from 表名;
2)返回列合计值
select sum (计数规范)from 表名;
示例:
select sum(all unitPrice)from product;
3)获取平均值
语法:
select avg (平均值规范) from 表名;
示例:
select avg(all age)from student;
4)返回最大值或最小值
语法:
select max(最大值规范)from 表名;
select min(最大值规范)from 表名;
(2)数据分组
1)过滤分组数据
语法:
select 列A,聚合函数(聚合函数规范)from 表名 where 过滤条件 group by 列A;
2)使用having子句
(3)SQL语句的执行顺序
7.组合查询
(1)使用子查询——嵌套在其他查询中的查询
1)子查询作为计算列
子查询的一个简单的形式就是内部查询作为外部查询的每行返回一个单值结果,通常作为一个结果插入到计算列
语法:
select columnA,(子查询) As columnB from 表名
2)where字句中的子查询
语法:
select columnA from tableA where columnB = (子查询);
3)返回多个结果的子查询
语法:
select columnA,columnB from table where columnC in (select columnD from table2);
(2)组合查询数据
1)使用union 运算符
语法:
select columnA,columnB from tableA
union
select columnC,columnD from tableB;
2)保留重复行
语法:
select columnA,columnB from tableA
union all
select columnC,columnD from tableB;
总结:
8.联接
(1)简单联接
1)使用量表简单联接——两个表的行相连接的最常用的方法是通过一个相等联接。相等链接基于每行中的一个列的值。
示例:
select tableA.column1,table1.column2,table2.column3,from table1 join table2 on table1.column1 = table2.column2;
2)使用多表相等联接——相等联接不只是局限于两个表,我们可以在联接中包含更多表。
示例:
select * from table1 join table2 on table1.column1 = table2.column2
join table3
on table1.column3 = table3.column4
3)使用非相等联接
语法:
select * from table1,table2 where table1.column1 < table2.column2
(2)使用联接
1)内联接
内联接是一种典型的联接运算,使用=,<或>之类的比较运算符。包括相等联接,非相等联接和自然联接。内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。
示例:
select table1.column1,table2.column2 from table1 Inner table2 on table1.column1 = table2.column;
2)外联接
a.左外联接
语法:
select * from table1 left outer join table2 on table1.column1 = table2.column2
b.右外联接
语法:
select * from table1 right outer join table2 on table1.column1 = table2.column2
c.全外联接
语法:
select * from table1 full outer join table2 on table1.column1 = table2.column2
标签:返回 复制表 划线 切割 最大 链接 address 嵌套 font
原文地址:http://www.cnblogs.com/skayin/p/6127692.html