第2天:SQL语句基础

#1.SQL入门

全称:Structure Query Language:结构化请求语言

作用:命令和数据的载体,由客户端发出,交给数据库软件进行执行

分类:

#2.DDL

1)库操作

#1.创建数据库
CREATE DATABASE company;

#2.选中操作的数据库
USE company;

#3.删除数据库
DROP DATABASE company;

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)
);
#注意:在构建外键约束的时候,必须先有主表再有从表,否则外键不知道挂谁的字段

删表:

DROP TABLE dept;

注意:如果多个数据库表之间存在外键关联关系,那么必须先保证在从表中没有对主表的依赖,才能够删除主表。

 

#3.DML

①数据库的事务(Transaction):

定义:在执行对数据库表中数据进行增删改操作的时候,为了维持数据完整性的一套机制:

    只有在增删改操作完成之后,通过一个特殊的命令(commit)通知数据库,数据库才会将增删改结果生效(同步到磁盘文件中)在同步之前产生的增删改数据都是可以作废(回滚:rollback),但是一旦提交,数据将不能够回滚

特征:ACID

  A:原子性:如果一个事务过程中包括多个增删改操作,那么这些操作要执行都执行,要不执行都不执行。

  C:一致性:在增删改操作在事务中执行完毕之后:修改操作完成后数据库表记录数量应该和原始记录数量+(-)增删记录数量一致。

  I:隔离性:当一个事务在对数据表进行增删改操作的时候,其他事务将看不见这个事务对数据表的增删改操作。

  D:持久性:当事务通过commit命令执行提交操作后,将会同步到硬盘当中。此时将不能够再进行回滚操作,数据将永久保存在硬盘上。

使用:

事物的提交:

commit;

事务的回滚:

rollback;

注意:如果事务被提交完成了,那么将不能够再进行回滚。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fwy洛伦兹力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值