常见的sql语句:
创建数据库:create database if not exists mysql_study character set utf8 collate utf8_general_ci;
查询数据库:show databases like "%mysql%";
查询创建数据库:show create database mysql_study;
删除数据库:drop database if exists mysql_study;
创建表:
CREATE TABLE `lj` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(22) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
//character set 和 charset都是可以的
删除表:drop table tbl_name;
修改表名:rename table old_name to new_name,old_name1 to new_name1;
添加主键:Altertabletabnameaddprimarykey(col)
删除主键:Altertabletabnamedropprimarykey(col)
选择:select*fromtable1where范围
插入:insertintotable1(field1,field2)values(value1,value2)
删除:deletefromtable1where范围
更新:updatetable1setfield1=value1where范围
查找:select*fromtable1wherefield1like’%value1%’
修改列:alter table tbl_name [add|drop|change|modify];
alter table tbl_name add name varchar(22);
alter table tbl_name drop name;
alter table tbl_name modify name int(11);
alter table tbl_name change name mingzi int(11);
alter table tbl_name character set utf8;
添加外键:
Alter tabletbl_name drop foreign key 外键标识;默认会生成,也可以指定
select语句:Select select_expr [from tbl_name] [where] [group by] [having] [order by] [limit]
select 子句有顺序,因此要求严格按照上面的顺序使用!
having:可以知道,where负责先获得结果,而如果需要在结果中再次处理(例如通过结果统计出来的聚合结果),则不能再使用where,
此时where已经执行完毕,因此此时SQL提供给应该使用having再次执行过滤操作。
limit:Limit offset,row_count,表示从offset索引位置开始获取row_count条记录。可以省略offset,默认为0.
删除表数据:delete,truncate
区别:
1,truncate 是删除表再创建,delete 是逐条删除
2,truncate 重置auto_increment的值。而delete不会
3,truncate不知道删除了几条,而delete知道。
Character_set_client客户端发送数据编码
Character_set_results客户端接收数据的编码
Set character_set_connection = gbk;连接层编码
Set names可以设置上面的三个。
每一套,编码字符集都有与之相关的校对规则。
什么是校对规则?在当前编码下,字符之间的比较顺序什么。
Show collation;
Show character set;
show variables like'character_set_%';
知识点详解:
导出
1. 导出一张表
Mysqldump -u用户名 -p密码 库名 表名 > 文件名(D:/a.sql)
2. 导出多张表
Mysqldump -u用户名 -p密码 库名 表名1 表名2 表名3 > 文件名(D:/a.sql)
3. 导出所有表
Mysqldump -u用户名 -p密码 库名 > 文件名(D:/a.sql)
4. 导出一个库
Mysqldump -u用户名 -p密码 -B 库名 > 文件名(D:/a.sql)
可以-w携带备份条件
导入:
1. 在登录mysql的情况下:
Source 备份文件
2. 在不登录的情况下
Mysql -u用户名 -p密码 库名 < 备份文件
mysql数据类型:三大类型: 数值,时间日期,字符串
存储引擎:也叫表类型,指的是数据表的存储机制,索引方案等配套相关功能。不同的引擎,由于处理方式不同,会带来不同的功能或者相应优化,根据实际需求选择合理的引擎。
最常用的存储引擎:
MyISAM,InnoDB
区别:
MyISAM支持外键,而MyISAM不支持外键
MyISAM支持索引压缩,而Innodb索引和数据是绑定保存不压缩,体积大。
MyISAM是非事务安全型的,而InnoDB是事务安全型的。
InnoDB不支持FULLTEXT类型的索引(新版本的InnoDB也支持)
MyISAM锁的粒度是表级,而InnoDB支持行级锁定。
MyISAM相对简单,所以在效率上要优于InnoDB,小型应用可以考虑使用MyISAM。
InnoDB表比MyISAM表更安全
保存的文件的方式不同:
myisam,一个表,三个文件
Tbl_name.frm结构
Tbl_name.myd数据
Tbl_name.myi索引
innodb:
一个表一个文件:
Tbl_name.frm结构
所有的innodb表,都使用相同的
innodb存储表空间在保存数据和索引