您的位置:首页 > 数据库 > MySQL

MySQL数据库基础知识

2017-11-09 12:08 288 查看
一、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 表名;#删除所有记录行,慎用!
<
a75e
/span>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,
  ...
    );

  提示:自增列只能用于主键列,且必须是整数型主键。自增列也可以手工赋值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: