1.什么是SQL
结构化查询语言,一种对关系型数据库中的数据进行定义和操作的语言方法。
2.SQL分类
2.1 DQL数据查询语言
select 、where 、order by、group by 、having
2.2 DML数据操作语言,操作表中的数据
insert、update、delete
2.3 TPL 事务处理语言
begin、transaction、commit、rollback
2.4 DCL数据控制语言
grant、revoke
2.5 DDL数据定义语言
create、drop
2.6 CCL 指针控制语言
declare cursor、fetch into 、update where current
3.数据库常见命令
3.1 创建数据库:create database oldgirl;
查看建库语句show create database oldgirl\G
创建数据库时指定字符集:create database oldgirl_utf8 default character set utf8 collate utf8_general_ci;
create database oldgirl_gbk default character set gbk collate gbk_chinese_ci;
显示或查找数据库:show databases like 'oldgirl%';
查看当前使用数据库:show database();
删除数据库: drop database oldgirl;
查看数据库版本:select version();
使用数据库:use oldgirl;
查看数据库的表信息:show tables from oldgirl;
查看表结构 desc student;
查看建表语句 show create table test\G;
重命名表 rename table test to test1;
3.2 创建用户及赋权
通过help grant查看;
一般常用:grant all on db1.* to 'jef'@'localhost' identified by 'mypass';
查看某用户权限:show grants for oldgirl@localhost;
create user 'my'@'localhost' identified by '123';
grant all on db1.* to 'my'@'localhost';
授权局域网内主机远程登陆:可将localhost 改为域名、IP地址、IP段。比如10.0.0.%
或子网掩码匹配法:10.0.0.0/255.255.255.0;
最后刷新权限。flush privileges;
收回权限:revoke insert on test.* from 'my'@'localhost';
3.3 企业一般授权
grant select,insert,delete,update,create,drop等权限,生成数据库表之后,再使用revoke收回create,drop等权限。
4.索引
增加主键索引:alter table student change id id int primary key auto_increment;
删除和增加普通索引:alter table student drop index index_name;
alter table student add index index_name(name);
对字段的前n个字符创建索引:create index index_name on test(name(8));
查看索引:show index from student\G;
创建联合索引:create index index_name_dept on test(name,dept);
创建唯一索引:create unique index uni_ind_name on student(name);
提示:按照条件列查询数据时,联合索引是有前缀生效特性的。
index(a,b,c)仅a,ab,abc三个查询条件列可以走索引。
5.索引列的创建及生效条件
一般不会给所有列建索引,因为索引不但占用系统空间,更新数据库时还需要维护索引数据,比如数十到几百行的小表上无需建立索引,写频繁,读的少的业务要少建立索引。
一般给where 条件后的列加索引,要尽量选择在唯一值多的大表上建立索引。
6.批量插入
insert into test values(1,'张三'),(2,'李四');
7.使用explain查看执行计划
explain select * from test\G;
help explain;
8.在mysql.cnf文件中,需要打开log_bin=mysql-bin,然后在/application/mysql/data下可找到记录文件,只保存修改数据的操作语句
9.trancate table test;更快,清空物理文件
delete from test;逻辑清除,按行删。