系列文章传送门:
【七天入门数据库】第一天 MySQL的安装部署
【七天入门数据库】第二天 数据库理论基础
【七天入门数据库】第三天 MySQL的库表操作
文章目录
一、SQL语句书写规范
二、数据库的操作
三、表的基本操作
四、表的约束
五、存储引擎
六、MySQL的用户授权
七、实践作业
一、SQL语句书写规范
(一)SQL语句不区分大小写(建议大写) , 但字符串常量区分大小写。
(二)SQL语句可单行或多行书写,以“;”结尾。 关键词不能跨多行或简写。
(三)用空格和缩进来提高语句的可读性,子句通常位于独立行,便于编辑,提高可读性。
(四)注释: /**/多行注释 “--” 单行注释
二、数据库的操作
(一)MySQL自带数据库
Information_schema:主要存储了系统中的一些数据库对象信息,如用户表信息、列信息、权限信息、字符集信息、分区信息等。(数据字典表)。
performance_schema:主要存储数据库服务器的性能参数。
sys:5.7新增,之前版本需要手工导入。这个库是通过视图的形式把以上两个结合起来,查询出更加令人容易理解的数据。
mysql:存储了系统的用户权限信息及帮助信息。
test:系统自动创建的测试数据库,任何用户都可以使用。
(二)创建数据库
create database [if not exists] 库名;
(三)删除数据库
drop database [if exists] 库名;
(四)使用数据库
use 库名;
(五)查询数据库信息
1、查看所有数据库:show databases;
2、查看当前使用的数据库:select database();
3、查看当前的用户:select user();
4、查看指定数据库的指定字段:select 字段名 from 库名;
(六)执行系统命令
system 命令;
三、表的基本操作
(一)创建表
create table 表名(
列名 列类型 comment '备注' ,
列名 列类型 comment '备注'
);
(二)数据类型
文本:TEXT 65535字节(有细分4种)
字符串:CHAR varchar() 可变化长度
二进制文本:BLOB (有细分3种)
枚举:ENUM(‘a’,‘b’,....)
浮点型:FLOAT (size,d) size:总位数 d:小数点后几位
(三)查看表信息
select 字段名 from 库名;
用“show create table 表名\G”可以查看更全面的表定义信息
(四)删除表
drop table [if exists] 表名;
(五)修改表的结构
1、修改列类型:alter table 表名 modify 列名 列类型;
2、增加列:alter table 表名 add 列名 列类型;
3、删除列:alter table 表名 drop 列名;
4、列改名:alter table 表名 change 旧列名 新列名 列类型;
5、更改表名:alter table 表名 rename 新表名;
(六)复制表
1、只复制表的结构:create table 新表名 like 源表
2、只复制数据:insert into 表 select * from 原表;
3、复制结构和数据:create table 新表名 select * from 源表
(七)数据库字典
由information_schema数据库负责维护
tables-存放数据库里所有的数据表、以及每个表所在数据库。
schemata-存放数据库里所有的数据库信息
views-存放数据库里所有的视图信息。
columns-存放数据库里所有的列信息。
triggers-存放数据库里所有的触发器。
routines-存放数据库里所有存储过程和函数。
key_column_usage-存放数据库所有的主外键
table_constraints-存放数据库全部约束。
statistics-存放了数据表的索引。
四、表的约束
约束是在表上强制执行的数据校验规则,主要用于保证数据库的完整性,当表中数据有相互依赖性时,可以保护相关的数据不被删除。
(一)非空约束(not null)
列级约束,只能使用列级约束语法定义,确保字段值不允许为空,只能在字段级定义。
所有数据类型的值都可以是NULL,空字符串不等于NULL,0也不等于NULL。
例如:stu_name varchar(18) not null
(二)唯一约束(unique)
唯一性约束条件确保所在的字段或者字段组合不出现重复值
例如:stu_name varchar(18) unique not null
(三)主键约束(primary key)
主键从功能上看相当于非空且唯一,一个表中只允许一个主键,是表中唯一确定一行数据的字段,可自动增长,当建立主键约束时,MySQL为主键创建对应的索引。
例如:stu_id int primary key auto_increment
(四)外键约束
外键是构建于一个表的两个字段或者两个表的两个字段之间的关系,子表外键列的值必须在主表参照列值的范围内,或者为空),当主表的记录被子表参照时,主表记录不允许被删除。外键参照的只能是主表主键或者唯一键,保证子表记录可以准确定位到被参照的记录。
foreign key (外键列名) references 主表(参照列) on delete/updata +设置
设置:
- restrict: 默认,不允许删除的
- cascade: 级联: 联动
- no action: 什么也不做
- set null: 设置为null
(五)检查约束
注意检查约束在8.0之前,MySQL默认但不会强制的遵循check约束(写不报错,但是不生效,需要通触发器完成。
例如:age int check(age > 18)
(六)默认值
可以使用default关键字设置每一个字段的默认值。
例如:default 'M'
(七)添加表的约束
添加NOT NULL约束:alter table 表名 add 列名 类型;
添加UNIQUE约束:alter table 表名 add unique 列名;
添加PRIMARY KEY约束:alter table 表名 add primary key 列名;
添加FOREIGN KEY约束:alter table 表名 add foreign key 列名 references parent 列名;
(八)删除表的约束
删除NOT NULL约束:alter table 表名 modify 列名 类型;
删除UNIQUE约束:alter table 表名 drop index 惟一约束名;
删除PRIMARY KEY约束:alter table 表名 drop primary key;
删除FOREIGN KEY约束:alter table 表名 drop foreign key 外键名;
删除CHECK约束:alter table 表名 drop check 检查约束名;
五、存储引擎
MySQL中的数据用各种不同的技术存储在文件(或者内存)中, 每种技术都使用不同的存储机制、 索引技巧、 锁定水平。这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型)。
插件式存储引擎是MySQL数据库最重要的特性之一, 用户可以根据应用的需要选择如何存储和索引数据、 是 否使用事务等。
默认情况下, 创建表不指定表的存储引擎, 则会使用配置文件的my.cnf中default-storage-engine=InnoDB指定的InnoDB
SHOW VARIABLES LIKE 'table_type';
MyISAM:应用于以读写操作为主, 很少更新 、 删除 , 并对事务的完整性、 并发性要求不高的情况
InnoDB::应用于对事务的完整性要求高,在并发条件下要求数据的一致性的情况。现在的默认值。
MEMORY:表的数据存放在内存中,访问效率高 ,但一旦服务关闭,表中的数据全部丢失。
MERGE: 是一组MyISAM表的组合。 可以突破对单个MyISAM表大小的限制, 并提高访问效率。
六、MySQL的用户授权
(一)密码策略
查看密码:grep 'password' /var/log/mysqld.log
查看数据库当前密码策略: show VARIABLES like "validata_password%";
(二)授权和撤销授权
查看某用户权限:show grants for '用户名'@'地址';
删用户:drop user 用户名;
授权:grant 权限列表 on 库名.表名 to '用户名'@'客户端主机' ;
刷新权限:flush privileges;
移除权限:revoke 权限列表 on 库名.表名 from '用户名'@'客户端主机' ;
权限列表:select,insert,update,delete,create
七、实践作业
一、创建数据库,删除数据库,查询创建数据的语句,使用数据库,查询当前默认的数据库以及使用的编码方式校验规则。
1、创建、删除数据库
2、 使用数据库,查询创建数据
3、查询当前默认的数据库
4、查询当前使用的编码方式校验规则
二、数字,文本,日期,在一章表中定义多个字段,要使用所有的数据类型。
都看到这里了,创作不易,大家点个赞再走啦!!- ̗̀(๑ᵔ⌔ᵔ๑)