目录:
1.数据库概念
2.SQL语句的分类
3.DDL语句
4.DML语句
5.数据库约束
6.SQL 99的连接查询
7.子查询
8.集合运算
9.索引
10.视图
1.数据库概念
数据库为数据库和数据库管理系统(Database Management System,DBMS)的简称。
DBMS是所有数据的知识库,它负责管理数据的存储、安全、一致性、并发、恢复和访问等操作。
DBMS有一个数据字典(也被称为系统表),用于存储它拥有的每个事务的相关信息,例如名字、结构、位置和类型,这种关于数据的数据也被称为元数据(metadata)。
数据库按时间顺序出现了如下几种类型的数据库:
①网状型数据库
②层次型数据库
③关系数据库:最基本的数据存储元单元就是数据表。
④面向对象数据库
2.SQL语句的分类
SQL的全称是Structured Query Language,也就是结构化查询语句。
标准的数据库可以用于任何关系数据库。
SQL语句通常分为以下几类:
①查询语句:主要由select关键字完成。
②DML语句:Data Manipulation Language,数据操作语言,主要由insert、update、delete三个关键字完成。
③DDL语句:Data Definition language,数据定义语言,主要由create、alter(更改)、drop、truncate(缩短)四个关键字完成。
④DCL语句:Data Control Language,数据控制语言,主要由grant、revoke两个关键字完成。
⑤事务控制语句:主要由commit、rollback、savepoint。
标识符:必须以字母开头,可以使用字母,数字,特殊字符(#_$)。
3.DDL语句
①创建表-create:
create table test
(
test_id int,
test_price decimal,
test_name varchar(255) default 'xxx', #default 指定默认值;字符串使用单引号
test_img blob #2字节的大对象,可用于存储图片、音乐等二进制数据
);
②修改表-alter:
add,modify,drop,change(重命名列),rename(改表名)
需要注意的是modify每次只能修改一个列定义。
③删除表-drop:
drop table test;
④truncate表
truncate 表名
#删除该表里的所有数据,但是保留表的结构
性能优于delete。
4.DML语句
①insert into
②update
③delete from
5.数据库约束
约束是在表上强制执行的数据校验规则,约束主要用于保证数据库的完整性。除此之外,数据存在相互依赖性时,可以保护相关数据不会被删除。
五种约束:
①NOT NULL
②UNIQUE
③PRIMARY KEY
④FOREIGN KEY
⑤CHECK
唯一约束可以使用列级约束语法建立,也可以使用表级约束语法。
#表级约束语法
...unique (test_name,...)...#为test_name...添加唯一约束
#表级约束语法,并执行约束名
...constraint test2_uk unique(test_name)...
其中 constraint 为约束命名。
外键约束:
当主表的记录被从表参照时,主表的记录不允许为被删除,必须先删除从表的全部记录后,才能删除主表;还有一种情况,删除主表记录时级联删除从表中所有参照该记录的从表记录。
on delete cascade-级联删除-删整行
on delete set null-外键置null
foreign key(java_teacher) references teacher_table(teacher_id)
6.SQL 99的连接查询
①交叉连接-cross join
select s.*,teacher_name
from student_table s
cross join teacher_table t; #交叉连接,相当于笛卡尔积
②自然连接-natural join
select s.*,teacher_name
from student_table s
natural join teacher_table t; #自然连接 使用两个表中的同名列作为连接条件
③using子句连接
select s.*,teacher_name
from student_table s
join teacher_table t
using (teacher_id); #using连接 显式的指定哪些同名列 作为连接条件
④on子句连接
select s.*,teacher_name
from student_table s
join teacher_table t
on s.java_teacher=t.teacher.id; #on子句连接
⑤左、右、全外连接
7.子查询
子查询就是指在查询语句中嵌套另一个查询,子查询可以支持多层嵌套。
8.集合运算
交(inersect)、并(union)、差(minus)
9.索引
10.视图