ddddd

mysql一些基本使用

作者:程序员11 时间:2020-06-15 人气:562 QQ交流群\邮箱:1003265987@qq.com
包含:1合并2索引3获取数据库表字段名称4复制表5数据库表名查询6表字段名名查询7一个数据库的表复制到另外一个数据库表里面8触发器9表对换字段的值10查询字段为null的数据11查询出来给字段拼接12查询出来给字段截取13在查询结果加入自定义字段等等
要展示的内容

Mysql

一、合并

  1. UNION

合并检索的列要一致,不然会报错,根据查询出来的结果进行合并。

  1.  ALL(可选)

查询结果在合并的时候,所有列一样的数据,不会删除重复的数据。

  1.  DISTINCT(可选,默认是这个)

查询结果在合并的时候,所有列一样的数据,不会删除重复的数据,只保留一条数据。

二、索引

  1. UNIQUE KEY

 a.唯一索引,可以有多个,但是该列的数据必须唯一,不能有重复的。

 b. UNIQUE KEY 索引名字(要创建的索引列)

    UNIQUE KEY catename (last_name)

 2.INDEX(单)

 a.单列索引,可以有多个,该列的数据可以重复

 b.index 索引名(要创建的索引列(索引的长度可以省略))

   index catename(last_name(20))

 3.INDEX(多)

 a.多列索引,可以有多个,该列的数据可以重复

 b.index 索引名(要创建的索引列1(索引的长度可以省略),要创建的索引列2(索引的长度可以省略))

   index catename(last_name(20),first_name(20))

三、获取数据库表字段名称

 a.select column_name from information_schema.columns where table_schema='数据库名称' and table_name='表名称';

   select column_name from information_schema.columns where table_schema='allTable' and table_name='admin';

四、复制表

 a.两张表在同一个数据库INSERT INTO 表名称1 SELECT * FROM 表名称2

   表名称1:要复制数据到这个表   表名称2:要复制的数据来源

   INSERT INTO Copy_of_school_table SELECT * FROM school_table;

 b.两张表都存在,不在同一个数据库INSERT INTO 数据库1.表名称 SELECT * FROM 数据库2.表名称;

   数据库1:要复制数据到这个数据库   数据库2:要复制的数据来源

   INSERT INTO allTable.school_table SELECT * FROM wzb_conscription_new1.school_table;

   可以只复制自己想要的字段

   INSERT 数据库1.表1 (字段1,字段2) SELECT 字段1,字段2 FROM 数据库2.表2;

   INSERT allTable.school_table (age,idCard) SELECT age,idCard FROM wzb_conscription_new1.school_table;

 c.目标表不存在,不在同一个数据库Create table 数据库1.表名称 (Select * from 数据库2.表名称);

   Create table allTable.school_table (Select * from wzb_conscription_new1.school_table);

五、数据库表名查询

  select table_name from information_schema.tables where table_schema='表名称' and table_type='base table';

   table_schema:用于限定数据库名称,此处我用了自建的csdb库,你查用你的,注意:information_schema表示系统库。

 table_type='base table‘:限定只查询基表。

  select table_name from information_schema.tables where table_schema='allTable' and table_type='base table';

六、表字段名名查询

   select column_name from information_schema.columns where table_schema='数据库名称' and table_name='表名称';

   table_schema:用于限定数据库名。你查用你的,注意:information_schema表示系统库。

     table_name:用于限定表名。

   select column_name from information_schema.columns where table_schema='allTable' and table_name='admin';

七、一个数据库的表复制到另外一个数据库表里面

   CREATE TABLE 数据库名1.表名1 LIKE 数据库名2.表名2;

   INSERT 数据库名1.表名1 SELECT * FROM 数据库名2.表名2;

   CREATE TABLE allTable.admin LIKE wzb_conscription_new1.admin;

   INSERT allTable.admin SELECT * FROM wzb_conscription_new1.admin;


八、触发器

    CREATE ON

      //注释:下面触发器语句中的(NEW.username) 代表取出admin里面的username字段数据

      CREATE TRIGGER double_salary AFTER INSERT ON admin FOR EACH ROW INSERT INTO admin1 (username,nickname) VALUES (NEW.username,'d');


九、表对换字段的值

update 表名 a, 表名 b set a.字段1= b.字段2, a.字段2= b.字段1 where a.唯一标识符 = b.唯一标识符

update examination_table a, examination_table b set a.leftSee= b.rightSee, a.rightSee= b.leftSee where a.id = b.id

十、查询字段为null的数据

字段名字 is null ;

name is null;

十一、查询出来给字段拼接

select Id, concat(title, '1') as `title` from framework;

在查询的title的字段拼接一个1.

十二、查询出来给字段截取

1.LEFT()方法

--函数说明---

--1)语法:LEFT(character,integer)

--2)介绍:参数1:要截取的字符串,参数2:截取字符个数

--3)使用:

--返回从字符串左边开始指定个数的字符--

select LEFT(title,1) as `title` from framework;

2.RIGHT()方法---

right()函数说明---

--1)语法:RIGHT(character,integer)

--2)介绍:参数1:要截取的字符串,参数2:截取字符个数

--3)使用:

--返回从字符串右边开始指定个数的字符--

select RIGHT(title,1) as `title` from framework;

3.SUBSTRING()方法---

-- substring()函数说明---

--1)语法:SUBSTRING(character,start,length)

--2)介绍:参数1:要截取的字符串,参数2:开始截取的下标,参数3:截取的字符长度

--3)使用:

--返回从字符串中间的字符--

select SUBSTRING(title,1,2) as `title` from framework

十三、在查询结果加入自定义字段

1.添加固定的值

1 as type

加入一列type值为1的列

2.根据某列判断,加入一列不同的值


--搜索case表达式

case when gender = 1 then ''

when gender = 0 then ''

else 'uk'end


例子:

b.deposit_out_status,1 as type,(case when b.deposit_out_status = 1 then '未退回' when b.deposit_out_status = 2 then '转履约'else '已退回' end) as deposit_out_status_name;

加入一列deposit_out_status_name字段,根据deposit_out_status不同的值。

十四、mysql开启远程链接

1、 mysql -u root -p 然后输入 root 密码 进入 mysql> 状态2、创建格式如下: GRANT 【权限内容】 ON 【库名】.【表名】 TO '【用户名】'@'【IP地址】' IDENTIFIED BY '【密码】' WITH GRANT OPTION; ----------------------------------------------------------- GRANT ALL PRIVILEGES ON wanan_mysql.* TO 'wanan_mysql_admin'@'%' IDENTIFIED BY '191221838' WITH GRANT OPTION; 3、FLUSH PRIVILEGES; 4、select host,user from user; 查询下用户里面是不是有 % 了 参考:https://blog.csdn.net/i_dont_know_a/article/details/80599898


十五、

-- 1、查询:得到批量删除指定数据库中的指定表;

-- 2、执行:将得到的结果复制下来,再重新执行;

-- SELECT CONCAT( 'drop table ', table_name, '; ' ) FROM information_schema. TABLES WHERE information_schema. TABLES .TABLE_NAME LIKE '%_copy' -- 得到数据库中所有表面以_copy结束的表 AND table_schema = 'db_emob'; -- 查询指定的数据库


例子:查询 'zhgf_2020_1'数据库里面的删除表语句

SELECT CONCAT('drop table ',table_name,'; ')FROM information_schema. TABLES WHERE table_schema = 'zhgf_2020_1';   

查询结果如下图:   

       

十六、拷贝数据库

1.只拷贝表不拷贝数据,新表不存在

  CREATE TABLE IF NOT EXISTS 新数据库.新表 (LIKE 旧数据库.旧表);

例子:CREATE  TABLE IF NOT EXISTS $DB_NAME_NEW.$value (LIKE $DB_NAME_OLD.$value);

2.拷贝表和数据,新表不存在(注意:拷贝的新表,主键会丢失

  Create table 新数据库.新表 (Select * from 旧数据库.旧表)

例子:Create table $DB_NAME_NEW.$value (Select * from $DB_NAME_OLD.$value)

3.拷贝数据,新表存在,并且字段一样

  insert into 新数据库.新表 select * from旧数据库.旧表;

例子:insert into $DB_NAME_NEW.$value select * from $DB_NAME_OLD.$value;

4.拷贝数据,两个表结构不同,两个表都存

  insert into b(col1, col2, col3, …) select a.col1, a.col2, a.col3, … from a where …;

或者insert into 新数据库.新表(username, nickname) select a.username, a.nickname from 旧数据库.旧表 as a where a.Id=1

例子:insert into zhgf_2019_1.admin(username, nickname) select a.username, a.nickname from zhgf_2020_2.admin as a where a.Id=1



温馨提示:

欢迎阅读本文章,觉得有用就多来支持一下,没有能帮到您,还有很多文章,希望有一天能帮到您。

mysql一些基本使用---相关文章


评论区

ddddd

程序员-学习的网站-想学习编程的码农可以进来看看

首页

视频教程

购物车

我的订单