CREATE DATABASE learnMysql
DROP DATABASE learnmysql
USE learnmysql
USE db1;
SELECT COUNT(*) FROM mytable; # selects from db1.mytable
USE db2;
SELECT COUNT(*) FROM mytable; # selects from db2.mytable
USE db1;
SELECT author_name,editor_name FROM author,db2.editor
WHERE author.editor_id = db2.editor.editor_id;
use语句被设立出来,用于与Sybase相兼容。
use 其他数据库名字
就可以了。
SHOW DATABASES
比如数据库名称old_db想改名为new_db
MySQL修改数据库名称比较麻烦,不支持直接修改,需要通过其它方式间接达到修改数据库名称的目的。
在 MySQL 5.1.23 之前的旧版本中,我们可以使用 RENAME DATABASE 来重命名数据库,但此后版本,因为安全考虑,删掉了这一条命令。
当数据库体积比较小时,最快的方法是使用mysqldump命令来创建整个数据库的转存副本,然后新建数据库,再把副本导入到新数据库中。
使用此方法实际上将所有表从一个数据库移动到另一个数据库,这实际上重命名了该数据库(MySQL没有单个语句的操作),移动后原始数据库继续存在,但是里面没有表。
rename table old_db.tb to new_db.tb;
2.4 如何使用shell脚本来批量修改表名:
当库下表比较多的时候,用上面方法纯手动也不现实,好在linux下可以用shell脚本来批处理。
附上一个shell脚本批量修改表名称。
#!/bin/bash
mysql -uroot -p123456 -e ‘create database if not exists new_db;’
list_table=$(mysql -uroot -p123456 -Nse “select table_name from information_schema.TABLES where TABLE_SCHEMA=‘old_db’”)
for table in
l
i
s
t
t
a
b
l
e
d
o
m
y
s
q
l
−
u
r
o
o
t
−
p
123456
−
e
"
r
e
n
a
m
e
t
a
b
l
e
o
l
d
d
b
.
list_table do mysql -uroot -p123456 -e "rename table old_db.
listtabledomysql−uroot−p123456−e"renametableolddb.table to new_db.$table"
done
mysql登陆命令行参数
-e, —execute=name # 执行mysql的sql语句
-N, —skip-column-names # 不显示列信息
-s, —silent # 一行一行输出,中间有tab分隔
方案一:
备份db1里的t7表
[root@stu1 mysql]# mysqldump -u root -p123 db1 t7 > t7.sql
恢复db1里的t7表
[root@stu1 mysql]# mysql -u root -p123 db1 < t7.sql
方案二:
create table fund_netvalue_bak_2013_11_08 as select * from fund_netvalue
配餐:
备份db1里面的tb1和tb2的表
[root@stu12 mysql]# mysqldump db1 tb1 tb2 -u root -p123 > biao.sql
方案三:
SQL SELECT INTO 实例 - 制作备份复件
下面的例子会制作 “Persons” 表的备份复件:
SELECT
*
INTO
Persons_backup
FROM Persons
IN 子句可用于向另一个数据库中拷贝表:
SELECT
*
INTO
Persons
IN
‘Backup.mdb’
FROM Persons
如果我们希望拷贝某些域,可以在 SELECT 语句后列出这些域:
SELECT
LastName,FirstName
INTO
Persons_backup
FROM Persons
SQL SELECT INTO 实例 - 被连接的表
从一个以上的表中选取数据也是可以做到的。
下面的例子会创建一个名为 “Persons_Order_Backup” 的新表,其中包含了从 Persons 和 Orders 两个表中取得的信息:
SELECT
Persons.LastName,Orders.OrderNo
INTO
Persons_Order_Backup
FROM
Persons
INNER JOIN
Orders
ON
Persons.Id_P=Orders.Id_P
方案四:
INSERT INTO SELECT语句
语句形式为:Insert into Table2(field1,field2,…) select value1,value2,… from Table1
要求目标表Table2必须存在
create table tabname(
字段名1 类型,
字段名2 类型,
字段名3 类型,…);
例:
CREATE TABLE student(
stu_id INT AUTO_INCREMENT PRIMARY KEY,
stu_name VARCHAR(10),
stu_sex VARCHAR(1),
stu_age INT,
stu_class VARCHAR(20));
其中 AUTO_INCREMENT 表示该字段自增;PRIMARY KEY表示该字段为主键
创建表后设置自增初始值,不能创建的同时设置自增值
alter table student AUTO_INCREMENT =1
create table 新表名 like 旧表名
create table 新表名 as select 列名1,列名2… from 旧表名
drop table tabname
desc 表名
alter table 表名 add 列名 类型
alter table 表名 add 列名 类型 after 已有列名
alter table 表名 add 列名 类型 first
alter table 表名 drop 列名
alter table 表名 change 旧列名 新列名 类型
alter table 表名 modify 列名(已有) 新的类型
Alter table 表名 add primary key(列名)
Alter table 表名 drop primary key
13.添加外键----本表字段类型和外键的字段类型必须一致才能添加,例如都是int 或都是char
alter table 表名 add foreign key(列名) references 表名(主键)
删除外键:需要找到外键特有的名称
14.约束类型
| 关键字 | 说明 |
|---|---|
| not null | 非空约束 |
| unique | 唯一约束 |
| primary key | 主键 |
| foreign key | 外键 |
| auto_increment | 自增长 |
| default | 设置默认值 例:default ‘值’ |