MYSQL 知识整理

一、基础操作

SQL语句不区分大小写

SHOW DATABASES; 展示可用的数据库

SHOW TABLES; 返回某个数据库内的表

USE databasesname; 用这个数据库

SHOW CREATE DATABASE; SHOW CREATE TABLE; 显示创建特定数据库或表的MYSQL语句

SHOW ERRORS ;SHOW WARNINGS 显示服务器错误或警告消息

SHOW COLUMN FROM tablename 返回表的每一列的信息

SHOW GRANTS 显示授予用户的安全权限

SHOW STATUS 显示服务器状态信息

二、检索数据

select column from table; 从表中搜索某一列,搜索多个列用逗号隔开

select * from table; 检索所有的列

select DISTINCT column from table;将列中相同的值剔除

select * from table limit 4;  显示前4行信息  limit 2,3 显示从第二行开始的后三行

select * from table order by column; 根据某一列排序 按多个列排序用逗号隔开,优先按照第一个列排,第一列值相同时按照第二列排依次类推  默认按照升序排练

select * from table order by column1 desc ,column2 列1按照降序排列,列2按照升序排列

三、过滤数据

select * from table where column='q'; 检索某一列的值为q的数据

where 子句操作符: = 等于 < > 不等于  != 不等于 <小于 >大于 <=小于等于 >=大于等于 BETWEEN  and在指定的的两个值之间包含指定的两个值

select * from table where colum is null; 检查空值

select * from table where column in(A,B)检索出某列的值在A和B之间的数据包括A,B  not in 不在A,B之间的数据

select * from table where  A and B ; 组合筛选 也可以用OR 表示满足其中的一个条件即可

计算次序:  where A or B and C  满足A 或者 B且C的数据 (这是因为and的优先级大于or)

               where (A or B) and C  满足A或者B 并且符合C条件的数据 

where column like ‘jet%’ ;   %通配符,检索以jet起头的词

where column like ‘_ton anvil’;   _通配符 与%用途一样,但是只匹配一个字符

四、mysql 正则表达式

where column REGEXP ‘A’ ;检索某列包含文本A的数据 REGEXP ‘.A’ .表示匹配任意一个字符

where column REGEXP ‘A|B’ 检索包含A或B的数据,类似于or

REGEXP '[abc]'检索匹配a或b或c

REGEXP '[^ABC]'匹配除这些字外的任何东西

REGEXP ‘[123456]’=REGEXP '[1-6]'

匹配特殊字符时需要加\\比如 匹配. REGEXP '\\.'

五、使用函数

concat()函数 : 拼接字段  例:select concat (column1,‘( ’,column2,‘ )’) from column;

RTrim()函数: 去掉右边的所有空格

 select concat (column1,‘( ’,column2,‘ )’) from column as A  将拼接的字段起别名 为A 

select column1*column2 as A from table; 计算列1和列2的乘积以别名A显示出来  + - * /

upper() 函数  :将文本转化为大写    lower():转换为小写

length()函数:返回串的长度  


聚集函数:运行在行组上,计算和返回单个值的函数

AVG()返回某列的平均值

COUNT()返回某列的行数  1.count(列名) 计算某列的行数忽略null值  2.count(*)计算表中行的数目,包含null的也计算在内

MAX()返回某列的最大值

MIN() 返回某列的最小值

SUM()返回某列值之和


分组数据:使用group by 进行分组

例:select column,count(*)from table group by column with rollup; 统计出某一列相同的值有多少

with rollup 起到汇总总共有多少行的作用

过滤分组:HAVING  ,与where使用方法类似,where过滤的是行

例:select column ,count(*)from table group by column having count(*)>2; 过滤出汇总大于2个的数据

select 子句的使用顺序:select  /from /where/ group by/having/order by/limit

六、多个表之间的查询

子查询:

select column1 from table1 where column2 in (select column2 from table2 where column3='A');

筛选出列2中值为A的 列1的值 

1. in 也可以换为 = > < 等  2.一条语句里可以嵌套多个 子查询


作为计算字段使用子查询:

select column1,(select count(*) from table2 where tabel2.column=table1.column) from table1;

计算列1中的值在表2中出现了几次


联结表:

select column1,column2 from table1,table2 where table1.column=table2.column 

检索列1和列2 ,这两个列分别在两个表中,where后面指定了两个表中共同的列.   也可以用此方法联结多个表

inner join  on 可达到相同的效果:select column1, column2 from table1 inner join table2 on table1.column=table2.column 

给表使用别名:select column1,column2 from table1 as A,table2 as B where A.column=B.column 

自联结:

select p1.column1, p1.column2 from table1 as p1,table2 as p2 where p1.column2=p2.column2 and column1='A'

table1和table2为同一个表   已知A这个值,找到对应的列2中的值,然后找到该表中与列2值一样的列1的值

组合查询:union 两个select语句之间加入union 使两个查询结果组合到一起,查询结果会自动去除重复的值

select column1 from table1 where A

union

selct column1 from table1 where B;

union all  显示所有的查询结果,包括重复的

七、插入数据(insert into  values)

插入完整的一行:insert into table values('values1','values2','values3') 

                      也可以这样实现:insert into table (column1,column2,column3) values ('values1','values2','values3')

插入多行:insert into table (column1,column2,column3) values ('values1','values2','values3');

               insert into table (column1,column2,column3) values ('values4','values5','values6')

            或者insert into table (column1,column2,column3) values ('values1','values2','values3');

                 values ('values1','values2','values3')

插入检索出的数据:insert into table1 (column1,column2,column3) select (column1,column2,column3) from table2

八、更新数据(update set)

update table set column1='A' where cloumn2='B';  

updata table set column1='A', column2='B' where column3='C';更新多个数据

九、删除数据(delete from)

delete from table where column='A' ; 删除某列值为A的一行  如果省略where子句则删除表中的每一行但不删除表

truncate table 删除整个表然后新建一个空表   速度比delete from table快

十、创建/更新/删除表

创建表:create table  tablename(

                               column1   int     not null auto_increment  ,

                               column2  char(50)       not null  defaul 'a',

                               column3   char(50)       null

                               primary key (column1)   )

                                 engine=InnoDB;

更新表:

alter table tablename add column char(20); 给表添加一列

alter table tablename drop column columnname; 删除某一列

删除表:drop table tablename;删除整个表

重命名表: rename table tablename1 to tablename2;

更改表中字段类型:alter table tablenme modify cloumnname 新字段类型;

修改列名:alter table tablename change 旧列名 新列名 列类型;



                        











 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值