IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 数据库操作语句(day4) -> 正文阅读

[大数据]数据库操作语句(day4)

#表复制
CREATE TABLE tab01(
	id INT,
	`name` VARCHAR(32),
	sal DOUBLE,
	job VARCHAR(32),
	deptno INT)
#显示表的结构
DESC tab01
SELECT *FROM tab01

#把emp表的记录复制到tab01
INSERT INTO tab01(id,`name`,sal,job,deptno)
		SELECT empno,ename,sal,job,deptno FROM emp

#自我复制
INSERT INTO tab01 SELECT *FROM tab01


#删除一张表的重复记录

#创建一张重复表
CREATE TABLE tab02 LIKE emp
INSERT INTO tab02 SELECT *FROM emp

#1.创建一张临时表,和tab02结构相同
CREATE TABLE temp LIKE tab02
#2.用distinct去重并自我复制,这里其实就已经去重完了,可以把原表删了,把temp改个名
INSERT INTO temp SELECT DISTINCT *FROM tab02
#3.清除tab02的记录
DELETE FROM tab02
#4.把temp表中的数据复制到tab02
INSERT INTO tab02 SELECT *FROM temp
#5.删除temp表
DROP TABLE temp

#合并查询  UNION ALL将两个查询结果合并显示但不会去重,UNION会去重
SELECT ename,sal,job FROM emp WHERE sal>2500
UNION
SELECT ename,sal,job FROM emp WHERE job='MANAGER'

#外连接

#列出部门名称和这些部门的员工名称和工作,同时显示没有员工的部门

#使用左连接实现:将dept表和emp表的数据进行匹配,即便emp中没有依然会显示dept表的数据
SELECT dname,ename,job 
	FROM dept LEFT JOIN emp
	ON dept.deptno=emp.`deptno`
	
#使用右连接实现:将emp表和dept表的数据进行匹配,即便左中没有依然会显示右表的数据
SELECT dname,ename,job 
	FROM emp RIGHT JOIN dept
	ON dept.deptno=emp.`deptno`
	
#主键的使用,主键列的值不能重复且不为空
#一张表只能有一个主键,但可以有复合主键
#主键的定义方式:可以在列的后面定义PRIMARY KEY,也可以在表的最后一行定义PRIMARY KEY()
#使用DESC可以查看表的主键情况
CREATE TABLE tab03(
	id INT ,
	`name` VARCHAR(32),
	#复合主键,id和name不能同时相同
	PRIMARY KEY(id,`name`)
	)
INSERT INTO tab03 VALUES(01,'rick')
INSERT INTO tab03 VALUES(01,'morty')
SELECT *FROM tab03

#一张表中可以有多个unique,unique限制该列唯一,但如果没有设置not null的话会有多个值

#主外键
#主表 my_class
CREATE TABLE my_class(
	id INT PRIMARY KEY,
	`name` VARCHAR(32) NOT NULL DEFAULT '')

#从表my_stu
CREATE TABLE my_stu(
	id INT PRIMARY KEY,
	`name` VARCHAR(32) NOT NULL DEFAULT '',
	class_id INT,
	#指定外键关系
	FOREIGN KEY (class_id)REFERENCES my_class(id))
INSERT INTO my_class VALUES(100,'java'),(200,'java')
SELECT *FROM my_class
INSERT INTO my_stu VALUES(01,'rick',100),(02,'morty',200)
#因为主键的原因没有300的班级所以加入不进去
INSERT INTO my_stu VALUES(03,'rick',300)
SELECT *FROM my_stu


#表的类型是innodb, 这样的表才支持外键
#外键字段的类型要和主键字段的类型一致(长度可以不同)
#外键字段的值,必须在主键字段中出现过,或者为null前提是外键字段允许为null
#一旦建立主外键的关系,数据不能随意删除了

#check只是起到语法检测的作用,并不会阻止数据的加入
CREATE TABLE tab04(
	sex VARCHAR(32) CHECK (sex IN('man','woman')),
	sal DOUBLE CHECK (sal>1000 AND sal<2000))
INSERT INTO tab04 VALUES('mid',5000)
SELECT *FROM tab04
CREATE DATABASE shop_db

CREATE TABLE goods(
	goods_id INT PRIMARY KEY,
	goods_name VARCHAR(32),
	unitprice DOUBLE CHECK(unitprice>1.0 AND unitprice<9999.99),
	categroy VARCHAR(32),
	provider VARCHAR(32))


CREATE TABLE customer(
	customer_id INT PRIMARY KEY,
	customer_name VARCHAR(32) NOT NULL DEFAULT "",
	address VARCHAR(32),
	email VARCHAR(32) UNIQUE,
	sex VARCHAR(32)CHECK(sex IN('man','woman')),
	card_id INT)
	

CREATE TABLE purchase(
	order_id INT,
	customer_id INT NOT NULL DEFAULT 0,
	goods_id INT NOT NULL DEFAULT 0,
	nums INT,
	FOREIGN KEY (customer_id) REFERENCES customer(customer_id),
	FOREIGN KEY (goods_id) REFERENCES goods(goods_id)
	)
	
#自增长,一般和主键配合使用,类型为整形,也可以单独使用(配合unique)
CREATE TABLE tab05(
	id INT PRIMARY KEY AUTO_INCREMENT,
	`name` VARCHAR(32) NOT NULL DEFAULT "")
SELECT *FROM tab05
#这里如果id为空则自增长从1开始每次+1
INSERT INTO tab05 VALUES(NULL,'rick')
#不指定增长值默认为null
INSERT INTO tab05 (`name`) VALUES('morty')
#在未向表中添加数据时,可以修改自增长的初始值
ALTER TABLE tab05 AUTO_INCREMENT=10
#如果给自增长的列添加指定值后,自增长的起始值就会从指定值开始


#索引,用于优化搜索,但会增加源文件的大小,也会影响对表的修改
#没设置索引之所以慢是因为,每次查找都是全表扫描
#设置索引之后就会形成一个索引的数据结构例如:二叉树,会大大减少查找时间

DROP TABLE tab05
CREATE TABLE tab05(
	id INT,
	`name` VARCHAR(32),
	sal DOUBLE
	)

#创建普通索引
CREATE INDEX name_index ON tab05(`name`)
#创建唯一索引,当该列确定不重复的时候使用
CREATE UNIQUE INDEX sal ON tab05(id)
#显示表是否有索引
SHOW INDEX FROM tab05
SHOW KEYS FROM tab05
SHOW INDEXES FROM tab05
DESC tab05
#修改索引:先删除在添加
#添加主键索引
ALTER TABLE tab05 ADD PRIMARY KEY (id)
#删除索引
DROP INDEX sal ON tab05
#删除主键索引
ALTER TABLE tab05 DROP PRIMARY KEY
SELECT *FROM tab05


#事务
#开始事务
START TRANSACTION
#设置保存点
SAVEPOINT a
#执行dml操作
INSERT INTO tab05 VALUES(1,'rick',100);

SAVEPOINT b

INSERT INTO tab05 VALUES(2,'morty',200);
#回退到b
ROLLBACK TO b
#直接回退到事务开始的状态
ROLLBACK
#提交事务,所有的保存点不再生效
COMMIT
#查看当前会话的隔离级别
SELECT @@tx_isolation
#查看当前系统的隔离级别
SELECT @@global.tx_isolation
#更改会话隔离级别为READ UNCOMMITTED
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
#更改系统的隔离级别,默认为 repeatable read
SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

#修改存储引擎
ALTER TABLE tab05 ENGINE=INNODB

?

?

?

?

?

?

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-15 22:37:16  更:2022-03-15 22:39:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:07:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码