大三期末复习
以下问题都需要熟练写出来
数据库的特点?
数据结构化 ,数据之间具有联系,面向整个系统;数据的共享性高,冗余度低,易扩充;数据独立性高。
有哪些数据库?
MySQL、SQL Server、Oracle、Hadoop等
数据库的种类包括?
早期比较流行的数据库模型有三种,分别为
- 层次式数据库
- 网络式数据库
- 关系型数据库
而在当今的互联网中,最常用的数据库模型主要是两种,即
- 关系型数据库
- 非关系型数据库。
DDL、DQL、DML是什么?
-
DDL(Data Definition Language)数据定义语言
用来定义数据库对象:数据库,表,列等。关键字:create,drop,alter 等 -
DQL(Data Query Language)数据查询语言
用来查询数据库中表的记录(数据)。关键字:select等 -
DML(Data Manipulation Language)数据操作语言
用来对数据库中表的数据进行增删改。关键字:insert,delete,update 等.
有哪些约束?他们分别的含义为?
- 主键约束:primary key
- 非空约束:not null
- 唯一约束:unique
- 外键约束:foreign key
数据库系统的组成?
- 数据库
- 计算机硬件
- 计算机软件
- 数据库用户
函数有哪些?
名称 | 功能 |
---|---|
AVG() | 返回某字段的平均值 |
COUNT() | 返回某字段的行数 |
MAX() | 返回某字段的最大值 |
MIN() | 返回某字段的最小值 |
SUM() | 返回字段的和 |
分页查询?
- 如果只给定一个参数,表示记录数。
- 两个参数,第一个参数表示offset(即偏移量,表示从第几个开始返回), 第二个参数为记录数(即返回数据的个数)。
select xxx from aaa limit m,n;
过滤重复数据?
SELECT DISTINCT <字段名> FROM <表名>;
模糊查询?
select xxx from aaa where bbb LIKE '字符串'
- NOT :可选参数,字段中的内容与指定的字符串不匹配时满足条件。
- 字符串:指定用来匹配的字符串。“字符串”可以是一个很完整的字符串,也可以包含通配符。
LIKE 关键字支持百分号“%”和下划线“_”通配符。
- ‘%’表示匹配任意长度的任意字符
- ‘_’表示匹配一个任意字符
varchar 和char的区别?
char的长度是不可变的,而varchar的长度是可变的,也就是说,定义一个char[10]和varchar[10],如果存进去的是‘csdn’,那么char所占的长度依然为10,除了字符‘csdn’外,后面跟六个空格,而varchar就立马把长度变为4了,取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的。
再者,char的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节。
新建视图、删除视图语句?
新建视图:
create view 视图名字 as select 语句;
删除视图:
drop view 视图名字;
重点看:数据库.md、数据定义语言(DDL).md的笔记
最后一道大题30分
考点:建库,建表,查询
参考:所有作业练习
例:
建库:
--- 建立一个叫test_db的数据库
CREATE DATABASE test_db;
创建表
要会拼写的关键字:
- 主键、primary key
- 自增、auto_increment
- 非空、not null
- 唯一、unique
- 日期类型、datetime
注意考外键的可能性是极大的,所以一定要会写!!
外键:
[CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,…]
REFERENCES <主表名> 主键列1 [,主键列2,…]
例子1:常用的表创建
-- 创建
create table stuInfo(
stuId int primary key auto_increment,
stuName varchar(10) not null,
stuAge int not null,
stuSex int not null check(stuSex = 0 or stuSex = 1),
time datetime
)
例子2:引用表一的值来当外键
create table scoreInfo(
scoreId int primary key auto_increment,
stuId int,
score int not null,
constraint scoreInfo_stuInfo_fk foreign key(stuId) references stuInfo(stuId),
)
查询
查询是重中之重,作业中的查询五花八门,不过波哥考的不会太为难我们。所以时间不够的情况下,直接记一个万金油公式
select distinct * from '表名' where '限制条件' group by '分组依据' having '过滤条件' order by limit '展示条数'
执行顺序
from -- 查询
where -- 限制条件
group by -- 分组
having -- 过滤条件
order by -- 排序
limit -- 展示条数
distinct -- 去重
select -- 查询的结果
直接把这条语句记住,然后考试的时候题目需要哪项就填哪项!
当然,也有可能考一些其他的东西查询。所以常用的一些基本的写法要清楚
集合查询函数:max 、min 、avg 、sum 、count 、group_concat 。
内连接:select aaa from bbb inner join ccc on bbb.xxx = ccc.xxx
左连接:select aaa from bbb left join ccc on bbb.xxx = ccc.xxx
右连接:select aaa from bbb right join ccc on bbb.xxx = ccc.xxx
全连接: select aaa from bbb union ccc on bbb.xxx = ccc.xxx
插入
当然,也不是我不信波哥。但是我还是觉得复习了保险些。
插入的内容很少也很简单
-- 插入
insert into stuInfo(stuName, stuAge, stuSex)
values
(default,'Tom',19,1,null),
(default,'Jack',20,0,null),
(default,'Rose',21,1,null),
(default,'Lulu',19,1,null),
(default,'Lili',21,0,null),
(default,'adc',20,1,'2007-01-07 01:11:36.590');
注意,如果这个表中的某个值是自增的,那么这个表后面的括号就可以不加它。就像这个例子,创建的时候有stuId的,由于设置的是自增,所以这儿就把它省略了
修改表
哈哈,反正插入表都复习了,就看全套吧。这里只给出了一个大致的例子。
-- 修改
UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
删除表
同上理由
-- 删除
DELETE FROM table_name [WHERE Clause]
以波哥的重点为主,所以就是创建数据库,然后创建表和查询为主。其实平时的练习已经足够了,所以就只要关键时刻记得关键词怎么写就没问题了。