mysql一些基本使用
作者:程序员11 时间:2020-06-15 人气:562 QQ交流群\邮箱:1003265987@qq.comMysql
一、合并
UNION
合并检索的列要一致,不然会报错,根据查询出来的结果进行合并。
ALL(可选)
查询结果在合并的时候,所有列一样的数据,不会删除重复的数据。
DISTINCT(可选,默认是这个)
查询结果在合并的时候,所有列一样的数据,不会删除重复的数据,只保留一条数据。
二、索引
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
欢迎阅读本文章,觉得有用就多来支持一下,没有能帮到您,还有很多文章,希望有一天能帮到您。