1、在SQL中建立两张表sql,Mysql那些事儿之(二)有关

作者: www.9159.com  发布:2019-11-23

1.启动H2数据库不打开浏览器窗口 2.数据库创建SQL增加了支持BigDecimal类型,h2数据库默认是不支持bigdecimal类型的: Sql代码 复制代码 代码如下: create table test,charge BigDecimal Sql代码 复制代码 代码如下: create table test,charge BigDecimal 3.通过传参数方式导入数据库脚本 复制代码 代码如下: new Console; new RunScript().runCustomTool("jdbc:h2:~/test", "sa","", "c:/schema.sql"); H2 数据库导入CSV文件 复制代码 代码如下: insert into prescription ( select * from csvread('c:/JV/Demo/prescription2012-05-10 22-26-37.csv')) ;

(一)将旧表复制到新表

Mysql那些事儿之(十)触发器一

当在SQL、MySQL数据库中一张表中插入一条记录时,触动触发器,使同一数据库的另一张表插入相同记录。 在学习的过程中,发现两者的写法是不同的。 1、在SQL中建立两张表sql_test,sql_tem。 复制代码 代码如下: create table sql_test ( id int, name varchar create table sql_tem ( id int, name varchar 复制代码 代码如下: /*SQL的触发器写法*/ create trigger insert_sql_test on sql_test for insert as insert into sql_tem select * from inserted go /*SQL的触发器写法*/ 2、在MySQL中建立两张表mysql_test,mysql_tem。(两张表的字段是一样的,建表语句与上面的类似) 复制代码 代码如下: /*MySQL的触发器写法*/ delimiter// create trigger insert_mysql_test before insert on test for each row begin insert into tem set id = new id , name = new name; /*new后面的id,name是test表的字段名*/ end // /*MySQL的触发器写法*/

1、CREATE TABLE新表 SELECT* FROM旧表;

 

该语句只是复制表结构以及数据,它不会复制与表关联的其他数据库对象,如索引,主键约束,外键约束,触发器等。

相关链接:

 

Mysql那些事儿之(一)mysql的安装

  1. CREATE TABLE if not exists new_table

  2. SELECT col1, col2, col3

  3. FROM

  4. existing_table

  5. WHERE

  6. conditions;

2、MySQL 数据库不支持 SELECT ... INTO 语句,但支持 INSERT INTO ... SELECT 

Mysql那些事儿之(二)有关数据库的操作

其中在使用select  into 语句与insert into select 语句时,新表要提前建立,并且新表与旧表的字段属性要一样才可以。

create table 新表 like 旧表;

Mysql那些事儿之(三)有关数据表的操作

新表建立之后才可以使用下面的两个语句:

SELECT * INTO 新表   FROM  旧表;

Mysql那些事儿之(四)数据表数据查询操作

INSERT INTO  新表  SELECT * FROM  旧表;

只复制希望的列插入到另一个已存在的表中:

Mysql那些事儿之(五)操作时间

INSERT INTO  新表  (column_name(s))  SELECT   column_name(s)  FROM  旧表;

;

实例:INSERT INTO Websites (name, country) SELECT app_name, country FROM apps;

Mysql那些事儿之(六)字符串模式匹配

 

;

(二)复制相同表结构

Mysql那些事儿之(七)深入select查询

 

;

对于mysql的复制相同表结构方法,有create table as 和create table like 两种

Mysql那些事儿之(八)索引

create table 新表 like 旧表;

create table 新表 as select * from 旧表 limit 0;

Mysql那些事儿之(九)常用的函数

二者的区别:

 

 

as用来创建相同表结构并复制源表数据

mysql从5.0.2版本开始支持触发器的功能。

like用来创建完整表结构和全部索引

触发器是什么?触发器就是与表有关的数据库对象,在满足定义的条件时触发,并且执行触发器中定义的语句。

oracle支持as,也是只有表结构没有索引
oracle不支持like。

我们来看一下触发器的语法结构:

(三)MySQL复制表到另一个数据库

 

访问不同数据库中的表:数据库名.表名 ,采用点 的形式。

Sql代码  

有时,您要将表复制到其他数据库。 在这种情况下,可使用以下语句:

create trigger trigger_name trigger_time trigger_event  

  1. CREATE TABLE destination_db.new_table

  2. LIKE source_db.existing_table;

  3.  

  4. INSERT destination_db.new_table

  5. SELECT *

  6. FROM source_db.existing_table;

on table_name  

SQL

for each row  

具体流程:

www.9159.com,begin  

  1. CREATE DATABASE IF NOT EXISTS testdb;

   trigger_stmt  

SQL

end;  

其次,通过将其结构从示例数据库(yiibaidb)中的offices表复制出来,在testdb中创建了offices表。

 

  1. CREATE TABLE testdb.offices LIKE yiibaidb.offices;

trigger_name是说明触发器的名称;

SQL

trigger_time是说明触发器的时间,after、before;

第三,我们将数据从yiibaidb.offices表复制到testdb.offices表中。

trigger_event是说明触发器的事件,比如delete、update、insert;

  1. INSERT testdb.offices

  2. SELECT *

  3. FROM yiibaidb.offices;

trigger_stmt是说明触发器要执行的事物语句,也就是你要干什么的东西,写在这里。

 

   www.2cto.com  

(四)MySQL数据库导入导出

举例:

1、使用mysqldump工具将数据库导出并转储到sql文件:mysqldump -u 用户名 -p 数据库名 > 导出的文件名  mysqldump -h IP -u 用户名 -p 数据库名 > 导出的文件名

2 :(导出某张表的表结构不含数据)
mysqldump -h localhost -u root -p -d test pollution > G:arcgisworkspacezypdoctest.sql
3:(导出某张表的表结构和数据,不加-d)
mysqldump -h 127.0.0.1 -u root -p test pollution > G:arcgisworkspacezypdoctest.sql
mysqldump-u root -p yiibaidb >d:database_bakyiibaidb.sql
其中>表示导出。
2、导入sql文件
在MySQL中新建数据库,这时是空数据库,如新建一个名为news的目标数据库
create database if not exists news;
use news;
导入文件:
source 路径+导入的文件名; 
source d:mysql.sql;

 

要复制一个MySQL数据库,您需要执行以下步骤:

  • 首先,使用CREATE DATABASE语句创建一个新的数据库。
  • 其次,使用mysqldump工具导出要复制的数据库的所有数据库对象和数据。
  • 第三,将SQL转储文件导入新的数据库。

作为一个演示,假设要把yiibaidb数据库复制到yiibaidb_backup数据库:

步骤1, 创建yiibaidb_backup数据库:

首先,登录到MySQL数据库服务器:

C:UsersAdministrator> mysql -u root -p
Enter password: **********

Shell

然后,使用CREATE DATABASE语句如下:

  1. CREATE DATABASE yiibaidb_backup;

SQL

第三,使用SHOW DATABASES命令验证:

  1. SHOW DATABASES

SQL

 

步骤2

 

使用mysqldump工具将数据库对象和数据转储到SQL文件中。

假设要将数据库对象和数据库转储到位于D:database_bak文件夹的SQL文件中,这里是以下命令:

  1. C:UsersAdministrator> mysqldump -u root -p yiibaidb > d:database_bakyiibaidb.sql

  2. Enter password: **********

SQL

基本上,此命令指示mysqldump使用具有密码的root用户帐户登录到MySQL服务器,并将数据库对象和yiibaidb数据库的数据导出到d:database_bakyiibaidb.sql。 请注意,运算符(>)表示导出。

步骤2

d:database_bakyiibaidb.sql文件导入到yiibaidb_backup数据库。

C:UsersAdministrator> mysql -u root -p yiibaidb_backup < d:database_bakyiibaidb.sql
Enter password: **********

Shell

请注意,运算符(<)表示导入。

要验证导入,可以使用SHOW TABLES命令快速检查。

mysql> SHOW TABLES FROM yiibaidb_backup;

建立数据库:

 

 

Sql代码  

create database db_test;  

建立film表:

  www.2cto.com  

Sql代码  

create table film(  

id smallint unsigned not null,  

name varchar(40),  

txt text,  

primary key(id)  

);  

 

在这儿写一个简单的触发器示例:

 

业务规则是 在向film表插入数据时,同时向日志表film_text中也插入一条数据.

   www.2cto.com  

当然还得建立film_text表:

 

Sql代码  

create table film_text(  

id smallint unsigned not null auto_increment,  

name varchar(40),  

txt text,  

primary key(id)  

);  

 

现在可以按照触发器的语法结构来写触发器了。

触发器代码:

 

Sql代码  

create trigger trigger_film  --trigger_film为触发器的名称  

after                                   --after为触发器要发生的时间  

insert                                 --insert为触发器发生时的条件  插入操作  

on film                                --建立触发器的表名  

for each row                      --说明触发器为行级触发器  

begin  

   --触发器要执行的逻辑  

  insert into film_text(id,name,txt) values(new.id,new.name,new.txt);  

end;  

   www.2cto.com  

运行完这个触发器之后,当在另一个film表里插入数据后,film_text里也将增加一条数据。

 

相关链接: Mysql那些事儿之(一)mysql的安装 Mysql那些事儿之(二)有关数...

本文由9159.com发布于www.9159.com,转载请注明出处:1、在SQL中建立两张表sql,Mysql那些事儿之(二)有关

关键词:

上一篇:没有了
下一篇:没有了