既然要操作数据库就从数据库链接写起,包括建库、建表、增删该查字段及约束,删库,删表的数据,以下主要是对我以往面试的总结,欢迎补充!
一、数据库连接
1、连接本机(p和密码123456之间无空格)
mysql -u username -p123456;
2、远程连接
mysql -h 要访问的ip地址 -u username -p123456;
二、对库的操作
create database db_name;
drop database db_name;
show databases;
use db_name;
rename database db_name to new_db_name
mysqldump -u username -p123456 db_name > 导出的文件名; #备份
三、对表的操作
1、建表/删表/复制表/备份表
creat table db_name.tb_nane(
id smallint unsigned auto_increment,
username varchar(20) not null unique key,
sex enum("1","2") default "1")
drop table (if exists) tb_name;
create table tb_name2 select * from db_name.tb_name;
mysqldump -u username -p123456 db_name tb_name> 导出的文件名;
2、插入数据
insert into tb_name (col_name1,col_name2)values (值1,值2);
insert into tb_name.tb_name(username,sex)values("zhang",1);
insert into tb_name.tb_name values (1,"wang",1),(2,"lili",2),(3,"haha",2);
3、删除数据
delete col_name from tb_name where col_name=值; #删除某条记录
truncate table tb_name; #删除所有记录
4、增加/删除单列
alter table tb_name add col_name col_defination [first |after col_name];
alter table tb-name drop col_name;
5、增加/删除约束
alter table tb_name add primary key col_name; #主键(主键自动为not null;每张表只有一个主键)
alter table tb_name add unique col_name;
alter table tb_name add index index_name col_name;
alter table tb_name drop primary key;
6、修改约束
alter table tb_name modify id int unsigned; #修改列id的类型为int unsigned
alter table tb_name change id sid int unsigned; #修改列id的名字为sid,而且把属性修改为int unsigned
7、查看表结构
show colums from tb_name;
desc tb_name;
8、限制查询返回结果
1> limit(选出10到20条)<第一个记录集的编号是0>
select * from students order by id limit 9,10;
2> top选出前十条记录
select top 10 from students;
9、MySQL中的外连接,分为左外连接和右连接,即除了返回符合连接条件的结果之外,还要返回左表(左连接)或者右表(右连接)中不符合连接条件的结果,相对应的使用NULL对应。
select col_name from tb_name1 left join tb_name2 on tb_name1.col=tb_name2.col;
10、联合字符或者多个列(将列id与":"和列name和"="连接)
select concat(id,':',name,'=') from students;
示例,常用命令 ORDER BY DISTINCT
select * from table_name where (city='ts' or city='sh') and plat=0 ORDER BY update_time DESC ### 按照更新时间降序排列
select id,person,history,time from table_name ORDER BY time ASC ### 按照更新时间升序排列
select DISTINCT prio from table_name where isdelete=0 and (type=4 or type=5); ###对prio字段的值进行去重处理
select count(DISTINCT prio) from table_name where isdelete=0 and (type=4 or type=5); ###对prio字段的值进行去重处理后统计数量