一、命令收集:
1、建表
create table t1 (name char(5));
2、表中插入数据
insert into t1 values(‘11111’) ;
3、查看创表语句及字符集
show create table(t1);
4、查询表中数据
select * from t1;
5、查看文表当中某个列的一些具体值的占用长度。
select length(name) from t1;
6、所有字符集校对规则
show collation;
7、查看所有字符集
show charset;
8、查询某参数
show variables like ‘%lower%’;
9、删库
drop database 库名;
10、查库
show create database test;
show databases; (所有库)
11、改库字符集
alter database test charset utf8mb4;
12、取当前时间
select now();
13、查看表的列信息
desc xx;
14 、添加列
alter table xs1 add 微信 varchar(64) not null unique key comment ‘微信号’;
如果是在某列之后添加➕after xxx;
如果是在最前面添加 直接写first;
删除列
alter table xs1 drop dianhua;(危险操作)
列名属性都修改
alter table xs1 change name sname varchar(64)
只修改数据属性
alter table xs1 modify 微信 varchar(64) not null comment ‘微信号’;
删表(危险,不代表生产操作)
truncate table xs;(清空表的区,数据清空,表定义保留)
drop table xs1;(表定义和数据全部删除)
查表
show tables;
show create table xs;
desc
小结:
建库
create database haha charset utf8mb4;
删库
drop database haha;
改字符集
alter database haha charest uft8;
查看
show create database haha;
show databases;
create table 表名 (
列1 数据类型 约束 其他属性,
列1 数据类型 约束 其他属性
)engine=innodb charset=utf8mb4; comment ‘信息’;
修改表
alter table xuexiao add qq varchar(64) not null unique key comment ‘qq号’
删表
drop table xs1;
desc xs1;
grant 权限 on 范围 to 用户 identified by 密码;
revoke 权限 on 范围 from 用户;
DML
用做表的数据行的增、删、改、查
insert 表名 values();
例子
insert into xs1(id,sname,age,sex,shengfen,shijian) values (1,'张三','18','n','bj',now());
简化方法
insert into xs1 values(2,’李四’,’15’,’n’,’sh’,now());
只对需要录入部分录入。
修改某一行,update要加where条件
update xs1 set age=20 where id=1;
delete 语句(逻辑性删除,注意要加where条件)
delete from xs1 where id=4
面试题:以下语句的区别?
delete from t1;
truncate table t1;
truncate table t1; 是DDL语句,清空整表的所有数据,按照区来删除,属于物理删除,性能高。表所占用空间会立即释放。
delete from t1; 是DML语句,清空整表所有数据,按照行来删除的,属于逻辑删除,性能低。表所占用的空间,不会立即释放。
使用update替代delete 实现伪删除。
添加一个状态列state
delete from xs1 where id=6
update xs1 set state=0 where id=6;
改完后业务进行调整
Select * from xs1 where state=1;
15 select 单独属性的情况(mysql独家)
例子 select @@datadir;
Select @@port;
show模糊查询
mysql> show variables like '%trx%';
select 函数();
select now(); 查当前时间
select user(); 查当前用户
select database();查当前所在数据库
select 15*15; 可以直接做计算
select concat (‘hello world’)做拼接用法
select concat(user,‘@’,host) from mysql.user; 最基本应用
select group_concat(user,‘@’,host) from mysql.user;
from子句应用
select * from city; 查看所有
select country,name from city; 查看某几列。
where子句应用
等值查询
查询中国城市的信息
select * from city where countrycode=’CHN’;
不等值查询
查询人口数量少于100人城市。
select * from city where population<100;
查询id小于10的城市信息
select * from city where id<10;
查询不是中国的城市信息(尽量不使用不等于,可能不走索引)。
select * from city where countrycode !=’CHN’;
select模糊查询
查询国家代号为CH打头的城市信息。
Select * from city where countrycode like ‘CHN%’;
逻辑连接符(and,or)
查询中国城市人口超过500 w的城市信息
select * from city where countrycode=’CHN’and population>500;
查看山东省或河北省的城市信息
select * from city where district=’shandong’ or district=’hebei’;
where配合between and的使用
查询人口数在100w-200w之间的城市信息(包含头尾)
select * from city where population between 1000000 and 2000000;
where 配合in使用
查看山东省或河北省的城市信息
select * from city where district in(‘shandong’,’hebei’);
select * from city where district notin(‘shandong’,’hebei’);排除
group by 字句+聚合函数
按照某个列进行分组
常用的聚合函数
count() 计数
max()最大值
min()最小值
average 平均值
sum() 总和
group_concat() 组拼接,列转行
例子
统计每个国家的城市个数
select countrycode,count(id) from city group by countrycode;
统计每个国家的总人口数
select countrycode,sum(population) from city group countrycode;
统计中国每个省的城市个数及总人口数
select district,count(name),sum(population) from city where countrycode=’CHN’group by district;
统计各个国家的城市名列表
select countrycode,group_concat(name)
From city
Group by countrycode;
having 字句使用 再过滤
统计中国每个省的城市个数及省总人口数,只显示人口总数达于800万的省
select district ,count(name),sum(population) from city where countrycode=’CHN’ group by district
having sum(population)>8000000;
统计中国每个省的城市个数及省总人口数,只显示人口总数达于800万的省,将人口数进行排序输出。
order by字句
在having之后
select district,count(name),sum(population) from city where countrycode=’CHN’ group by district having
sum(population)>8000000 order by sum(population);默认从小到大排序
select district,count(name),sum(population) from city where countrycode=’CHN’ group by district having
sum(population)>8000000 order by sum(population) desc; 从大到小排序
order by 可以在where 后面使用
查询中国所有城市信息,并以人口数量进行降序排序。
select * from from city where countrycode=’CHN’order by population desc;
show 语句 (mysql独家)
show databases;
show tables;
show create databases xxx;
show create table xxx;
show grant for xxx(用户);
show charset;(支持字符集情况;
show collation;校对
show variables like ''%trx%;
show engines; (存储引擎)
show process list; (进程)
show index from t1; (查看索引)
show status;(看数据库状态)
show engine innodb status\G;(看存储引擎状态)
show binlog events in'';(二进制)
show binary logs;
show master status;
show slave status\G;
show relaylog events in '';
show table status;
help show;
�