Mysql数据库的概念及sql语法和规范+数据库的用户管理

一、数据库的概念

1.数据库:组织、管理、存储数据的仓库

2.数据库的管理系统(DBMS):实现对数据有效组织,管理和存储的系统软件。

3.关系型数据库和非关系性数据库:

关系型数据库:mysql   oracle     postgresql,关系型数据库是一张二维的表格,表里面有行和列,行记录的是对象的信息和字段的属性,列记录的是对象和字段,行+列就组成一张表。只有关系型数据库才有表

非关系型数据库:缓存型数据库redis、索引型数据库ES,文档型数据库MongoDB

4.关系型数据库和非关系型数据库的优缺点:

关系型数据库的优点:表的结构清晰,逻辑容易整理,记录的数据比较完整。

                         缺点:读写速度比较慢,并发量差(同时的并发访问支持度不高),数据迁移比较麻烦。

非关系型数据库的优点:支持高并发读写,对海量数据依旧可以保持高效率的存储和访问,架构可扩展。

                             缺点:键值对形式存储,数据扩展及比较复杂,数据是保存在缓存(内存)当中(redis),如果意外重启所有数据都会丢失。

5.mysql的数据类型:

char:固定长度的字符类型,用于存储固定长度的字符串;,一旦定义好了长度之后,不论你写的值是多少,都会使用固定长度的字节大小,它们保存在磁盘之上都是4字节。

varchar:存储的是可变长度的字符类型,保存字符串时,是多少占多少,但是在保存的字符串结尾默认有一个隐藏的字符串,会多占一个字节。

varchar和char的区别:varchar比char要节约磁盘空间;读写速度char的读写性能高于varchar,char是保存的内容是连续的;varchar在增删改查之后,会产生一个磁盘空间的碎片文件,影响读写性能。

int:存储的数据类型为整数

float:浮点数,小数点   

float(m,d):m表示总位数,d表示小数位数

double:双精度浮点数

double(m,d):m表示总位数,d表示小数位数

date:用于存储日期,YYY-MM-DD

datetime:用来存储日志和时间,格式YYY-MMM-DD  HH:MM:SS

timestamp:和datetime类似,但是他可以自动记录当前时间

smallinit:存储小整数

bigint:存储大整数

decimal(5,2):存储精度的浮点数

6.数据库管理:一条数据库的语句是连贯的,以分号为结尾表示一条完整的sql语句;但是太长了,不方便阅读和理解,我们可以对一条语句进行分行的写法;关键词不能跨行。

增删改查:sql语句

sql中的名词:数据库叫database

                       表:table

                       行:row

                       列:column

                       索引:index

                       视图:view

                       用户:user

                       权限:privilege

                       存储过程:procedure

                       存储函数:funcrion

                       调度器:exent

sql的语言规范:在数据库系统中,sql语句不区分大小写;sql语句可以单行也可以多行,但是必须要以分号结尾。

sql的命名规范:库名,表名,列名,都是必须以字母开头,后面可以有数字及特殊符号,但不要使用mysql的命令;库名,表名,用户名严格区分大小写。

sql语言的分类:

DDL:数据库定义语言,创建数据库的对象语言,库,表,列和索引等等   create(创建) drop(删除)alter(改)

DML:数据库操作语言,对表里面的数据进行管理   select   update   insert  delete

DQL:数据库查询语言,数据库的查询语句  select

DCL:数据控制语言,控制和管理数据库用户的角色和权限    grant  revoke

TCL:事务控制语言:用来管理数据库的事务,脚本开发及存储过程   commit  rollback

7.如何创建库和表的语句

创建库:create database test;

创建表:一条数据库的语句是连贯的,以分号为结尾表示一条完整的sql,但是太长,不方便阅读和理解,我们可以对一条语句进行分行的写法,关键词不能跨行。

 

 查看表的属性

纵向展示表名:只能在虚拟机操作,在

删除库  

删除表

8.DML管理语句:

insert:插入数据的两种方法

insert   into 表名(字段1,字段2,字段3)  values(1,2,3);

insert   into  表名  valuse  (1,2,3);

 insert  :插入时间类型的两种方法

null和空值之间的区别:

wc这个表哪列的score值为null

对已有数据修改和更改:

update   表名  set  列名=值  where  条件;

删除表的数据

delete from 表名 where 条件;

9.DQL查询语句:

查看指定列的值

查看指定行

去重查询

10.where语句:条件的筛选

查询id为7的行

 查询id为5且score为5.55的行

查询id为5或者score为6.66的行 

模糊查询:like

11.alter 修改表名和修改表结构

给表添加一个列:一定要加数据类型char或varchar

修改字段的数据类型:

删除列:把address这列删除

修改列的名称

12.约束条件:

主键约束:primary key  用于标识表中的主键列的值,而且这个值是全表当中唯一的,而且值不能为null,一个表中只能有一个主键。

创建主键的第一种方式:

创建主键的第二种方式:

创建外键:用来建立表于表之间的关系,确保外键中的值于另一个表的主键值匹配,保证数据引用的完整性,多表联查,不要超过三张表,会降低查询效率。

 删除主键和外键:

非空约束:保证列中的值不含null值。

唯一性约束(unique key):确保列中的所有值都是唯一的,类似主键,但是一个表可以有多个唯一约束。

自增约束,在列生成的每一行都会自动生成一个唯一标识符,通常和主键一起使用,每次插入新行是,自增列的值会自动增加。

复制表:两种方法

创建临时表:刷新表看不到表名,重启后直接失效

清空表:删除表内内容但是保留表和表结构

 二、增删改查日测题(上机实操)
1、创建库,库名 country

2、创建表,表名 province和city 要求如下:

1)、province包含字段:
ct_id为区号,最多四位 主键;
ct_name 城市名 最长5位,不能为空,不能重复
ct_scale 城市规模,可重复,不能为空。

2)、city包含字段
c_id 主键 
c_street 不能为空,不能重复。
c_subway  int 不能重复 可以为空
c_weather 字符串 可以空 默认值:晴

3)通过修改表city,创建外键关联province的主键,ct_id。

分别插入5条数据,任选。不限制

展示表1的前两行,展示表2的2-4行

有重复数据,去重查询。

修改表city,将c_weather的默认值改为:不详

 

三、数据库的用户管理

1.创建普通用户:create user

create user 'wc'@'192.168.127.10';

wc表示用户名

192.168.127.10表示新建的用户wc可以在哪些主机上登录,既可以使用IP地址,也可以使用网段,也可以使用主机名。

'wc'@'192.168.127.10' 指定ip登录

'wc'@'192.168.127.0/24' 指定网段登录

'wc'@'%' 百分号表示所有,可以从任何设备登录

查看mysql库中的user表的内容:select * from  user;

user:用户名,Host:可以登录的主机,local host指的是本地登录,%:任意主机(IP地址);权限上local host大于"%"的权限。

 2.设置用户权限:grant   all    privileges  on *.* to 'wc'@'192.168.127.80'  identified  by '1234560';

 grant  all privileges 赋予用户所有权限(增删改查)

on *.* 对所有库及所有表都有操作权限(左边的*代表库,右边的*代表库里的表)

如 on test.* 表示只能对指定的test库进行操作

to 'wc'@'192.168.127.80' 赋权给wc这个用户及登录的主机

3.查看已有用户的权限:

4.取消用户权限:

 5.只给用户指定库查的权限

 

 6.给用户添加多个权限

 7.删除用户的多个权限

 

8.删除用户

 9. 创建用户并给予密码:

      identified by '123456' 使用哪个密码进行登录

 

10.忘记密码如何免密登录:vim   /etc/my.cnf

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 23:46:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 23:46:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 23:46:04       58 阅读
  4. Python语言-面向对象

    2024-07-16 23:46:04       69 阅读

热门阅读

  1. 开放开源开先河(一)

    2024-07-16 23:46:04       21 阅读
  2. 动态规划算法专题四--两个数组dp问题

    2024-07-16 23:46:04       20 阅读
  3. 如何检查对象中键是否存在?

    2024-07-16 23:46:04       22 阅读
  4. 【嵌入式】面试笔试问题整理 (持续更新)

    2024-07-16 23:46:04       22 阅读
  5. 微信小程序-组件通信

    2024-07-16 23:46:04       19 阅读