Mysql基础和Sql结构化语言
Mysql
什么是Mysql
-
Mysql是一个开放的、快速的、多线程的、多用户的,支持多种API的,可以实现跨数据库连接的、国际化的、拥有巨大体积的关系型数据库管理系统
-
Mysql的工作模式是基于客户机/服务器结构的。
Sql结构化查询语言
-
DDL 数据定义语言(create创建 ,alter修改 ,drop删除,truncate删除表中所有行)
1.TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少
2.DELETE 语句每次删除一行,会在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 则是通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
3.TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。
4.对于由 外键约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。 -
DDL的基本语法:
- create table 表名(字段名 字段类型 是否非空 是否为主键, 字段名 字段类型 是否非空…);
- 注意的是字段和字段之间要用,分开,而且只能声明一个主键,最后声明的字段不用加,但是一定要在所有的语句结束完的右括号加;
- alter系列
- 修改字段的类型 alter table 表名 modify(字段名 要修改的字段类型(修改内容));
- 修改字段的名称 alter table 表名 rename column 原有字段名称 to 新的字段名称;
- 增加一个字段列 alter table 表名 add(新增的字段名 新增的字段类型(新增字段内容));
- drop系列
- 删除一个字段列 alter table 表名 drop column 要删除的字段列;
- 将数据表重命名 alter table 表名 rename to 新表名;
- 删除已存在的表 drop table 要删除的表名;
- create table 表名(字段名 字段类型 是否非空 是否为主键, 字段名 字段类型 是否非空…);
- DCL 数据控制语言
- 数据控制语言 (Data Control Language) 在SQL语言中,是一种可对数据访问权进行控制的指令,它可以控制特定用户账户对数据表、查看表、预存程序、用户自定义函数等数据库对象的控制权。
- 主要由 GRANT 和 REVOKE 两个指令组成。DCL以控制用户的访问权限为主,GRANT为授权语句,对应的REVOKE是撤销授权语句。
- 系统权限:是在数据库中执行某种特定操作的权利,系统权限并不针对某个特定的对象,而是针对整个数据库范围。常用的系统权限有:
- CREATE SESSION 连接到数据库上
- CREATE SEQUENCE 创建序列,序列是一系列数字,通常用来自动填充主键列
- CREATE SYNONYM 创建同名对象
- CREATE TABLE 创建表
- CREATE ANY TABLE 在任何模式中创建表
- DROP TABLE 删除表
- DROP ANY TABLE 删除任何模式中的表
- CREATE PROCEDURE 创建存储过程
- EXECUTE ANY PROCEDURE 执行任何模式中的存储过程
- CREATE USER 创建用户
- DROP USER 删除用户
- CREATE VIEW 创建视图
- 对象权限:是针对特定的模式对象执行操作的权利,只能针对模式对象来设置和管理对象权限,这些对象包括表、视图、存储过程等,常用的对象权限有:
- SELECT 允许执行查询操作
- INSERT 允许执行插入操作
- UPDATE 允许执行修改操作
- DELETE 允许执行删除操作
- EXECUTE 语序执行存储过程
- DCL的基本语法:
- 创建用户 create user 新创建用户名 identified by 已有用户名;
- 给用户分配权限 grant create session,create user,create table to 新创建用户名;
- 查看当前用户下对应的系统权限和对象权限 select * from user_sys_privs; select * from user_tab_privs;
- TCL 事务控制语言
- 事务是用于确保数据的一致性,由一组相关的DML组成的,该组DML的操作要么全确认,要么全取消。事务控制就是指对关系型数据库管理系统(RDBMS)里可能发生的各种事务的管理能力。
- 事务由隐式事务和显示事务之分,区别在于有没有显式的事务开启和结束的标记,默认的DML语句都是会自动提交的,而且事务一旦提交是不能够进行回滚的,这跟数据库的autocommit属性的设置有关,默认情况下都是自动提交的,我们可以通过show variables;查看数据库的属性设置
- TCL的基本语法
- COMMIT 提交
- SAVEPOINT 保存点
- ROLLBACK 回滚
- SET TRANSACTION 设置当前事务的特性,他对后面的事务没有影响
- TCL的具体应用
- 隐式事务举例 delete from 表名 where id =1;
- 显示事务(在开启显示事务之前一定要关闭事务的自动提交) set autocommit=0; delete form 表明 where id=1; commit;
- DQL数据查询语言
- 数据查询语言(Data Query Language, DQL)是SQL语言中,负责进行数据查询而不会对数据本身进行修改的语句,这是最基本的SQL语句。数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块
- DQL常用的字段有
- SELECT [要提取的字段,或是用"*"代表全部的字段]
- FROM [要提取的数据来源对象,包含数据表,视图表等] – 可搭配JOIN做连接。
- WHERE [提取的查询條件] – WHERE可有可無。
- GROUP BY [要做聚合的分组字段] – GROUP BY在使用聚合指令時必须要有。
- HAVING [要做为条件的聚合字段] – 要使用聚合函数作为条件时使用
- ORDER BY [要排序的字段和方向] – ORDER BY可有可无,若沒有则是按照查询引擎的输出顺序为主
- DML 数据操纵语言
- 数据操纵语言(Data Manipulation Language, DML)是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除。
- INSERT语句:利用INSERT语句可以向表中快速的添加数据 insert into 表(字段名1,字段名2) VALUE (表达式1,表达式2……)
- UPDATE语句:利用UPDATE语句可以一次修改一行,也可以修改多行 update 表名称 set 字段名称=表达式1,字段名称=表达式2 where 条件;(UPDATE语句通过SET子句为制定字段指定新值,将字段值修改为指定的表达式)
- DELETE语句:默认情况下,DELETE语句可以不使用WHERE子句,这个时候将删除表中的所有行。如果希望只删除表中的一部分数据,则需要通过WHERE指定条件 delete from 表名 where 条件;