mysql日常操作

一、库操作

  1. 显示所有数据库
    show databases;
  2. 创建数据库
    create database 数据库名;
  3. 登陆数据库
    mysql -h 127.0.0.1 -uroot -p
  4. 选择数据库
    use 数据库名称;
  5. 删除数据库
    drop database 数据库名称;
  6. 查看数据库
    show database;

二、表结构操作

  1. 创建表
    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 子句中指定任何条件
您可以在单个表中一次性删除记录。

猜你喜欢

转载自blog.csdn.net/weixin_40283570/article/details/80407279
今日推荐