SQL语言分类
- DML(Data Manipulation Language):数据操纵语句,用于添加、删除、修改、查询数据库记录,并检查数据完整性
- INSERT:添加数据到数据库中
- UPDATE:修改数据库中的数据
- DELETE:删除数据库中的数据
- SELECT:选择(查询)数据 (SELECT是SQL语言的基础,最为重要。)
- DDL(Data Definition Language):数据定义语句,用于库和表的创建、修改、删除。
- CREATE TABLE:创建数据库表
- ALTER TABLE:更改表结构、添加、删除、修改列长度
- DROP TABLE:删除表
- CREATE INDEX:在表上建立索引
- DROP INDEX:删除索引
- DCL(Data Control Language):数据控制语句,用于定义用户的访问权限和安全级别。
- GRANT:授予访问权限
- REVOKE:撤销访问权限
- COMMIT:提交事务处理
- ROLLBACK:事务处理回退
- SAVEPOINT:设置保存点
- LOCK:对数据库的特定部分进行锁定
MySQL语法规范
- 进入 mysql, 在命令行中输入: mysql –uroot –p#### (其中:####表示密码)
- 查看 mysql 中有哪些个数据库: show databases;
- 使用一个数据库: use 数据库名称;
- 新建一个数据库: create database 数据库名;
- 查看指定的数据库中有哪些数据表: show tables;
- 建表
create table customer(
id varchar(30),
age int,
name varchar(30),
birthday date
);
- 查看表的结构:desc 表名;
- 删除表: drop table 表名;
- 查看表中的所有记录: select * from 表名;
- 向表中插入记录:insert into 表名(列名列表) values(列对应的值的列表);
insert into customer(id,name,age,email,birthday) values('10002','Jerry',22,'jerry@aa.com','2000-02-12');
- 注意:插入 varchar 或 date 型的数据要用单引号引起来
- 修改记录: update 表名 set 列1 = 列1的值, 列2 = 列2的值 where …
update customer set age=22,birthday='1988-03-05' where id='10002';
- 删除记录: delete from 表名 where ….
delete from customer where id='10001'
- 查询所有列: select * from 表名;
- 查询特定的列: select 列名1,列名2, … from 表名
select id,name from customer;
- 对查询的数据进行过滤:使用 where 子句
select id,name,age from customer where age > 21;
- 运算符:
-- 查找salary>=2000且salary<=2000
(1) select * from customer where salary >= 2000 and salary <= 3000;
select * from customer where salary between 2000 and 3000;
-- 查找salary=1000或salary=2000或salary=3000
(2) select * from customer where salary = 1000 or salary = 2000 or salary = 3000;
select * from customer where salary in (1000,2000,3000);
-- 查询 name 中有 o 的人的名字
(3) select name from customer where name like '%o%';
-- 查询 name 中 第 3 个字母是 r 的人的名字
(4) select name from customer where name like '%__r%';
-- 查询 email 为 空 的所有人的信息
(5) select * from customer where email is null;
-- 查询 email 不为 空 的所有人的信息
(6) select * from customer where email is not null;
-- 查询所有客户信息, 且按 salary 升序排列
(7) select * from customer order by salary;
-- 查询所有客户信息, 且按 salary 降序排列
(8) select * from customer order by salary desc;
- 分组函数
- AVG()
- COUNT()
- MAX()
- MIN()
- SUM()
不区分大小写
每句话用;或\g结尾
各子句一般分行写
关键字不能缩写也不能分行
用缩进提高语句的可读性
事务
事务定义
事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的。而整个单独单元作为一个不可分割的整体,如果单元中某条SQL语句一旦执行失败或产生错误,整个单元将会回滚。所有受到影响的数据将返回到事物开始以前的状态;如果单元中的所有SQL语句均执行成功,则事物被顺利执行。
事务的ACID属性
- 原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
- 一致性(Consistency)事务必须使数据库从一个一致性状态变换到另外一个一致性状态。
- 隔离性(Isolation)事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
- 持久性(Durability)持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响
事务的使用
- 以第一个 DML 语句的执行作为开始
- 以下面的其中之一作为结束: COMMIT 或 ROLLBACK 语句
- DDL 或 DCL 语句(自动提交)
- 用户会话正常结束
- 系统异常终了
MySQL 中的存储引擎
- 概念:在mysql中的数据用各种不同的技术存储在文件(或内存)中。
- 通过show engines;来查看mysql支持的存储引擎。
- 在mysql中用的最多的存储引擎有:innodb,myisam ,memory 等。其中innodb支持事务,而myisam、memory等不支持事务。