【七天入门数据库】第三天 MySQL的库表操作

系列文章传送门:

【七天入门数据库】第一天 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、创建、删除数据库

【七天入门数据库】第三天 MySQL的库表操作_第1张图片

2、 使用数据库,查询创建数据

【七天入门数据库】第三天 MySQL的库表操作_第2张图片

3、查询当前默认的数据库

【七天入门数据库】第三天 MySQL的库表操作_第3张图片

 4、查询当前使用的编码方式校验规则

【七天入门数据库】第三天 MySQL的库表操作_第4张图片

二、数字,文本,日期,在一章表中定义多个字段,要使用所有的数据类型。 【七天入门数据库】第三天 MySQL的库表操作_第5张图片

 都看到这里了,创作不易,大家点个赞再走啦!!- ̗̀(๑ᵔ⌔ᵔ๑)

 

你可能感兴趣的:(七天入门数据库,数据库,mysql)