MySQL的基本使用语句整理

最近由于业务线的更换,后期可能涉及频繁的使用sql语句,故在假期期间sql语句进行整理如下(随时更新,有不正确之处,请指教*_*):
db_name:数据库名称
table_name:表名称
field_name:字段名称
data_type:数据类型
value:字段对应的值
virtual_table:虚拟表
例如(select field1_name,sum(field2_name) as all from db_name.table_name )as virtual_table_name

|(一)新建库-表-记录

操作 语句 备注
新建库 create database db_name charset utf-8 默认只支持英文,需要增加charset 设置
新建表 create table table_name(id int primary key auto_increment,field1_name varchar(20) not null,field2_name enum(“M”,“F”) default(“F”)
新增记录 insert into table table_name (field1_name,field2_name,…,fieldn_name) values (value1,value2,…,valuen)

(二)增加表字段-

操作 语句 备注
增加表字段 alter table table_name add field1_name data_type 增加field_name字段,数据类型为data_type设定的

(三)删除库-表-记录-字段

操作 语句 备注
删除库 (drop) drop database db_name 慎用
删除表(drop) drop table table_name 慎用
删除记录"(delete) delete from table_name where condition
删除字段(drop) alter table drop field_name 删除掉field_name字段

(四)修改表字段属性-表名-字段的值

操作 语句 备注
修改字段属性(modify) alter table table_name modify field1_name data_new_type 只可以修改数据类型, 不可以修改字段的名称
修改字段属性(change) alter table table_name change field1_name field1_name data_new_type 此时和使用modify一样
alter table table_name change field_old_name field_new_name data_new_type 可以修改所有字段
修改表名称(rename) alter table table_old_name rename table_new_name -
修改表中的值(update) update table_name set field1_name= new_value1, field2_name= new_value2 where condition 本条使用较多

(五)查询
(1)数据库基本查询使用

操作 语句 备注
查看所有数据库 show databases
使用数据库 use db_name
查看所有表 show tables
表结构的查询 desc table_name
show columns from table_name
复制表结构 create table table_new_name like table_old_name
显示表的详细索引信息 show index from table_name
退出 exit
quit

(2)数据库中单表查询

操作 语句 备注
基本语法 select */field_name/as(别名) /distinct(去重)/聚合函数 from table_name/virtual_table 必有部分,注意关键字与()之间不要有空格
where condition 填写条件,非必有部分
group by field1_name,field2_name 支持一个分组也支持联合分组,联合分组先按field1_name进行分组,再按照field2_name进行分组
having 一般后面加聚合函数均多 只能跟在group by 之后
order by field_name desc 默认为按照升序进行排序,降序为desc
limit m,n 从m+1记录开始向下取n条记录,不写m即默认从第一条开始取
时间问题 select sysdate() 获取当前系统时间
select date_format(table_name.field_name,’%Y-%m-%d’) 只获取时间中的日期
select * from table_name where TIMESTAMPDIFF(DAY,date_format(store_info.sign_time,’%Y-%m-%d’),date_format(sysdate(),’%Y-%m-%d’))>60
获取满足距当前时间大于60天的数据
SECOND \MINUTE \HOUR \DAY \MONTH \YEAR 比较秒、分钟、小时、天、月、年更换上一条的时间维度即可

(3)数据库中多表查询

查询方式 语句 说明 优点 缺点
等值连接 select */field_name from table1_name,table2_name,…,tablen_name 必有部分 简单 查询效率低,生成大量无效数据
where table1.primary_key = table2.foreign_key and table3.primary_key = table2_name.foreign_key and condition 必填两表连接字段,筛选条件非必有部分 不适于海量数据的查询
内连接 select * 复杂,先判断再连接(无无效数据)
from table1_name
inner join table2_name on table1_name.key = table2_name.key
inner join table3_name on table1_name.key = table3_name.key
where condition
左连接 select * 显示左边表的全部数据
from table1_name
left join table2_name on table1_name.key = table2_name.key
where condition
右连接 select * 显示右边表的全部数据
from table1_name
right join table2_name on table1_name.key = table2_name.key
where condition
发布了55 篇原创文章 · 获赞 4 · 访问量 7628

猜你喜欢

转载自blog.csdn.net/qq_44801116/article/details/102082010