mysql知识点

这篇博客介绍了MySQL数据库的基础知识,包括数据存储方式、数据库概念、发展历史及关系型数据库逻辑结构。重点讲解了MySQL数据库的部署结构、客户端连接、管理命令以及SQL命令的运行方式和语法规范。此外,还涵盖了SQL命令如创建数据库、数据表,以及数据的增删改查操作。同时,讨论了字符存储、列类型和列约束,特别强调了如何解决中文乱码问题和选择合理的列类型。
摘要由CSDN通过智能技术生成

MYSQL知识点

Day01

一.数据的存储方式有哪些

  特定的文件/内存/第三方云服务器/数据库服务器

二.什么是数据库

  数据库按照一定的形式来组织存储数据,目的是为了便于操作数据 —— 增删改查

三.数据库发展历史

  网状数据库 -> 层次型数据库 -> 关系型数据库 -> 非关系型数据库(NoSQL)

  

  关系型数据库逻辑结构

  Server  ->  Database  ->  Table  ->  Row  ->  Column

数据库服务器    数据库       数据表       行          列

  

四.mysql数据库

 oracle:MySQL

 马丁:MariaDB

xampp

服务器套装,保护多款服务器端软件,包含mysql,....

 1.mysql部署结构

  (1)服务器端:负责存储、维护数据 —— 银行的数据库服务器

    C:/xampp/mysql/bin/mysqld.exe   启动文件

     占用端口3306

  (2)客户端:负责连接服务器,对数据进行操作 —— 银行的ATM机

    C:/xampp/mysql/bin/mysql.exe  

 2.使用客户端连接服务器端

   mysql.exe  -h127.0.0.1  -P3306   -uroot   -p

     -h   连接的服务器,IP地址/域名   127.0.0.1/localhost   自己电脑的IP地址和域名

     -P   mysql所占用的端口

     -u   提供用户名,root是mysql的管理员账户

     -p   提供root对应的密码,xampp下root密码为空

  mysql  -uroot    简写形式

连接命令结束不能加分号

  练习:反复的尝试连接,连接后退出连接。

 3.常用的管理命令

  quit;    退出服务器的连接

  show  databases;   显示所有的数据库

  use  数据库名称;   进入指定的数据库

  show  tables;   显示所有的数据表

  desc  数据表名称;  描述指定的数据表的表头有哪些项

  练习:分别进入到数据库mysql和information_schema

  练习:分别查看一下数据库中分别有多少个表

     performance_schema

     phpmyadmin

  练习:描述数据库phpmyadmin下以下表都有哪些项

     pma__history

     pma__recent

     pma__users

五.SQL命令

  结构化查询语言,用于操作关系型数据库服务器,主要对数据进行增删改查

 1.SQL命令运行方式

  (1)交互模式

    客户端输入一行,点击回车,服务器就执行一行,适用于临时性的查看数据。

   

  (2)脚本模式

    把要执行的所有命令写在一个脚本文件中,一次性的提交给服务器执行,适用于批量的操作数据。

   

   mysql  -uroot<拖拽要提交的脚本文件          回车

  练习:新建脚本文件02.sql,显示所有的数据库,进入到数据库phpmyadmin,显示所有的数据表,描述数据表pma__recent中都有哪些项;最后提交脚本文件

 2.SQL命令的语法规范     

  (1)一条SQL命令可以跨越多行,以英文的分号作为结束

  (2)SQL命令不区分大小写,习惯上关键字大写,非关键字小写

  (3)假设某一条SQL命令出现语法错误,则此条命令往后所有命令不再执行

  (4)分为单行注释和多行注释

     -- 单行注释

     #单行注释

     /* 多行注释 */

六.常见的SQL命令

 1.丢弃数据库,如果存在

   drop  database  if  exists  数据库名称;

 2.创建新的数据库

   create  database  数据库名称;

 4.进入创建的数据库

   use  数据库名称;

 5.创建数据表

   create  table  数据表名称(

      列名称  列类型,

      ...

   );

一.数据操作

 1.插入数据

   insert into 数据表名称 values(...);

 2.删除数据

   delete from 数据表名称 where 条件;

 3.修改数据

   update 数据表名称 set 列名称=值, ...  where 条件;

 4.查询数据

   select * from 数据表名称;

二.计算机存储字符

 1.如何存储英文字符

  ASCII:对所有的英文及其符号进行编码,总共有128个

  Latin-1:对欧洲字符进行了编码,总共有256个,兼容ASCII;MySQL默认使用这种编码

 2.如何存储中文字符

  GB2312:对6000多汉字进行了编码,兼容ASCII

  GBK:对2万多汉字进行了编码,兼容GB2312

  Unicode:对世界上主流国家常用的语言进行了编码,具体有三种存储方案,utf-8,utf-16,utf-32

 3.解决中文乱码

  (1)确保脚本文件的编码是utf8

  (2)设置客户端连接服务器端编码为utf8

      set names utf8;

  (3)设置服务器端创建数据库存储字符的编码为utf8

      charset=utf8

  

 4.针对于个别情况,还是出现乱码

退出交互模式

  执行  chcp   65001  将命令行编码改为utf-8

重新进入交互模式查询数据

三.列类型

 在创建数据表的时候,指定的列存储的数据类型

 create table t1(

    nid  列类型

 );

 1.数值型

   tinyint  微整型,占1个字节,范围-128~127

   smallint  小整型,占2个字节,范围-32768~32767

   int  整型,占4个字节,范围-2147483648~2147483647

   bigint  大整型,占8个字节,范围

   float   单精度浮点型,占4个字节,存储的值越大精度越低

   double  双精度浮点型,占8个字节,存储的值越大精度越低

   decimal(M,D)  定点小数,占16个字节,M代表总的有效位数,D代表小数点后的位数

   boolean   布尔型,只有两个值,分别是true和false,存储只有两个值的数据,例如:性别、是否为会员、是否为推荐商品...

true和false是关键字,不能加引号

布尔型在使用的时候会转为tinyint,true转为1,false转为0,也可以直接插入1或者0

 2.日期时间型                      

  date  日期型  格式 '2022-10-30'

  time  时间型  格式 '14:55:30'

  datetime   日期时间型   格式 '2022-10-30 14:55:30'

 3.字符串型

  varchar(M)  变长字符串,不会产生空间浪费,数据操作速度相对慢,常用于存储变化长度的数据,例如:姓名、文字标题、详情...  M的最大值是65535

  char(M)  定长字符串,可能会产生空间浪费,数据操作速度相对快,常用于存储固定长度的数据,例如:手机号码、身份证号码...  M的最大值是255

  text(M)  大型变长字符串,M的最大值4G

varchar(5)

char(5)

a

a\0

a\0\0\0\0

ab

ab\0

ab\0\0\0

一二三

一二三\0

一二三\0\0

 选择合理列类型

  create  table  t1(

     id  int,

     title  varchar(64),

     birthday  date,

     age  tinyint,

     phone  char(11),

     sex  boolean

  );

数据库存储图片,存储的是图片的路径

img/1.jpg

img/huawei.png

四.列约束  

  mysql可以对插入的值进行验证,例如:编号不能出现重复、性别只能是男或者女、一个人的成绩范围0~100之间... 只有符合条件才允许插入

  create  table  t1(

    pid  int  列约束

  );

 1.主键约束 —— primary key

  声明了主键约束的列上,不允许插入重复的值,一个表中只能有一个主键约束,通常加在编号列,会加快数据的查询速度

null  表示一个暂时无法确定的值,例如:暂时无法确定商品的价格、无法确定一个员工的手机、家庭住址...

null是关键字,不能加引号

  主键约束禁止插入null

 2.非空约束 —— not null

  声明了非空约束的列,禁止插入null

一.列约束

 3.唯一约束 —— unique

  声明了唯一约束的列不允许插入重复的值,一个表中可以使用多次唯一约束

  允许插入null,甚至多个null

一旦使用了唯一约束,可能会影响到数据的默认排序

 4.检查约束 —— check

  也称为自定义约束,可以自己指定约束条件

  create table student(

    score  tinyint  check(score>=0 && score<=100)

  );

  mysql不支持检查约束,极大影响数据插入速度。

 5.默认值约束 —— default

  (1)设置默认值

    create  table  ht_event(

       ctime  date  default  '2022-8-31'

    );

    如果不设置默认值,则为null

  (2)应用默认值

    ①在插入值的位置,使用default关键字,就会自动应用默认值

      insert into ht_event values(3,'事件测试', default);

    ②给指定的列提供值,没有出现的列会自动应用默认值

      insert into ht_event(eid, title) values(4,'事件测试');

 6.外键约束

   声明了外界约束的列插入的值必须在另一个表的主键列出现,目的确保两个表之间建立关联。

   外键列要和对应的主键列的类型要保持一致

   foreign key(外键列)  references  另一个表(主键列)

  

二.自增列

  auto_increment:自动增长,声明了自增列,只需要赋值为null,就会获取最大值然后加1插入

   注意事项:必须添加在整数型的主键列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值