1.进入mysql命令行:mysql -uroot -pxxx;
2.数据库
查看:show databases;
创建:create database cndb charset utf8;
删除:drop database cndb;
选择:use cndb;
查看创建数据库语句:show create database cndb\G;
3.表
约束:自增长:auto_increment
非空:not null
默认值:default ‘xxx‘
唯一约束:unique
指定字符集:charset utf-8
主键:primary key具有唯一性,不能为空
外键:foreign key bj_fk tablea(sid) reference to tableb(id)用来表示两个表之间的关系
增:
create table score(
id int auto_increment primary key,
s_id int not null,
grade float not null);
create table students(
id int auto_increment primary key,
name varchar(10) not null,
sex varchar(5) default ‘男‘,
addr varchar(50),
phone int not null unique);
删:drop table tablename;
改:改表明:alter table students rename stu;
修改字段数据类型:alter table stu modify name varchar(20)unique;
修改字段的名称:alter table stu change name stu_name varchar(20);
新增一字段,放在哪个位置:alter table stu add class varchar(20) not null after stu_name;
删除一字段:alter table stu drop addr;
查:
查看所有表:show tables;
查看建表语句:show create table tablename;
查看表结构:desc stu;
数据:
增:
指定字段:
insert into stu(stu_name,add,phone)
values(‘月月‘,‘西安‘,123);
不指定字段:
insert into stu values(‘‘,‘月月‘,‘‘,‘‘,‘西安‘,123);
指定字段的话,插入的值和字段对应;不指定的话,要把所有的字典值都写全。
同时插入多条
INSERT INTO stu(stu_name, add, phone)VALUES(‘狙击‘, ‘湖北‘, 1091199),(‘张艳‘,‘湖南‘,1999),(‘夹伟‘,‘北京‘,101999);
删:
删除整个表里的数据:DELETE from blk; truncate tablename;
delete清空的表自增长id还会继续增长;truncate 清空的表自增长id从1开始,truncate速度比delete要快,因为truncate 是从磁盘上直接把数据删除,恢复不了。
删除指定的数据:delete from blk where stu_name = ‘狙击‘;
改:
如果不指定条件的话,修改的是整个表的数据:update blk set money=80;
修改指定的数据:update blk set money=90 where stu_name=‘胡静‘ ;
修改多个字段:update blk set money=100,phone=10000 where stu_name=‘胡静‘ ;
在原来的值基础上做修改:UPDATE blk set money=money+100 ;
查:
从第几条开始,下面的x条,不包含开始的那一条:
SELECT * from blk limit 1,5;
查询5条:
SELECT * from blk limit 5;
指定查询的字段:SELECT id,stu_name,sex,money,phone from blk;
查询所有的数据:SELECT * from blk;
指定条件:SELECT * from blk where sex=‘男‘;
多个条件,必须同时满足:SELECT * from blk where sex=‘男‘ and money>100;
多个条件,有一个满足即可:SELECT * from blk where sex=‘男‘ or sex=‘未知‘ ;
<>也是不等于:SELECT * from blk where sex !=‘男‘;
模糊匹配,%代表的是通配符,必须得用like:SELECT * FROM blk where addr like ‘%东京%‘;
_通配符表示任意一个单字符: SELECT * from blk a where a.stu_name like ‘姚_‘;
给表起别名,as可以省略:
SELECT a.stu_name 学生名称,a.phone 学生电话 from blk as a where a.stu_name=‘姚远‘;
in:SELECT * from blk a where a.stu_name in (‘阿翔‘,‘林倩‘,‘姚远‘);
在什么什么之间的数据:SELECT * from blk a where a.money BETWEEN 1000 and 10000;
order by xxx desc,根据哪个字段继续排序,默认是升序;降序是desc,升序asc:
SELECT * from blk ORDER BY money desc;
查询数据为空:SELECT * from blk a where a.addr = ‘‘ or a.addr is null;
去重:SELECT DISTINCT a.money from blk a ;
统计行数:SELECT COUNT(*) 学生人数 from blk where sex=‘女‘;
最大值:SELECT MAX(a.money) 钱最多 from blk a;
最小值:SELECT min(money) 钱最少 from blk;
平均数:SELECT AVG(a.money) 平均多少钱 from blk a;
总和:SELECT sum(a.money) 总共多少钱 from blk a;
分组:SELECT sex 性别,count(*) 人数 from blk GROUP BY sex;
如果group by后面有条件的话,必须得用having子句,having子句里面用到的字段必须出现在select后面,如果group by和order by一起用的话,order by必须写在group by后面
SELECT sex 性别,count(*) 人数,a.stu_name 名字 FROM blk a
WHERE a.money > 300 GROUP BY a.id
HAVING a.stu_name LIKE ‘姚%‘;
用来合并两条select语句的结果,两条select语句字段数量要一致,并且数据类型也要一致
union和union all的区别就是一个会去重一个不会:
SELECT id,stu_name from blk UNION SELECT id,t_name from teacher;
多表关联:
SELECT * FROM USER a,accounts b WHERE a.id = b.user_id AND a.username = ‘niuhy‘;
两个表里面都存在的数据查出来:SELECT * from blk a ,score b where a.id=b.s_id;
LEFT JOIN会把左边表所有的数据都查出来,右边表有匹配的就查出来:
SELECT * from blk a LEFT JOIN score b on a.id=b.s_id;
RIGHT JOIN会把右边表所有的数据都查出来,左边表有匹配的就查出来
SELECT * from blk a RIGHT JOIN score b on a.id=b.s_id;
INNER JOIN两边表里都匹配的数据才查到:
SELECT * from blk a inner JOIN score b on a.id=b.s_id;
子查询:
把一条sql的结果,作为另一条sql的条件
SELECT * from score a where a.s_id = (SELECT id from blk where stu_name=‘阿翔‘);
把子查询当成一个表
SELECT a.grade 成绩,b.stu_name 学生名称,b.id 学号 FROM score a,
(SELECT id,stu_name FROM blk WHERE stu_name = ‘阿翔‘) b
WHERE a.s_id = b.id;
数据库权限:
mysql数据的权限实质上都是在user表里控制的
1、grant
所有的权限 所有数据库下面的所有表 用户 用户ip
grant all on *.* to ‘andashu‘@‘localhost‘ IDENTIFIED BY ‘123456‘ with grant option;本机权限
密码 #有执行grant语句的权限
grant all on *.* to ‘andashu‘@‘%‘ IDENTIFIED BY ‘123456‘ with grant option;其他机器权限
取消授权:
Revoke select on *.* from dba@localhost;
Revoke all on *.* from andashu@localhost;
2、修改user表的数据
对user表进行增加、修改和删除
flush privileges;#刷新权限
备份数据库:
mysqldump -uroot -p123456 db > db.sql
mysqldump -uroot -p123456 -A > all.sql
恢复数据:
mysql -uroot -p123456 db < db.sql
存储过程:
批量的造数据
delimiter $$; #为了改结束符
CREATE PROCEDURE big_data1(num int)#代表要造多少条数据 100
BEGIN
DECLARE i int;
set i=0;
WHILE i<num do
insert into blk (stu_name,money) VALUES (CONCAT(‘宋灏志‘,i),20000);
#CONCAT的作用是连接不同类型的数据
#把字符串和数字拼接到一起
set i=i+1;
end WHILE;
End
$$;
delimiter;
call big_data1(500); #调用
3、环境搭建
1、下载依赖软件、安装好
2、获取源代码(打包)
得根据语言的不通来看是否需要编译、打包
3、导入基础数据
4、修改配置文件
5、启动 java程序(tomcat、weblogic、jetty、resin、ws)
php、ruby、python (nginx、apache)
日常部署
1、获取最新的代码(编译、打包)
如果有表结构变更的话,要执行sql
2、修改配置文件
3、重启你的程序
原文:http://www.cnblogs.com/cuinan/p/6246719.html