- database相关:
create database if not exists database_name;
drop database if exists database_name;
use database_name;
show databases;
show create database databasename; table 相关:
create table table_name (
id int(11) primary key auto_increment,
user_name varchar(20) not null unique,
password varchar(30) not null)engine=innodb default charset=utf8;
此处charset=utf8 与character set utf8
show tables;
show create table table_name
desc table_name;
delete from table;//清空表
truncate table table_name;//删除表,并重新创建。
show variables like ‘character%’;//查看mysql默认字符集 client,server,system,connection,results,filesystem,database
rename table old_name to new_namealter相关:
alter table table_name
–>change old_name new_name type;改名字
–>modify column type…….改类型
–>add column type…..增加字段
–>drop column type….删除字段CRUD
insert into table_name (column,…) values( values,….); 值最好用”扩起来,int float等可以不用
delete from table where condition 删除某行数举
update table_name set column = value where condition
select column as “xxxx” from table_name
起别名as 最好不要省略,增强其可读性
双引号用于别名中有特殊字符比较运算符
大于,<小于 ,<=小于等于, >=大于等于 ,=等于 ,!=(<>)不等于
in(set) 是否在set集合中
example:
delete from t_table where id in (1,2,3,8,9);
删除id为1,2,3,8,9的数据
like 模糊查询,%通配符,
is null, is not null 判断是否为空逻辑运算符
and 与
or 或
not 非排序
order by :
select * from t_table order by name asc;按照名字升序
select * from t_table order by salary desc;按照工资降序
select * from t_table order by age desc,name desc;按照年龄降序,如果年龄相同,按照名字降序某些函数
count() 计数
select count(id) from t_table where condition;
sum()
求工资和
select sum(salary) from t_tablegroup by
按照性别分组,并计数
select sex,count(id) from t_table group by sex
where,group by和having的顺序
where condition group by column having condition数据库备份
mysqldump -u 用户名 -p 数据库名 > 文件名.sql
恢复数据库
恢复前先创建对应的数据库。
mysql>source 文件名.sql
or:
@myPC:~$ mysql -u root -p mydb < 文件名.sql
备份数据库java伪代码:
Timer timer = new Timer();
timer.schedule(new TimerTask{
public void run(){
try{
Runtime runtime = Runtime.getRuntime();
String command = "mysqldump -u root -p myDatabase > path/filename.sql";//filename 应该是拼出来的 "dbname" + new Date().getTime() + ".sql";
runtime.exec(command);//在弹读的进程中执行指定的字符串命令
}catch(IOException e)
{
e.printStackTrace();
}
}
},new Date(),24*60*60*100);
外键 foreign key
foreign key (t1_id) references orders(id)
表间关系:
one2one 例夫妻关系–>table1 添加一个字段,t1_id,存放table2中的id(primary key),为保证1:1,必须给w_id添加一个约束,unique,保证t1_id唯一。
添加外键以后,删除表时,先删除有外键依赖的t1,再删t2
one2many 例父子关系–>多对1,在多端添加外键字段,不能添加唯一约束unique。
many2many 例师生关系–>借助中间表维护关系
one2many,many2one
create table table1 (id,t1_id) engine=innodb default charset=utf8;
create table table2(id,foreign key(id) references table1(t1_id) )engine=innodb default charset=utf8;内连接inner join
无条件,出现迪卡尔集
select d.,e. from dept d,emp e;
指定关联的键,就是内连接,获取有关联数据。
语法:
select d.,e. from dept d,emp e where e.dept_id = d.id;
select d.,e. from t_dept d inner join t_emp e on e.dept_id = d.id;
table1 和 table2的位置可以换。自然连接
自动通过关联主键连接,不能只鼎条件,left或right可以产生类似与左右连接的效果。外连接 获取的不一定是关联数据。
–>left|outer |join
–>right|outer|join
左外连接:以左边表为准,将LeftTable中的数据全部获取,而RightTable中的数据都跟LeftTable中的数据对应。
LeftTable outer join RightTable on condition…
select d.,e. from t_dept d left outer join t_emp e on e.dept_id = d.id order by d.id;
order by 放在 on condition 后面子查询
单行单列子查询 count(*) sum() avg() 等的查询结果
返回值只有一个,比较运算符,>,<等。
小于平均工资的人的信息
select * from t_emp where salary <
(select avg(salary) from t_emp)
单列多行子查询:返回值有多个,与单列多行比较使用的运算符,>any,>all,