一、库操作
- 显示所有数据库
show databases; - 创建数据库
create database 数据库名; - 登陆数据库
mysql -h 127.0.0.1 -uroot -p - 选择数据库
use 数据库名称; - 删除数据库
drop database 数据库名称; - 查看数据库
show database;
二、表结构操作
- 创建表
a、创建新表
create table 表名
{
字段名 1,数据类型[完整性约束条件],
字段名 2,数据类型[完整性约束条件],
…
字段名 n,数据类型[完整性约束条件],
}
如:
CREATE TABLE `01test` (
`id` int(11) NOT NULL,
`firmid` varchar(20) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
`balance` decimal(20,2) DEFAULT NULL,
`holdsum` int(20) DEFAULT NULL,
`exchangeid` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
b.复制一张表或者利用查询结果创建一张表
create table 03test as (select * from 01test)---复制整张表
create table 04test as (select firmid from 01test)---部分字段作为一张新表
2.查看表结构
desc 表名;
3.查看详细表结构,可查看DDL
4.删除表
drop table [表名];
5.修改表
A、更改字段数据类型
alter table 表名 modify name char(20) not null;
B、更改字段位置
alter table 表名 modify sex int(2) after id;
C、更改字段名称
alter table 表名 change sex 新名字 varchar(20);
D、删除表中字段
alter table user drop sex;
E、增加表中字段
alter table user add age int(3);
F、更改表名
alter table user rename student;
G、显示数据库中表名
show tables;
三、表记录操作
1、查询SELECT
SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[OFFSET M ][LIMIT N]
查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
SELECT 命令可以读取一条或者多条记录。
你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
你可以使用 WHERE 语句来包含任何条件。
你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。
你可以使用 LIMIT 属性来设定返回的记录数
查询出来某列数据进行转换
a、整列数据替换
SELECT
clearing_id AS BROKERID,
real_name AS NAME,
'normal' AS STATUS,
'1' AS type,
NULL AS "abc",
FROM
clearing.user---查询结果STATUS替换"normal",type列替换"1",abc替换成null
b、列数据根据条件进行替换
SELECT
m.auser_id,
n.bank_name,
"上海银行" as CLEARINGBANK,
CASE m.state
WHEN "bind" THEN
1
ELSE
0
END AS state
FROM clearing.openbankno
case 字段名 WHEN “xx” THEN xx else xx end 当字段为xx时替换成xx ,一般结合create table 使用,查询的结果导出或者生成新表。
b、列数据数据类型转换
暂不记录
2、增加INSERT INTO
a.向原表中某些字段中插入一条记录。
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN ); --某几个字段插入一条数据
b.向原表中字段中插入多条记录。
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES ( value1, value2,...valueN )
( value1, value2,...valueN ); --某几个字段插入多条数据
c.向原表中整表中插入多条记录。
INSERT INTO table_name VALUES ( value1, value2,...valueN )
( value1, value2,...valueN ); --整表插入数据
d.向原表中整表中插入多条记录,插入数据是查询出的结果。
INSERT INTO table_name select * from table_aa; --整个表插入数据,后面的
select可以多种组合(内外连接查询的结果)
注意:如果数据是字符型,必须使用单引号或者双引号,如:”value”。
3、修改UPDATE
UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
你可以同时更新一个或多个字段。
你可以在 WHERE 子句中指定任何条件。
你可以在一个单独表中同时更新数据。
跨表更新数据
假定我们有两张表,一张表为Product表存放产品信息,其中有产品价格列Price;另外一张表是ProductPrice表,我们要将ProductPrice表中的价格字段Price更新为Price表中价格字段的80%。
在Mysql中我们有几种手段可以做到这一点,一种是update table1 t1, table2 ts …的方式:
UPDATE product p,
productPrice pp
SET pp.price = pp.price * 0.8
WHERE
p.productId = pp.productId
AND p.dateCreated < '2004-01-01'
另外一种方法是使用inner join然后更新:
UPDATE product p
INNER JOIN productPrice pp
ON p.productId = pp.productId
SET pp.price = pp.price * 0.8
WHERE p.dateCreated < '2004-01-01'
另外我们也可以使用left outer join来做多表update,比方说如果ProductPrice表中没有产品价格记录的话,将Product表的isDeleted字段置为1,如下sql语句:
UPDATE product p
LEFT JOIN productPrice pp
ON p.productId = pp.productId
SET p.deleted = 1
WHERE pp.productId IS null
另外,上面的几个例子都是两张表之间做关联,但是只更新一张表中的记录,其实是可以同时更新两张表的,如下sql:
`UPDATE product p
INNER JOIN productPrice pp
ON p.productId = pp.productId
SET pp.price = pp.price * 0.8,
p.dateUpdate = CURDATE()
WHERE p.dateCreated < '2004-01-01' `
4、删除Delete
DELETE FROM table_name [WHERE Clause]
如果没有指定 WHERE 子句,MySQL表中的所有记录将被删除。
你可以在 WHERE 子句中指定任何条件
您可以在单个表中一次性删除记录。