小白 sql的查询问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小白 sql的查询问题相关的知识,希望对你有一定的参考价值。
有许多表如1 2 3什么的,但每个表里的字段都是一样的 我要一次把这么多表里的类容 如ID NAME 什么的全查出来放在一起,不使用UNION ,还有其他方法吗?
有的,方案一 使用临时表
把查询的语句都填充到临时表中,最后查询一下临时表即可
如
select * into #临时表 from 实际表1
select * into #临时表 from 实际表2
select * from #临时表
drop #临时表
方案二
或者使用join(连接)方式查询出所有的列,在进行行列转换.
这个写起来略复杂了点,如果需要的话,可以自行查询一下.
但是不推荐这么做 参考技术A sql server 2005有分区表 如果你的123表符合分区表要求 可以考虑作出分区表 一个select 就出来了
要么就只能把记录都填充到一张表里再输出, 可是这么一来 不如union节省资源
如果只是为了写代码方便 做个 union的视图 也可以啊 参考技术B 要不先把这几个表的数据全部插入到一个临时表里面,再查询这个临时表。
目前只想到这个方法。 参考技术C insert into 1 select * from 2;
insert into 1 select * from 3; 参考技术D 那可能就只能临时表了吧…… 第5个回答 2012-10-08 没有
SQL-Mysql表结构操作
一 前言
本篇内容是关于 基本的数据库操作,建表,表结构修改等内容;
学习本篇的基础是知识追寻者以前发布的文章:
公众号:知识追寻者
知识追寻者(Inheriting the spirit of open source, Spreading technology knowledge;)
二 SQL 分类操作
2.1 SQL 分类
sql 对数据库的操作分为如下三种类型,如果都学会这三种SQL语言熟练对数据库操作,说明你已经对数据库登堂入室,如果再学会数据库高级操作,说明你对数据库就有一定的使用经验,如果你还学会对数据库进行优化,分表分库,读写分离等操作,说明你使用数据库已经到专家级别;
- DDL:数据定义语言(Data Define Language),即定义数据的结构。比如:create,drop,alter操作
- DML:数据管理语言(Data Manage Language),即增删改查。比如:insert,delete,update,select。这个也在之前的文章详细写过,不再提及;
- DCL:数据控制语言(Data Control Language),对权限、事务等的控制。比如:grant(授权)revoke(取回权限),commit,roolback等; 事物在上篇已经说明,不会在本篇提及;
2.2 数据库基操
数据库的基本操作如下,也就是我们日常使用的操作
-
连接数据库: mysql -h 地址 -P 端口 -u 用户名 -p 密码;
mysql -h 192.168.0.127 -P 3306 -u root -p root
-
查看当前数据库:
SELECT DATABASE();
-
显示用户活动线程:
SHOW PROCESSLIST;
-
显示系统变量:
SHOW VARIABLES;
-
显示当前时间,用户,数据库版本号
SELECT now(), user(), version();
-
创建数据库:
CREATE DATABASE[ IF NOT EXISTS] 数据库名 [数据库选项]
数据库选项: CHARACTER SET 字符集名称 COLLATE 排序规则名称 示例:create database zszxz;
-
删除数据库: DROP DATABASE [ IF EXISTS] 数据库名;
drop database zszxz;
2.3 建表语句
数据库表的日常操作如下
CREATE [TEMPORARY] TABLE[ IF NOT EXISTS] [库名.]表名 ( 表的结构定义 ) [ 表选项]
其中 TEMPORARY 表示临时表;中括号内容都表示可选,在正规的数据库版本管理开发会经常使用到;
字段的修饰如下 数据类型
- 非空|空约束:[NOT NULL | NULL]
- 默认值:[DEFAULT default_value]
- 自动增长:[AUTO_INCREMENT]
- 唯一键|主键:[UNIQUE [KEY] | [PRIMARY] KEY]
- 备注:[COMMENT ‘string‘]
表选项一般就是指定数据库引擎和字符集:
ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=‘顾客表‘;
示例
CREATE TABLE IF NOT EXISTS `customer` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘主键‘,
`customer_name` varchar(255) DEFAULT NULL COMMENT ‘顾客名称‘,
`gender` varchar(255) DEFAULT NULL COMMENT ‘性别‘,
`telephone` varchar(255) DEFAULT NULL COMMENT ‘电话号码‘,
`register_time` timestamp NULL DEFAULT NULL COMMENT ‘注册时间‘,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=‘顾客表‘;
2.4 修改表结构
查看所有表
SHOW TABLES
查看指定数据库的表
SHOW TABLES FROM 数据库名称;
示例:SHOW TABLES FROM zszxz;
删除表
DROP TABLE[ IF EXISTS] 表名;
示例: drop table op;
清空表(清除数据)
TRUNCATE [TABLE] 表名
复制表结构
CREATE TABLE 表名 LIKE 要复制的表名;
示例: create table op like `order`;
复制表结构和数据
CREATE TABLE 表名 [AS] SELECT * FROM 要复制的表名;
示例: CREATE TABLE op AS SELECT * FROM `order`;
常见的alter操作如下:
增加一列(追加至末尾)
alter table [数据库名.]表名 add [column] 字段 数据类型;
示例: alter table `order` add column `year` year ;
增加到第一列
alter table [数据库名.]表名 add [column] 字段 数据类型 first;
增加一列到指定字段名后
alter table [数据库名.]表名 add [column] 字段 数据类型 after 另一个字段;
修改字段名的 数据类型
alter table [数据库名.]表名称 modify [column] 字段名 新的数据类型;
示例: altert table `order` modify column `gender` tinyint;
修改表字段的数据类型,并且移动至第一列
alter table [数据库名.]表名称 modify [column] 字段名 数据类型 first;
修改表字段的数据类型,并且移动至指定字段后面
alter table [数据库名.]表名称 modify [column] 字段名 数据类型 after 另一个字段名;
修改表字段的名称
alter table [数据库名.]表名称 change [column] 旧字段名 新的字段名 数据类型;
添加主键
alter table [数据库名.]表名称 ADD PRIMARY KEY(字段名);
示例: altert table `order` add primary key(`id`)
添加唯一键
alter table [数据库名.]表名称 ADD UNIQUE [索引名] (字段名)
添加索引
alter table [数据库名.]表名称 ADD INDEX [索引名] (字段名)
删除一列
alter table [数据库名.]表名称 drop [column] 字段名;
示例:altert table `order` drop column `gender`;
删除索引
alter table [数据库名.]表名称 DROP INDEX 索引名
删除主键
alter table [数据库名.]表名称 DROP PRIMARY KEY
删除外键
alter table [数据库名.]表名称 DROP FOREIGN KEY 外键
关注知识追寻者:
以上是关于小白 sql的查询问题的主要内容,如果未能解决你的问题,请参考以下文章
小白最近在学习EXCEL, 听老师讲SQL 有点迷糊,向问问小白级别问题:SQL是EXCEL里的用的吗?