类别:数据库
日期:2021-07-15 浏览:2064 评论:0
#1.SQL入门
全称:Structure Query Language:结构化请求语言
作用:命令和数据的载体,由客户端发出,交给数据库软件进行执行
分类:
#2.DDL
1)库操作
#1.创建数据库 CREATE DATABASE company; #2.选中操作的数据库 USE company; #3.删除数据库 DROP DATABASE company;
Java
2)表操作
建表:
#1.创建数据库表 #最基本的建表: CREATE TABLE emp ( emp_id INT, e_name VARCHAR(20), email VARCHAR(100), phone VARCHAR(11), hire_data DATE, job_id INT, salary DOUBLE(8,2), comm_pct DOUBLE(8,2), manager_id INT, dept_id INT); #建表的时候带有主键约束 #一般的主键: CREATE TABLE emp ( emp_id INT PRIMARY KEY, e_name VARCHAR(20), email VARCHAR(100), phone VARCHAR(11), hire_data DATE, job_id INT, salary DOUBLE(8,2), comm_pct DOUBLE(8,2), manager_id INT, dept_id INT); #自增的主键: CREATE TABLE emp ( emp_id INT PRIMARY KEY AUTO_INCREMENT, e_name VARCHAR(20), email VARCHAR(100), phone VARCHAR(11), hire_data DATE, job_id INT, salary DOUBLE(8,2), comm_pct DOUBLE(8,2), manager_id INT, dept_id INT); #非空约束和默认值: CREATE TABLE emp ( emp_id INT PRIMARY KEY AUTO_INCREMENT, e_name VARCHAR(20) NOT NULL, email VARCHAR(100), phone VARCHAR(11), hire_data DATE, job_id INT, salary DOUBLE(8,2) NOT NULL DEFAULT 5000.00, comm_pct DOUBLE(8,2), manager_id INT, dept_id INT); #唯一约束: CREATE TABLE emp ( emp_id INT PRIMARY KEY AUTO_INCREMENT, e_name VARCHAR(20) NOT NULL, email VARCHAR(100) UNIQUE, phone VARCHAR(11) UNIQUE, hire_data DATE, job_id INT, salary DOUBLE(8,2) NOT NULL DEFAULT 5000.00, comm_pct DOUBLE(8,2), manager_id INT, dept_id INT); #检查约束: CREATE TABLE emp ( emp_id INT PRIMARY KEY AUTO_INCREMENT, e_name VARCHAR(20) NOT NULL, gender VARCHAR(1) CHECK(gender = '男' OR gender = '女'), age INT CHECK(age >= 0 AND age <= 150), email VARCHAR(100) UNIQUE, phone VARCHAR(11) UNIQUE, hire_data DATE, job_id INT, salary DOUBLE(8,2) NOT NULL DEFAULT 5000.00, comm_pct DOUBLE(8,2), manager_id INT, dept_id INT); #注意:MySQL数据库是不支持检查约束的,在建表的过程中,会执行check关键字,但是在执行之后没有任何结果 #外键约束: CREATE TABLE emp ( emp_id INT PRIMARY KEY AUTO_INCREMENT, e_name VARCHAR(20) NOT NULL, gender VARCHAR(1) CHECK(gender = '男' OR gender = '女'), age INT CHECK(age >= 0 AND age <= 150), email VARCHAR(100) UNIQUE, phone VARCHAR(11) UNIQUE, hire_data DATE, job_id INT, salary DOUBLE(8,2) NOT NULL DEFAULT 5000.00, comm_pct DOUBLE(8,2), manager_id INT, dept_id INT, #外键声明的构成:1.外键名称,2.本表的外键字段,3.外键字段引用的主表字段 CONSTRAINT fk_dept_emp FOREIGN KEY (dept_id) REFERENCES dept(dept_id), CONSTRAINT fk_job_emp FOREIGN KEY (job_id) REFERENCES job(job_id), CONSTRAINT fk_emp_manage FOREIGN KEY (manager_id) REFERENCES emp(emp_id) ); #注意:在构建外键约束的时候,必须先有主表再有从表,否则外键不知道挂谁的字段
Java
删表:
DROP TABLE dept;
Java
注意:如果多个数据库表之间存在外键关联关系,那么必须先保证在从表中没有对主表的依赖,才能够删除主表。
#3.DML
①数据库的事务(Transaction):
定义:在执行对数据库表中数据进行增删改操作的时候,为了维持数据完整性的一套机制:
只有在增删改操作完成之后,通过一个特殊的命令(commit)通知数据库,数据库才会将增删改结果生效(同步到磁盘文件中)在同步之前产生的增删改数据都是可以作废(回滚:rollback),但是一旦提交,数据将不能够回滚
特征:ACID
A:原子性:如果一个事务过程中包括多个增删改操作,那么这些操作要执行都执行,要不执行都不执行。
C:一致性:在增删改操作在事务中执行完毕之后:修改操作完成后数据库表记录数量应该和原始记录数量+(-)增删记录数量一致。
I:隔离性:当一个事务在对数据表进行增删改操作的时候,其他事务将看不见这个事务对数据表的增删改操作。
D:持久性:当事务通过commit命令执行提交操作后,将会同步到硬盘当中。此时将不能够再进行回滚操作,数据将永久保存在硬盘上。
使用:
事务的提交:
commit;
Java
事务的回滚:
rollback;
Java
注意:如果事务被提交完成了,那么将不能够再进行回滚。
发表评论 / 取消回复