MySQL的语言--------1
数据库的模式定义
类似权限管理关系,每个模式下面都是各自管着自己的数据库,别人都是看不见的
- 创建sql 模式 ,就是定义了一个存储空间,
create schema <模式名>authorization<用户名>
如果没有指定模式名,那么模式名隐含为用户名
cascade 和 restrict 两者必选其一:
1. cascade 级联: 删除模式,连里面所有的数据库对象全部删除
2. restrict 限制: 表数如果该模式中已经定义了下属的数据库对象,则拒绝该删除语句的执行,只有当里面为空时,才可以删除该模式
drop schema zhang cascade;
- 在SQLserver 和MySQL对于schema 的定义都是不一样的,虽然现在大多数,都是再用MySQL和oracle 但是还是要明白这个区别
- 在SQLserver 中:
- Schema 中能够包含数据库的表,字段,数据类型以及主键和外键的名称
- 在mysql 中:
- 定义一个Schema 和定义一个数据库的作用相同
- 在SQLserver 中:
1. DML语言
负责对数据库对象运行数据访问工作的指令集,以INSERT,UPDATE,DELETE 三种指令为核心,插入、更新与删除
1. 插入INSERT
-
方式一 :
-
语法 :
insert into 表名(字段名....)values(值....);
-
特点:
- 要求值的类型和字段的类型要一致或兼容
- 字段的个数和顺序不一定与原始表中的字段个数和顺序一致但必须保证值和字段一一对应
- 假如表中有可有为空的字段,注意可以通过下面两种方式插入null 值
- 字段和值都省略
- 字段写上,值使用null
- 字段和值的个数必需一致
- 字段名可以省略,默认所有列
-
-
方式二
- 语法
insert into 表名 set 字段=值,字段=值
-
两种方式的区别:
-
方式一支持一次插入多行,语法如下:
insert into 表名[(字段名...)]values(值...)(值...)
-
方式一支持子查询 ,语法如下:
insert into 表名 查询语句;
2. 修改UPDATE
-
修改单表的记录
- 语法
update 表名 set 字段=值,字段=值 where 筛选条件;
-
修改多表的记录
-
语法
update 表1 别名 left|right|inner join 表2 别名 on 连接条件 set 字段=值,字段=值 where 筛选条件;
-
3. 删除DELETE
主要: 删除表中的数据和删除表是不一样的命令,而删除表和数据库都是drop命令
-
方式一: 使用delete
-
删除单表的记录
-
语法
delete from 表名 where 筛选条件 limit 条目数
-
-
级联删除
-
语法
delete 别名1,别名2 from 表1 别名 inner|left|right join 表2 别名 on 连接条件 where 筛选条件
-
-
-
方式二:使用truncate
-
语法
truncate table 表名
-
-
两种方式的区别:
- truncate 删除后,如果再插入,标识列从1开始,delete删除后,如果再插入,标识列从断点开始
- delete 可以添加删除条件,truncate不可以添加删除条件
- truncate 效率更高
- truncate没有返回值,delete可以返回受影响的行数
- truncate 不可以回滚,delete可以回滚