‘mysql’不是内部或外部命令,也不是可运行的程序或批处理文件。mysql
解决:sql
如何连接服务器数据库
服务器地址(可用IP域名):端口(3306) 用户名 密码编程
Mysql -h localhost -u UserName -p passwordwindows
如: mysql -h localhost -u root -p 性能优化
mysql -h localhost -u root -p 123456服务器
mysql -hlocalhost -uroot -p123456函数
-h若是不写,则默认连localhost工具
如:mysql -u root -p性能
显示数据库 :show databases
information_schema 数据库的一些基本信息;mysql 关于用户的一些信息;performace_schema 性能优化的一些基本信息。
新建数据库:create database myDatabase chartset utf8;
选中某个数据库:use myDatabase
\c退出当前语句
解决字符集问题:默认建表通常用utf-8,而咱们在windows下窗口是GBK的,因些须要声音字符集:set names gbk;
给表插入一条数据:如 insert into msg (id,title,content) values (1,'标题","内容“);
整型
如:alert table msg add ages tinyint(5) zerofill not null default 0;
creat table msg (id tinyint(4) zerofill not null default 0,title varchar(20),content varchar(20)) charset utf8;
浮点数
如:float(4,2) 表示(99.99到 -99.99),float(4,2)unsigned 表示(0 到99.99);
字符型 char、vachar、text
日期时间类型
注意:
在开发中,不多用日期时间类型来表示一个须要的精确到秒的列
缘由:日期时间类型能精确到秒,并且 方便查看,可是不方便计算。用int存时间戳更方便计算
枚举类型enum(’男‘,’女‘);
id primary key auto_increment :主键、自动增加;
左连接
select * from tba left join tbb on tba.catId=tbb.catId;左连接以左边表为主表,当不能在tbb表里面匹配到相关信息时,显示NULL.
UNION
将两个表链接起来,要求链接的两个表列数同样,每列的类型一致。
select * from ta union select * from tb
视图
视图是表的查询结果,天然表的数据改变了,影响视图结果;
视图改变了,影响表,可是视图并不老是能增删改,只有当视图的数据与表的数据一一对应时才能够更改
注:插入视图时,视图必须包含表中没有默认值的列
视图的 algorithm=merge/temptable/undefined
字符集和校对集
某一个级别没有指定字符集则集成上一级的字符集。
注:若是以上3者都为字符集N,则能够简写为set names N
出现乱码的状况:client声明与事实不符,results与客户端字符集不符的时候
校对集 collation
create table tem(name varchar(10) ) charset utf8 collate utf8_bin; 指字符集的排序规则,一种字符集能够有一个或者多个排序规则。
注:声明的校对集必须是字符集合法的校对集
触发器
四要素:监视地点、监视事件、触发时间、触发事件。
建立:create trigger triggerName after|before insert|update|delete on 表名
for each row #行触发器,mysql里面是固定的
begin sql语句 end;
注: delimiter $ 将结束符由‘;’改为‘$’符,修改语句不用加结束符
删除: drop trigger triggerName;
查看: show triggers ;
delimiter $ //更改结束符为$,不用加结束符
create trigger tg1 after insert on goods for each row
begin
update tb2 set num=num-1 where tb2.id=new.id;
end $
before例子:
create trigger tg2 befor insert on goods for each row
begin
if new.num >5 then
set new.much=5
end if ;
update g set num =num-new.muchh where id=new.gid;
end$
事务
事务指:一组操做,要么都成功执行,要么都不执行。
事物的ACID特性:
存储引擎的种类和特色
显示全部的存储引擎:show engines;
指定存储引擎:create table tb (id int primary key auto_increment ) engine=innodb|myisam charset utf8;
支持事务案例的数据库引擎才有事务
开启事务:start transaction ; 注意:两个start transaction,前面的那个就隐式的提交了
sql语句......
commit提交、 rollback回滚 //当一个事务commit\rollback就结束 了
备份与恢复
增量备份、总体备份
系统自带的备份工具:mysqldump.exe,能够导出库也能够导出表
如:mysqldump -uroot -p111111 mydatabase goods > D:\\goods.sql // 导出mydatabase数据库下的goods表,会在D盘下生成一个SQL文件
索引
注意:大数据处理办法:先去掉索引,再导入,最后再统一加索引。
索引的类型:
查看索引:
show index from 表名;
show index from 表名 \G //用另外一种格式显示
创建索引:
alter table 表名 add index|unique|fulltext【索引名】(列名);
alter table 表名 add primary key (列名); //添加主键索引
删除索引:
alter table 表名 drop index 索引名;
alter table 表名 drop primary key; //删除主键
查询索引:
select * from member where match (pro) against ("china");
查询匹配度 select id,email, match (pro ) against ("china") from member;
注:全文索引不针对很是频繁的词作索引,全文索引对中文意义不大
存储过程
概念相似于函数,就是把一段代码封装起来,在封装语句里面,能够用if/else,case,while等控制结构,能够进行sql编程。
delimiter $ create procedure p(n int) begin
declare i int;
declare s int;
set i=1;
set s=0;
while i<=n do
set s=s+i;
set i=i+i;
end while;
select s;
end$
call p(5)$ //调用