mysql 统计 表的数量:SELECT COUNT(1) FROM information_schema.TABLES WHERE TABLE_SCHEMA = '你的数据库'
有时候需要查询MySQL数据库中各个表大小,该如何 *** 作呢?
MySQL中有一个名为 information_schema 的数据库,在该库中有一个 TABLES 表,这个表主要字段分别是:
TABLE_SCHEMA : 数据库名
TABLE_NAME:表名
ENGINE:所使用的存储引擎
TABLES_ROWS:记录数
DATA_LENGTH:数据大小
INDEX_LENGTH:索引大小
use information_schema
SELECT
TABLE_NAME,
(DATA_LENGTH/1024/1024) as DataM ,
(INDEX_LENGTH/1024/1024) as IndexM,
((DATA_LENGTH+INDEX_LENGTH)/1024/1024) as AllM,
TABLE_ROWS
FROM
TABLES
WHERE
TABLE_SCHEMA = '你的数据库'
MySQL的一些基础语句:
行是记录 列是字段
创建库
CREATE DATABASE [IF NOT EXISTS] 数据库名 [参数[ 参数] [ 参数]...]
参数:
CHARACTER SET 码表名
COLLATE 校对规则名, 详见文档10.10.1
显示库
SHOW DATABASES
显示数据库创建语句
SHOW CREATE DATABASE 数据库名
修改库
ALTER DATABASE 数据库名[ 参数[ 参数][ 参数]...]
注意: 不能改数据库的名字
删除库
DROP DATABASE [IF EXISTS] 数据库名
*** 作表之前使用需要先确定使用哪个数据库
USE 数据库名
创建表
CREATE TABLE 表名(列名 类型[,列名 类型][,列名 类型]...)
查看所有表
SHOW TABLES
查看表的创建语句
SHOW CREATE TABLE 表名
显示表结构
DESC 表名
修改表名
RENAME TABLE 原表名 TO 新表名
修改字符集
ALTER TABLE 表名 CHARACTER SET 字符集名
删除表
DROP TABLE 表名
追加列
ALTER TABLE 表名 ADD 列名 类型[,列名 类型][,列名 类型]...
修改列类型
ALTER TABLE 表名 MODIFY 列名 类型[,列名 类型][,列名 类型]...
修改列
ALTER TABLE 表名 CHANGE COLUMN 原列名 新列名 类型
删除列
ALTER TABLE 表名 DROP 列名
插入语法:
INSERT INTO 表名[(列名[,列名]...)] VALUES(值[,值]...)
注意事项:
插入值类型必须与对应列的数据类型一致
数据不能超出长度
插入值得为之必须与列名顺序一致
字符和日期数据要放在单引号中
插入空值使用null
如果不指定插入哪一列, 就是插入所有列
中文数据
由于默认码表是utf8, 而cmd.exe的码表是gbk, 在插入中文数据的时候会报错, 所以我们需要修改客户端码表
先查看系统变量: SHOW VARIABLES LIKE 'character%'
修改客户端码表: SET character_set_client=gbk
修改输出数据的码表: SET character_set_results=gbk
修改语法
UPDATE 表名 SET 列名=值[,列名=值]...[WHERE 条件语句]
注意事项
WHERE子句选择满足条件的行进行更新, 如果不写, 则更新所有行
删除语法
DELETE FROM 表名 [where 条件语句]
注意事项
如果不加where子句, 将删除表中所有记录
delete只能用作删除行, 不能删除某一列的值, 需要用update
在delete和update的时候需要注意表与表之间的关联关系
删除表中所有数据可以使用: TRANCATE 表名, 这种方式会删除旧表重新创建, 在数据较多的时候使用
备份数据库
输入quit退出mysql, 在cmd.exe中输入:
mysqldump –u用户名 –p密码 数据库名 >文件名
恢复数据库
进入mysql.exe之后, 使用数据库之后
source 文件名
*** 作数据(查询)
DISTINCT语法
SELECT [DISTINCT] 列名[, 列名]... FROM 表名
注意事项
*可以替代列名, 表示所有列, 但是通常我们为了提高代码的可读性, 不使用*
DISTINCT为过滤重复记录
如果DISTINCT后面跟多列, 是过滤掉多列合并之后的重复
列名表达式——语法
SELECT 列名|表达式[,列名|表达式]... FROM 表名
注意事项
表达式只是显示时起作用, 不会改变数据库中的值
AS——
SELECT 列名 AS 别名 FROM 表名
注意事项
起别名时AS可以省略
不会改变数据库中的值
WHERE——
语法
SELECT 列名 FROM 表名 [WHERE 条件语句]
WHERE子句中的运算符
比较运算符
>, <, >=, <=, =, <>
注意不等于和Java中不同, 是<>
BETWEEN ... AND ...
某一区间内的值, 从 ... 到 ...
IN(列表)
在列表之中, 例: in(1,2,3) 代表1或2或3
LIKE(表达式)
模糊查询, %代表多个字符, _代表单个字符
IS NULL
判断是否为NULL
逻辑运算符
AND &&
与, 两边都为TRUE结果为TRUE
OR ||
或, 一边为TRUE结果就为TRUE
NOT !
非, 将表达式结果取反
ORDER BY——
语法
SELECT 列名 FROM 表名 ORDER BY 列名 ASC|DESC
注意事项
ORDER BY 指定排序的列名可以是表中的列名, 也可以是SELECT语句后面起的别名
ASC为升序, DESC为降序
ORDER BY应在查询语句的结尾
COUNT函数——
语法
SELECT COUNT(*)|COUNT(列名) from 表名 [WHERE 条件语句]
注意事项
COUNT(列名)的方式是统计指定列中有多少条记录, 不包括值为NULL的
COUNT(*)则是统计表中有多少条数据
COUNT(DISTINCT 列名) 统计不重复的记录数
如果加上WHERE子句, 则是统计满足条件的记录
6第一种方式: 先入库后使用 我们假设现在有有一个CSV文件Contacts.CSV 文件的内容是联系人信息。首先我们需要在数据库中建一个对应的表TC_Contacts,然后利用下面的SQL代码将CSV文件导入到这个表里面: INSERT INTO TC_Contacts23 SELECT * FROM 4 OPENROWSET('MSDASQL', 5 'Driver={Microsoft Text Driver (*.txt*.csv)}6 DEFAULTDIR=D:\DataExtensions=CSV', 7 'SELECT * FROM "Contacts.CSV"') 其中:1.TC_Contacts为目标表的名字。 对于目标表,要求对应的字段能够接收CSV文件中对象列的数据,这里特别需要注意的是字符串的长度,日期时间格式和整数浮点数的处理由于CSV文件中实际上都是字符串,那么在导入的过程中就有可能出现不能转换的情况。例如:日期格式不符合数据库的要求,或者字符串不能转化为整数或者浮点数等。 对于目标表,字段数目和顺序可以和CSV文件中的不一样。其实在整个的SQL语句中只有OPENROWSET是用来处理CSV文件的。其它部分都是普通的T-SQL,在T-SQL中能做的事情在这里都可以做。例如:如果你的TC_Contacts比CSV多一个字段gid uniqueidentifier ,那么就可以把SQL语句修改为: 1 INSERT INTO TC_Contacts 2 SELECT newid(),* FROM 3 OPENROWSET('MSDASQL', 4 'Driver={Microsoft Text Driver (*.txt*.csv)}5 DEFAULTDIR=D:\DataExtensions=CSV', 6 'SELECT * FROM "Contacts.CSV"') 这样就可以给每条记录增加一个id了。 2.SQL代码中的DefaultDir 也就是D:\Data 是指存在于SQL Server服务器上的位置,而不是在提交该代码的客户机上。这一点对于初次接触的人来说很关键。SQL Server如果在服务器上找不到文件会报告错误。但是这个错误的消息不是那么直接了当。 3.有的CSV文件中第一行不是列标题,而是和其它行一样是普通的数据行。这个时候就需要一个Schema.ini来定义CSV文件的格式。Schema.ini的格式我会专门写一篇来介绍一下。在Schema.ini文件中会指定CSV文件的一些特性,这样有助于Microsoft Text Driver来处理数据. 第二种:直接使用 通过OdbcConnection可以创建一个链接到csv文件的链接,链接字符串的格式是:"Driver={Microsoft Text Driver (*.txt*.csv)}Dbq="+cvs文件的文件夹路径+" Extensions=asc,csv,tab,txtPersist Security Info=False1进入hive之前要把hadoop给启动起来,因为hive是基于hadoop的。所有的mr计算都是在hadoop上面进行的。
2
在命令行中输入:hive。这个时候就可以顺利的进入hive了。当然了,如果你想直接执行hql脚本文件可以这样:hive
-f
xxxxx.hql。
3
进入hive之后一一般默认的数据库都是default。如果你切换数据库的话所建的表都会是在default数据库里面。
4
创建数据库的语法是:create
database
database_name非常简单的,其实hive跟mysql的语法还是比较相似的。为什么呢?请继续往下
5
切换数据库的时候可以输入:use
database_name;
查看所有数据库的时候可以输入:show
databases
查看所有表的时候可以输入:show
tables
6
看表结构的时候可以输入:describe
tab_name
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)