sql(Structure Query Language)结构化查询语言
sql语句划分为以下三类
DDL(data definition languages)数据定义语言 定义不同的数据段,表,列,索引,关键字包括create,drop,alter;
DML(data manipulation language)数据操作语句 用于添加,删除,更新和查询数据库记录并检查数据完整性,关键字包括insert,delete,update,select;
DCL(data control language)数据控制语句 控制不同数据段直接的许可和访问级别的语句,这些语句定义了访问权限和安全级别,关键字包括grant,revoke.
create database test1; 创建数据库test1
show databases; 显示数据库
#其中里面infomation schema:主要存储一些数据库对象信息,如表信息,权限信息,字符集信息等
duster:存储了系统集群信息
mysql:存储了系统用户权限的信息
use test1; 打开数据库test1
show tables; 显示表test1
drop database test1; 删除数据库test1
create table emp (ename varchar(10),hiredate date,sal decimal(10,2),deptno int(2)); 创建表emp
desc emp; 显示表
show create table emp \G; 查看表的定义,查看表的存储引擎,字符集信息
drop table emp; 删除表emp
alter table emp modify ename varchar(20); 修改表的ename字段
alter table emp add column age int(3); 增加age字段
alter table emp drop column age; 删除age字段
alter table emp change age age1 int(4); 字段改名age 改为age1
alter table emp rename epm1; 表改名emp改为emp1
insert into emp (ename,hiredate,sal,deptno) values('zzx1','2003-02-01','3000',2); 插如表的字段
update emp set sal=4000 where ename='lisa'; 将ename为lisa的薪水sal从3000改为4000
delete from emp where ename='dony'; 将名为dony的记录全部删除
select * from emp; 查询表里所有记录
select * from emp order by sal limit 1,3; 显示表中按照sal排序后从第二条记录开始,显示三条记录
聚合操作
fun_name表示要做的聚合操作,聚合函数常用的有sum(求和),count(*)记录数,max,min
group by 表示要进行分类聚合的字段
with rollup 表明是否对分类聚合后的结果进行再汇总
having 表示对分类后的结果再进行条件的过滤
select count(1) from emp; emp表中统计公司的总人数
select deptno,count(1) from emp group by deptno; 统计各个部门的人数
select deptno,count(1) from emp group by deptno having count(1)>1; 统计人数大于1的部门
select sum(sal),max(sal),min(sal) from emp; 统计公司所有员工薪水总额,最高和最低薪水
子查询
用于子查询的关键字包括in,not in,=,!=,exists,not exists
select * from emp where deptno in(select deptno from dept); 从emp表中查询出所有部门在dept表中的所有记录
记录联合
将emp和dept表中的部门编号的集合显示出来
mysql>select * from emp;
mysql>select * from dept;
mysql>select deptno from emp
→union all
→select deptno from dept;
创建一个数据库用户z1,具有对sakila数据库中所有表的select/insert权限
grant select,insert on sakila.* to 'z1'@'localhost' identified by '123';
权限变更,需要将z1的权限变更,收回insert,只能对数据进行select操作
#mysql -uroot
#revoke insert on sakila.* from 'z1'@'localhost';
show variables like 'table_type'; 查看当前的默认存储引擎
两种方法查询当前数据库支持的存储引擎
1.SHOW ENGINES \G
2.SHOW VARIABLES LIKE 'have%';
在创建新表的时候,可以通过增加engine关键字设置新建表的存储引擎,如下面,表ai就是MyISAM存储引擎的,而country表就是InnoDB存储引擎的
CREATE TABLE ai (i bigint(20) NOT NULL AUTO_INCREMENT,PRIMARY KEY(i)) ENGINE=MyISAM DEFAULT CHARSET=gbk;
CREATE TABLE country (country_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,country VARCHAR(50) NOT NULL,last_update TIMESTAMP NOT NULL DEEAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (country_id))ENGINE=InnoDB DEFAULT CHARSET=gbk;
MyISAM
是默认的存储引擎,不支持事务,也不支持外键,优势是访问的速度快
每个MyISAM在磁盘上存储成3个文件,其文件名都和表名相同,但扩展名分别是
.frm(存储表定义); .MYD(MYData,存储数据); .MYI(MYIndex,存储索引)
InnoDB
它提供了具有提交,回滚和崩溃恢复能力的事务安全,但是对比myisam的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引
InnoDB存储表和索引有两种方式,使用共享表空间存储,这种方式创建的表的表结构保存在.frm文件中,数据和索引保存在innodb_data_home_dir和innodb_data_file_path定义的表空间中,可以是多个文件
#############################################################################################################
数据库备份
备份所有的数据库mysqldump -uroot -p --all-database > all.sql
备份数据库test:mysqldump -uroot -p test > test.sql
备份数据库test下的表emp:mysqldump -uroot -p test emp dept > emp_dept.sql
备份数据库test下的所有表为逗号分割的文本,备份到/tmp: mysqldump -uroot -T /tmp test emp --fields-terminated-by','
注意:
为了保证数据备份的一致性,MyISAM存储引擎在备份的时候需要加上-l参数,表示将所有的表加上读锁,在备份期间,左右的表将只能读不能进行数据更新,但是对于事务存储引擎(InnoDB和BDB),可以采用更好的选项--single-transaction,此选项将使得InnoDB存储引擎得到一个快照(Snapshot),使得备份的数据能够保证一致性
############################################################################################################
mysql基本结构化查询语言
翻译wanghaipeng 博主文章分类:数据库
文章标签 数据库基本结构化查询语言 文章分类 数据库
![](https://ucenter.51cto.com/images/noavatar_middle.gif)
-
结构化查询语言 mysql
结构化查询语言 mysql
结构化 mysql 查询语言 MySQL SQL -
SQL结构化查询语言(一)
SQL结构化查询语言(一)
查询语言 结构化 SQL -
结构化索引及结构化查询
结构化索引前面我们创建的索引以及插入数据,都是由Elasticsearch进行自动判断类型,有些时候我们是需要进行明确字段类型的。Elasticsearch中支持的数据
elasticsearch es结构化查询 es结构化索引 字段 数据