MySQL操作

基本操作

指定位置添加列

  • 添加new_column_nameold_column_name之后(AFTER)
ALTER TABLE tablename ADD COLUMN new_column_name VARCHAR(255) CHARACTER SET UTF8 AFTER old_column_name;
  • 添加new_column_name到第一列(FIRST)
ALTER TABLE tablename ADD [COLUMN] new_column_name VARCHAR(255) CHARACTER SET UTF8 FIRST

表修改

  • 修改表名
ALTER TABLE table_name RENAME TO new_table_name;
  • 修改列名
ALTER TABLE table_name CHANGE old_column_name new_column_name;
  • 修改属列属性
ALTER TABLE table_name MODIFY column_name VARCHAR(1500);

视图

  • 创建视图(create view ... as ...)
CREATE VIEW view_name AS
SELECT column1, SUM(column2 * column3) sum
FROM  table_name
GROUP by column1
ORDER BY sum DESC;

删除表数据

  • 删除指定数据(delete)
DELETE FROM table_name [conditions];

  • 删除全部数据(truncate, delete)
# 删除全部数据, id重置为0
TRUNCATE table_name;

# 仅删除全部数据
DELETE FROM table_name;

  • 删除表(drop)
DROP table_name;

插入数据(INSERT)

  • 插入数据
    INSERT INTO table_name(field1, field2,... fieldN)
    VALUES(value1, value2,... valueN);
  • 表间相互插入(INSERT INTO ... SELECT)
    • 两张表间相互插入
      INSERT INTO table_name1(field1, field2)
      SELECT field1, field2
      FROM table_name2;
    • 三张表间相互插入
      INSERT INTO table_name1(field1, field2)
      SELECT * FROM
      (SELECT table_name2.field1, table_name3.field2
      FROM b JOIN c) AS tb

查找(SELECT)

  • 查找重复记录
    • 查找全部重复记录 重复字段(column_1, column_2, ..., column_n)

      SELECT * FROM table_name
      WHERE (column_1, column_2, ..., column_n)
      IN (
      SELECT column1, column2, ..., column_n
      FROM table_name
      GROUP BY colum_1, column_2, ..., column_n
      HAVING COUNT(*) > 1
      );
    • 过滤重复记录(只显示一条)

      SELECT * FROM table_name
      WHERE (column_1, column_2, ..., column_n)
      IN (
      SELECT column1, column2, ..., column_n
      FROM table_name
      GROUP BY colum_1, column_2, ..., column_n
      HAVING COUNT(*) > 1
      ) AND id
      IN (
      SELECT MIN(ID) FROM table_name
      GROUP BY colum_1, column_2, ..., column_n
      HAVING COUNT(*) > 1);
  • 删除重复记录只保留id最小记录
select * from vitae a
where
(a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq 
having count(*) > 1)
and rowid not in (select min(rowid) from vitae group
by peopleId,seq having count(*)>1)

数据库导出(mysqldump)

用法: mysqldump -u用户名 -p密码 [-d] 数据库名 [表名] > 脚本名;

  • 导出数据库db_name的表结构到db.sql [-d]
mysqldump -uroot -pdbpasswd -d db_name > db.sql;
  • 导出数据库db_name中表table_name的结构到 db.sql [-d]
mysqldump -uroot -pdbpasswd -d db_name table_name > db.sql;
  • 导出数据库db_name所有表结构及数据到db.sql
mysqldump -uroot -pdbpasswd  db_name > db.sql;
  • 导出数据库db_name中表table_name结构及数据到db.sql
mysqldump -uroot -pdbpasswd db_name test > db.sql;

猜你喜欢

转载自blog.csdn.net/yuberhu/article/details/78951478