数据库
首页 > 数据库> > MYSQL 初学

MYSQL 初学

作者:互联网

一.数据的存储方式

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

二.什么是数据库

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

三.数据库发展历史

    网状数据库 -> 层次型数据库 -> 关系型数据库 -> 非关系型数据库(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  数据表名称;  描述指定的数据表的表头有哪些项

 五.SQL命令

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

 1.SQL命令运行方式

    (1)交互模式

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

    (2)脚本模式

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

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

 2.SQL命令的语法规范    

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

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

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

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

         -- 单行注释

         #单行注释

         /* 多行注释 */

六.常见的SQL命令

  1.设置客服端连接服务器端编码为utf8
     set names utf8;

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

       drop  database  if  exists  数据库名称;

  3.创建一个新的数据库,设置存储字符的编码为utf8
     create database hantang charset=utf8;

   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

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

    MySQL可视化操作

九.列类型

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

   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插入

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

十三.简单查询

标签:存储,数据库,MYSQL,约束,数据表,初学,mysql,null
来源: https://www.cnblogs.com/phoenix-7/p/16685557.html