分类归档:Database

centos7下使用yum安装mysql

CentOS7的yum源中默认好像是没有mysql的。为了解决这个问题,我们要先下载mysql的repo源。

1. 下载mysql的repo源

$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

2. 安装mysql-community-release-el7-5.noarch.rpm包

$ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm

安装这个包后,会获得两个mysql的yum read more

SQL中inner join、outer join和cross join的区别

Table A 是左边的表。Table B 是右边的表。
Table A 是左边的表。Table B 是右边的表。

对于SQL中inner join、outer join和cross join的区别很多人不知道,我也是别人问起,才查找资料看了下,跟自己之前的认识差不多,如果你使用join连表,缺陷的情况下是inner join,另外,开发中使用的left join和right join属于outer join,另外outer join还包括full join.下面我通过图标让大家认识它们的区别。
现有两张表,Table A 是左边的表。Table B 是右边的表。其各有四条记录,其中有两条记录name是相同的:

1.INNER JOIN 产生的结果是AB的交集

SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name
          
2.LEFT [OUTER] JOIN 产生表A的完全集,而B表中匹配的则有值,没有匹配的则以null值取代。
read more

skip-grant-tables mysql启动参数(重置root 密码)

操作方法:
1、杀掉原来进行着的mysql:
rcmysqld stop
或者:
service mysqld stop
或者:
kill mysqld
2、以命令行参数启动mysql:
/usr/bin/mysqld_safe –skip-grant-tables
3、修改管理员密码:

用另外一个tty或SSH操作

# mysql -u root mysql
update user set password=password(‘yournewpasswordhere’) where user=’root’;
flush privileges;
exit;
4、杀死mysql,重启mysql

设置MySQL允许外网访问

1.修改配置文件
sudo vim /etc/mysql/my.cnf
把bind-address参数的值改成你的内/外网IP或0.0.0.0,或者直接注释掉这行.
2.登录数据库
mysql -u root -p

输入密码
mysql> use mysql;
3.查询host
mysql> select user,host from user;
4.创建host
如果没有”%”这个host值,就执行下面这两句:
mysql> update user set host=’%’ where user=’root’;
mysql> flush privileges;
5.授权用户
任意主机以用户root和密码mypwd连接到mysql服务器
mysql> GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘mypwd’ WITH GRANT OPTION;
mysql> flush privileges;

IP为192.168.1.102的主机以用户myuser和密码mypwd连接到mysql服务器
mysql> GRANT ALL PRIVILEGES ON read more

Java jdbc调用Oracle数据库存储过程

一、了解CallableStatement接口

1.callablestatement接口提供了两种调用形式

{?= call <procedure-name>[(<arg1>,<arg2>, …)]} //包含结果参数的调用形式 如:函数(funciton)
{call <procedure-name>[(<arg1>,<arg2>, …)]} //不包含结果参数的调用形式 如:存储过程(procedure)

2.callablestatement接口提供的方法

void registerOutParameter(int parameterIndex, int sqlType)
 throws SQLException; //在调用存储过程的时候设置输出参数的类型,用于接收输出结果

registerOutParameter接口中有四个该方法的重载实现,具体的可以查看源码了解

setXXX(int parameterIndex,XXX x) //主要用于设置过程调用时候需要的输入参数信息  其中XXX代表对应类型

getXXX(int x) //主要用于获取过程调用后返回的参数的信息

3.callablestatement接口产生的异常提示

/*
 * @exception SQLFeatureNotSupportedException if <code>sqlType</code> is
 * a <code>ARRAY</code>, <code>BLOB</code>, <code>CLOB</code>, 
 * <code>DATALINK</code>, <code>JAVA_OBJECT</code>, <code>NCHAR</code>, 
 * <code>NCLOB</code>, <code>NVARCHAR</code>, <code>LONGNVARCHAR</code>,
 * <code>REF</code>, <code>ROWID</code>, <code>SQLXML</code>
 * or <code>STRUCT</code> data type and the JDBC driver does not support
read more

oracle exp、imp实现导出导入

一.说明
oracle 的exp/imp命令用于实现对数据库的导出/导入操作;
exp命令用于把数据从远程数据库服务器导出至本地,生成dmp文件;
imp命令用于把本地的数据库dmp文件从本地导入到远程的Oracle数据库中。

二.下面介绍的是导入导出的实例。
数据导出:
[sql][/sql] view plaincopy在CODE上查看代码片派生到我的代码片
exp myname/mypassword@192.168.100.152/orcl file = d:\my.dmp
–将数据库完全导出
exp myname/mypassword@192.168.100.152/orcl file = d:\my.dmp full = y
–只导出用户myuser下的表
exp myname/mypassword@192.168.100.152/orcl file = d:\my.dmp owner = (myuser)
–只导出test1、test2表
exp myname/mypassword@192.168.100.152/orcl file = d:\my.dmp tables=(test1,test2)

数据导入:
read more

MySql数据类型

数字

类型 大小 范围(有符号) 范围(无符号) 用途

TINYINT

1 字节 (-128127) (0255) 小整数值

SMALLINT

2 字节 (-32 76832 767) (065 535) 大整数值

MEDIUMINT

3 字节 (-8 388 6088 388 607) (016 777 215) 大整数值
INTINTEGER 4 字节 (-2 147 483 6482 147 483 647) (04 294 967 295) 大整数值

BIGINT

8 字节 (-9 233 372 036 854 775 8089 223 372 036 854 775 807) (018 446 744 073 709 551 615) 极大整数值

FLOAT

4 字节 (-3.402 823 466 E+381.175 494 351 E-38)0(1.175 494 351 E-383.402 823 466 351 E+38) 0(1.175 494 351 E-383.402 823 466 E+38) 单精度

浮点数值

DOUBLE

8 字节 (1.797 693 134 862 315 7 E+3082.225 073 858 507 201 4 E-308)0(2.225 073 858 507 201 4 E-3081.797 693 134 862 315 7 E+308) 0(2.225 073 858 507 201 4 E-3081.797 693 134 862 315 7 E+308) 双精度

浮点数值

DECIMAL

DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于MD的值 依赖于MD的值 小数值

字符串

类型 大小 用途

CHAR

0-255字节 定长字符串

VARCHAR

0-255字节 变长字符串

TINYBLOB

0-255字节 不超过 255 个字符的二进制字符串

TINYTEXT

0-255字节 短文本字符串

BLOB

0-65 535字节 二进制形式的长文本数据

TEXT

0-65 535字节 长文本数据

MEDIUMBLOB

0-16 777 215字节 二进制形式的中等长度文本数据

MEDIUMTEXT

0-16 777 215字节 中等长度文本数据

LOGNGBLOB

0-4 294 967 295字节 二进制形式的极大文本数据

LONGTEXT

0-4 294 967 295字节 极大文本数据

日期和时间类型

类型 大小

(字节)

范围 格式 用途

DATE

3

1000-01-01/9999-12-31

YYYY-MM-DD

日期值

TIME

3

‘-838:59:59’/’838:59:59’

HH:MM:SS

时间值或持续时间

YEAR

1

1901/2155

YYYY

年份值

DATETIME

8

1000-01-01 00:00:00/9999-12-31 23:59:59

YYYY-MM-DD HH:MM:SS

混合日期和时间值

TIMESTAMP

8

1970-01-01 00:00:00/2037 年某时

YYYYMMDD HHMMSS

混合日期和时间值,时间戳

ADO取数据库中的表名、字段名、字段类型

OpenSchema 方法

从提供者获取数据库模式信息。

语法

Set recordset = connection.OpenSchema (QueryType, Criteria, SchemaID)

返回值

返回包含模式信息的 Recordset 对象。Recordset 将以只读、静态游标打开。

参数

QueryType   所要运行的模式查询类型,可以为下列任意常量。

Criteria   可选。每个 QueryType 选项的查询限制条件数组,如下所列:

QueryType 值 Criteria 值
AdSchemaAsserts CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
AdSchemaCatalogs CATALOG_NAME
AdSchemaCharacterSets CHARACTER_SET_CATALOG
CHARACTER_SET_SCHEMA
CHARACTER_SET_NAME
AdSchemaCheckConstraints CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
AdSchemaCollations COLLATION_CATALOG
read more

SQL对Xml字段的操作

T-Sql操作Xml数据

一、前言

SQL Server 2005 引入了一种称为 XML 的本机数据类型。用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列;此外,还允许带有变量和参数。为了更好地支持 XML 模型特征(例如文档顺序和递归结构),XML 值以内部格式存储为大型二进制对象 (BLOB)。

用户将一个XML数据存入数据库的时候,可以使用这个XML的字符串,SQL Server会自动的将这个字符串转化为XML类型,并存储到数据库中。

随着SQL Server 对XML字段的支持,相应的,T-SQL语句也提供了大量对XML操作的功能来配合SQL Server中XML字段的使用。本文主要说明如何使用SQL语句对XML进行操作。

二、定义XML字段

在进行数据库的设计中,我们可以在表设计器中,很方便的将一个字段定义为XML类型。需要注意的是,XML字段不能用来作为主键或者索引键。同样,我们也可以使用SQL语句来创建使用XML字段的数据表,下面的语句创建一个名为“docs”的表,该表带有整型主键“pk”和非类型化的 read more

SQLite3 使用教学

OS X自从10.4后把SQLite这套相当出名的数据库软件,放进了作业系统工具集里。OS X包装的是第三版的SQLite,又称SQLite3。这套软件有几个特色:

  • 软件属于公共财(public domain),SQLite可说是某种「美德软件」(virtueware),作者本人放弃着作权,而给使用SQLite的人以下的「祝福」(blessing):
    • May you do good and not evil. 愿你行善莫行恶
    • May you find forgiveness for yourself and forgive others. 愿你原谅自己宽恕他人
    • May you share freely, never taking more than you give. 愿你宽心与人分享,所取不多于你所施予
    支援大多数的SQL指令(下面会简单介绍)。 一个档案就是一个数据库。不需要安装数据库服务器软件。 完整的Unicode支援(因此没有跨语系的问题)。 速度很快。

    目前在OS X 10.4里,SQLite是以/usr/bin/sqlite3的形式包装,也就说这是一个命令列工具,必须先从终端机(Terminal.app或其他程序)进入shell之后才能使用。网络上有一些息协助使用SQLite的视觉化工具,但似乎都没有像CocoaMySQL(配合MySQL数据库使用)那般好用。或许随时有惊喜也未可知,以下仅介绍命令列的操作方式。

    SQLite顾名思议是以SQL为基础的数据库软件,SQL是一套强大的数据库语言,主要概念是由「数据库」、「资料表」(table)、「查询指令」(queries)等单元组成的「关联性数据库」(进一步的概念可参考网络上各种关于SQL及关联性数据库的文件)。因为SQL的查询功能强大,语法一致而入门容易,因此成为现今主流数据库的标准语言(微软、Oracle等大厂的数据库软件都提供SQL语法的查询及操作)。

    以下我们就建立数据库、建立资料表及索引、新增资料、查询资料、更改资料、移除资料、sqlite3命令列选项等几个项目做简单的介绍。

    目录

    • 1 建立数据库档案
    • 2 在sqlite3提示列下操作
    • 3 SQL的指令格式
    • 4 建立资料表
    • 5 建立索引
    • 6 加入一笔资料
    • 7 查询资料
    • 8 如何更改或删除资料
    • 9 其他sqlite的特别用法
    • 10 小结

    建立数据库档案

    用sqlite3建立数据库的方法很简单,只要在shell下键入(以下$符号为shell提示号,请勿键入):

    $ sqlite3 foo.db

    如果目录下没有foo.db,sqlite3就会建立这个数据库。sqlite3并没有强制数据库档名要怎么取,因此如果你喜欢,也可以取个例如foo.icannameitwhateverilike的档名。

    在sqlite3提示列下操作

    进入了sqlite3之后,会看到以下文字:

    SQLite version 3.1.3 Enter ".help" for instructions sqlite>

    这时如果使用.help可以取得求助,.quit则是离开(请注意:不是quit)

    SQL的指令格式

    所以的SQL指令都是以分号(;)结尾的。如果遇到两个减号(–)则代表注解,sqlite3会略过去。

    建立资料表

    假设我们要建一个名叫film的资料表,只要键入以下指令就可以了:

    create table film(title, length, year, starring);

    这样我们就建立了一个名叫film的资料表,里面有name、length、year、starring四个字段。

    这个create table指令的语法为:

    create table table_name(field1, field2, field3, ...);

    table_name是资料表的名称,fieldx则是字段的名字。sqlite3与许多SQL数据库软件不同的是,它不在乎字段属于哪一种资料型态:sqlite3的字段可以储存任何东西:文字、数字、大量文字(blub),它会在适时自动转换。

    建立索引

    如果资料表有相当多的资料,我们便会建立索引来加快速度。好比说:

    create index film_title_index on film(title);

    意思是针对film资料表的name字段,建立一个名叫film_name_index的索引。这个指令的语法为

    create index index_name on table_name(field_to_be_indexed);

    一旦建立了索引,sqlite3会在针对该字段作查询时,自动使用该索引。这一切的操作都是在幕后自动发生的,无须使用者特别指令。

    加入一笔资料

    接下来我们要加入资料了,加入的方法为使用insert into指令,语法为:

    insert into table_name values(data1, data2, data3, ...);

    例如我们可以加入

    insert into film values ('Silence of the Lambs, The', 118, 1991, 'Jodie Foster'); insert into film values ('Contact', 153, 1997, 'Jodie Foster'); insert into film values ('Crouching Tiger, Hidden Dragon', 120, 2000, 'Yun-Fat Chow'); insert into film values ('Hours, The', 114, 2002, 'Nicole Kidman');

    如果该字段没有资料,我们可以填NULL。

    查询资料

    讲到这里,我们终于要开始介绍SQL最强大的select指令了。我们首先简单介绍select的基本句型:

    select columns from table_name where expression;

    最常见的用法,当然是倒出所有数据库的内容:

    select * from film;

    如果资料太多了,我们或许会想限制笔数:

    select * from film limit 10;

    或是照着电影年份来排列:

    select * from film order by year limit 10;

    或是年份比较近的电影先列出来:

    select * from film
    read more