MySQL数据库基础知识

一、Database Server:数据库服务器,专用于存储网页中的数据。
(1)关系型数据库管理系统分为两部分:
  服务器端:负责永久存储数据、维护数据,人不能直接观看;
服务器上数据的逻辑结构: Server > Database > Table > Row > Column
  客户端:用于向服务器发起“增删改查”命令,呈现出操作的结果


(2)MySQL常用管理命令(在命令行工具中)
  SHOW DATABASES; 显示服务器中当前所有的数据库名
  USE  库名; 进入指定的数据库中
  SHOW TABLES; 显示当前库中有哪些数据表
  DESC 表名; 描述指定表的结构(有哪些列)

提示:

  (1)MySQL命令大小写都可以!推荐在编写关键字的时候用大写字母;非关键字可以小写。

  (2)所有命令必须以英文分号结束。

(3)SQL语言
  结构化查询语言,专用于操作(增删改查)数据库服务器中的数据。是一门国际标准化语言,被各大数据库厂家所支持。
  常用的SQL语句:
  #丢弃一个已有的数据库(如果存在的话)
  DROP  DATABASE  IF  EXISTS  库名;
  #创建新的数据库,其中保存的字符使用指定的字符集
  CREATE DATABASE  库名  CHARSET=UTF8;
  #进入指定的数据库
  USE  库名;
 #创建保存特定数据的表
  CREATE TABLE 表名 (列名1  类型,  列名2  类型, ...);

(2)常用SQL命令

  添加数据
INSERT INTO 表名 VALUES (....);
  删除数据:
  DELETE FROM 表名;#删除所有记录行,慎用!
DELETE FROM 表名 WHERE 列=值;    #删除满足条件的行
  修改数据:
UPDATE 表名 SET 列=值, 列=值;   #修改所有记录行,慎用!
  UPDATE 表名 SET 列=值, 列=值 WHERE 列=值;#修改满足条件的行
  查询数据:
  SELECT * FROM 表名;

(3)MySQL中的列类型:
数字类型

TINYINT:  占1个字节, -128~127

SMALLINT:  占2个字节,-32768~32767

INT: 占4个字节,-2147483648~2147483647

BIGINT:占8个字节,....
     ----------------------
FLOAT(M,D):单精度浮点型,占4个字节,M表示总有效位数,D表示小数点后面的有效位数  
       DOUBLE(M,D):双精度浮点型,占8个字节 

DECIMAL(M,D):严格定点数,用于精确运算,如货币金额

字符串类型

CHAR(M): M不能超过255
VARCHAR(M):M不能超过65535
TEXT(M): M不能超过2^32,即40亿个字符
日期时间类型
DATE: 日期类型,必须用引号括起来,采用'yyyy-mm-dd'格式
TIME:  时间类型,必须用引号括起来,采用'hh:mi:ss'格式
  DATETIME: 日期时间类型,必须用引号括起来,采用'yyyy-mm-dd hh:mi:ss'格式
布尔类型

BOOL/BOOLEAN:只能表示TRUE(等价于1)或FALSE(等价于0)

如何存储项目中的“日期/时间”数据
  方式1
:DATE/DATETIME,不足:不同国家的人日期格式不同的!'2017-12-31'、'12-31-2017'、'31/12/2017'
  方式2:VARCHAR,不足:不方便比较大小 '578'>'2017'
  方式3:BIGINT,表示距离计算机元年经过了多少毫秒 1000 => 1970-1-1 0:0:1
1000*60=> 1970-1-1 0:1:0
1000*60*60=> 1970-1-1 1:0:0
1000*3600*24=> 1970-1-2 0:0:0
1000*3600*24*365=> 1971-1-1 0:0:0
....
计算机元年:1970-1-1 0:0:0

注:CHAR(8)和VARCHAR(8)的区别
user_name  CHAR(8):   
定长字符串,可能产生空间浪费,但读取速度快
   'a'  实际存储为: 'a\0\0\0\0\0\0\0'
   'ab'实际存储为: 'ab\0\0\0\0\0\0'
   'abc'实际存储为: 'abc\0\0\0\0\0'
   'abcd'实际存储为: 'abcd\0\0\0\0'
   'abcde'实际存储为: 'abcde\0\0\0'
   'abcdef'实际存储为: 'abcdef\0\0'
   'abcdefg'实际存储为: 'abcdefg\0'
    'abcdefgh'实际存储为: 'abcdefgh'
   'abcdefghi'实际存储为: 'abcdefgh'
user_name  VARCHAR(8):   变长字符串
不定长字符串,不会产生空间浪费,但读取速度稍慢
   'a'  实际存储为: 'a\0'
   'ab'实际存储为: 'ab\0'
    'abc'实际存储为: 'abc\0'
    'abcd'实际存储为: 'abcd\0'
    'abcde'实际存储为: 'abcde\0'
    'abcdef'实际存储为: 'abcdef\0'
   'abcdefg'实际存储为: 'abcdefg\0'
   'abcdefgh'实际存储为: 'abcdefgh'
   'abcdefghi'实际存储为: 'abcdefgh'
(4)列上的约束
主键约束( PRIMARY  KEY )

  语法:列名 类型 PRIMARY KEY
  声明为“主键”的列上不能出现NULL值,且不能重复,如商品编号;
  表中所有的记录行会自动按照主键列上的值进行排序 —— 一个表至多只能声明一个主键列。
唯一约束( UNIQUE )
  语法:列名 类型 UNIQUE
  声明为“唯一”约束的列上不能出现重复值,但可以出现多个NULL
非空约束( NOT  NULL )
  语法:列名 类型  NOT  NULL
  声明为“非空”约束的列上不能出现NULL,但可以重复

检查约束 —— MySQL不支持

默认值约束( DEFAULT )

  语法:列名 类型 DEFAULT 值
  声明了默认值的列若未指定值,则使用默认值;若指定的特定的值,则使用指定的值。
外键约束和自增列
主键约束和外键约束

  主键:PRIMARY KEY,唯一且非空约束,是排序依据;
  外键:FOREIGN KEY,可重复可为空,外键列上出现的值必须在另外一个表的主键列上出现过
  外键约束的语法:    references
 列名  类型,
    FOREIGN KEY(列名) REFERENCES 表名(列名)
MySQL数据库中专有的“自增列”

  AUTO_INCREMENT,只有MySQL支持,用于实现自增列!

 自增列无需手工指定特定的值,只需要赋值为NULL,MySQL服务器会自动查询当前已有的最大整数,在此基础上+1.

  语法: CREATE TABLE xx (  
  主键列名 INT  PRIMARY KEY AUTO_INCREMENT,
  ...
    );
  提示:自增列只能用于主键列,且必须是整数型主键。自增列也可以手工赋值。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端SkyRain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值