‘mysql’不是内部或外部命令,也不是可运行的程序或批处理文件。
解决:
如何链接服务器
服务器地址(可用IP域名):端口(3306) 用户名 密码
Mysql -h localhost -u UserName -p password
如: 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 ;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
事务
事务指:一组操作,要么都成功执行,要么都不执行。
事物的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)$ //调用