MySQL语句

库的操作

//创建数据库
create database <数据库名>;
//判断是否存在该数据库名,没有则添加
create database if not exists <数据库名>;
//删除数据库
drop database <数据库名>;
//使用数据库
use <数据库名>;

//遍历数据库
show databases;
//遍历表
show tables;
//查看表中每列的数据类型
show columns from <表名>;

表的操作

create table <表名>(
    <列名> <类型>(4) zerofill primary key not null auto_increment,
    	//(4)保证了数据为4位,zerofill意为不足4位则用'0'填充,key设置该元素为主键
    	//auto_increment意为自增(自增必须为int类型,且必须为主键),not null非空

    <列名> <类型> unique key,
    	//unique设置该元素为唯一键,数据不能重

    <列名> <类型> default '设置值',
    	//default设置默认值为 '设置值'

    primary key(<列名1>, <列名2>),
    	//primary可同时设置多个元素为主键,前提是前面不能设有主键且列名存在(主键不能分别设置)

    foreign key(<该表普通列>) references <其他表名>(<其他表主键>)
)engine=innodb default charset=utf8;(声明编码为utf8)

//删除该表中所有数据,自增也将从头开始
truncate table <表名>;
//判断有该表则删除
drop table if exists <表名>;

//修改表名
alter table <原表名> rename <新表名>;

其他操作

//修改列名
alter table <表名> rename column <原列名> to <新列名>;
//修改列(元素)的类型
alter table <表名> modify <列名> <新类型>;
//添加一个列
alter table <表名> add <新列名> <类型>;
//删除一个列
alter table <表名> drop column <列名>;
//修改列名并修改类型
alter table <表名> change <原列名> <新列名> <新类型>;

增(insert into)

//自增的可以为null,未声明的可以default默认(',,'直接跳过)
insert into <表名> values(列1,列2,列3,···);
//通过一列进行添加,可','添加多行,前提是其他列有默认或可以设null
insert into <表名> (<列名>) values('数据1'),('数据2');

删(delete)

//删除指定数据的行
delete from <表名> where <列名>='数据';
//删除指定数据和该列为空的行
delete from <表名> where <列名> is null or <列名>=' ';

改(update)

//修改指定行的指定数据
update <表名> set <列名>='新数据' where <列名>='原数据';

查(select)

//查看该表的全部数据信息
select * from <表名>;
//查看表中指定列的数据
select <列名1>,<列名2> from <表名>;
select * from <表名> where <列名> is not null and <列名> > '2020-02-02';

select * from <表名> where <列名> like '张%';
	//模糊查询('%'表示后面所有的字符,'_'表示一个字符,可以'张_2%'查张后面有两个字符的数据)
//查找该列数据中不带R的行
select * from 表 where <列名> not like '%R%';

select * from <表名> order by <列名> desc limit 1;
	//order by:声明排序,desc:降序,asc:升序,limit n:取排序后的前n行数据

select * from <表名> limit <index>,<count>;
	//从第index位开始查count行数据,从下标为0开始计数

select * from <表名> where group by <列名> having 条件;
select * from `names` group by NAME having count(1)>1;
	//将having后的条件查询出的数据以group by后的<列名>进行分组

//查找满足该列的60到80之间的行
select * from <表名> where <列名> between 60 and 80;

//查看指定列并去重
select distinct <列名> from <表名>;

//查找的该列数据只显示前n个字符
select left(<列名>,n) from <表名>;

//将两列数据拼接成一列数据
select concat(<列名1>,<列名2>) from <表名>;
	concat:如果要拼接的字符串中有一个是null,那么返回结果就是null
	例:select concat('11','22');		//结果:1122
	concat_ws:拼接时使用指定的分隔符分隔,如果要拼接的字符串中有null,则跳过该null
	例:select concat_ws(';','11',null,'22');		//结果:11;22

//查找的该列数据只显示从下标1开始的2个字符
select substr(<列名>,1,2) from <表名>;
	substr(str, pos, len)	//substr下标从1开始
	substr(str, pos)	//str为列名/字符串,pos为起始位置,len为截取字符个数/长度

//locate下标从1开始
select locate('<要查找数据>',<列名>,n) from <表名>;
	//<列名>中从第n处开始查找,找到第一次出现<要查找数据>的位置(显示的是位置下标)

子查询

//in()语句只会执行一次,它查出字表的所有字段缓存起来,再进行比较
select * from <表名1> where <列名_id> in (
	select id from <表名2> where <列名>判断条件
);	user表有10000条记录,order表有1000000条记录,那么最多有可能遍历10000*1000000次,效率很差.

//=(子查询)中子查询结果只能取一值
select * from <表名1> where <列名_id> = (
	select id from <表名2> where <列名2>判断条件
);

//exists语句会执行多次,它并不会去缓存exists的结果集,因为这个结果集并不重要,你只需要返回真假即可
select * from <表名1> where <列名_id> exists (
	select id from <表名2> where <列名>判断条件
);	user表有10000条记录,order表有1000000条记录,那么exists()会执行10000次去判断user表中的id是否与order表中的user_id相等.

连表查询

select 表1<列名1>,<列名2>,··· from <表名1> where <列名>判断条件
union
select 表2<列名1>,<列名2>,··· from <表名2> where <列名>判断条件
order by <列名>;
	//两表的查询后表单是两表的上下连表,无论是否同一列,按各自表的列顺序进行排序
	//order by:声明按指定列表排序,union:只会选取不同的值(去重),union all:选取全部的值

select * from <表名1>
inner join <表名2>
on <表名1>.<列名> 判断条件 <表名2>.<列名>
	//两表的查询后表单是两表的左右连表
	//inner join:表的交集,outer join:表的并集
	//left join:以左表为主,右表填入(左没有,右不能填,左有右没有,默认null),right join反之

其他

数学函数:

​ 绝对值函数:select abs(字段) from 表 ps:此函数指的是求绝对值

​ 平方根函数:select sqrt(9) ps:得到的值为3

​ 求余函数: select mod(10,3) / select 10%3 ps:得到的值为1

​ 随机函数: select rand() ps:得到的值为0~1

​ 幂运算函数:select pow(10,2) ps:10的2次方

字符串函数:

​ 长度函数: select length(‘内容’)

​ 合并函数: select concat(’hello’,’world’)

​ 截取字符串函数:select substring(字段,start,end)

日期/时间函数:

​ 当前日期函数:curdate()

​ 当前时间函数:curtime()

​ 当前日期+时间函数:now()

​ 年函数:year(now())

​ 月函数:month(now())

​ 日函数:dayofmonth(now())

​ 时函数:hour(now())

​ 分函数:minute(now())

​ 秒函数:second(now())

​ 时间格式函数:date_format(now(),’%Y年%m月%d日 %H时%i分%s秒’) as ‘别名’

​ select year(now()) – year(时间字段) from 类名;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值