MySQL基础(一):库操作、表操作与数据类型

一:MySQL简介

       MySQL是一种DBMS(数据库管理系统),即它是一种数据库软件;是基于客户机-服务器的DBMS

       MySQL优点:
       成本低:MySQL是开放源代码的,一般可以免费使用
       性能高:执行非常快
       可信赖:某些非常重要和声望很高的公司、站点使用

       简单:很容易安装和使用

二:几个基础操作与概念

       1,基础操作

       1.1,客户端登录:这里使用MySQL命令行实用程序(MySQL自带的客户端软件),MySQL服务器安装在本机 

       登录命令>>mysql -h 127.0.0.1 -P 3306 -u root -p (可简写为mysql -u root -p)

       1.2,SQL代码注释:--注释语句     (好的习惯:注释放在SQL代码之前)

       1.3,help; 可查看命令列表          help 关键字;查看该关键字的使用信息(如help select; 查看select相关使用信息)
       \s  等同于 status;   查看数据库服务端的状态
       \c  取消命令            \g  指示发送SQL语句(相当于分号)    \G  字段列表垂直显示

       1.4,SQL语句不区分大小写            SQL语句以分号 ;(或\g)结尾!

       1.5,退出MySQL客户端:quit; 或 exit;

       2,基础概念

       2.1 约束:constraint 管理如何插入或处理数据库数据的规则

       2.2 主键:primary key 用来保证一个列(或一组列)中的值是唯一的,并且永不改动;即表中的一个列(或多个列)的值唯一标识表中的行

       一张表中必须有,并且只能有一个主键;一般把一张表的id设为主键
       主键的要求:
       主键值唯一且不为NULL;
       包含主键值的列不修改或更新;

       主键值不能重用,即从表中删除某一行,其主键值不分配给新行

--形式一:
id int primary key auto_increment
--形式二:
id int,
primary key(id)
--形式三:联合主键
primary key(id,name)

        2.3 外键:是表中的一个列,其值必须在另一表的主键中列出

FOREIGN KEY(vendor_id) REFERENCE vendor(id)

--同步更新,同步删除
FOREIGN KEY(vendor_id) REFERENCE vendor(id)
ON UPDATE CASCADE
ON DELETE CASCADE

       2.4 唯一约束 UNIQUE:用来保证一个列(或一组列)中的数据唯一;这也是一种键

id int unique

联合唯一:
unique(ip,port)  

三:库操作 database

       数据库(database)保存有组织的数据的容器(通常是一个文件夹)

       show databases;   查看所有存在的库名
       use db1;    打开数据库db1      记住,必须先使用USE打开数据库,才能读取其中的数据。

       select database();    查看当前所在的库

       创建库:create database db1;(可指定字符集create database db1 charset utf8;)
       查库的信息:show create database db1;
       修改:alter database db1 charset gbk;

       删:drop database db1;



四:表操作 table

       表是一种结构化的文件,可用来存储某种特定类型的数据,也称之是某种特定类型数据的结构化清单(可把表想象为一个网格)

       列:colomn 表中的一个字段(可看成表头)。所有表都是由一个或多个列组成的

       行:row    表中的一条记录


       字段定义:中括号[ ]表示可选   竖线 | 表示或,即多选一
       column_definition:
           data_type  [NOT NULL | NULL]  [DEFAULT default_value]
             [AUTO_INCREMENT]  [UNIQUE [KEY]]  [[PRIMARY] KEY]
             [COMMENT 'string']
             [COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
             [STORAGE {DISK|MEMORY|DEFAULT}]
             [reference_definition]

       data_type:数据类型 格式如:INT[(length)] [UNSIGNED] [ZEROFILL] 或 CHAR[(length)]
       DEFAULT:设置默认值 
       AUTO_INCREMENT:自增,默认从1开始,步长为1
       UNIQUE:一种键   约束每个列值唯一

       PRIMARY KEY:主键,约束每个列值唯一且不为NULL


       创建表:create table 表名(字段名1 字段定义,字段名2 字段定义)

       查:
       show tables; 查看该库内所有的表名
       show table status; 查看该库内所有表的状态信息
       show create table t1; 查看表t1的信息
       describe t1;  简写:desc t1;   查看表的结构信息(也可show columns from t1;)
       show table status like 't1'; 查看表t1的状态信息

       改:
       alter table t1 modify name char(16);
       alter table t1 add 字段名 字段定义  [first|after 字段名]
       alter table t1 add [primary key(字段名) | unique(字段名) | foreign key(字段名)]
       alter table t1 drop 字段名
       alter table t1 change 旧字段名 新字段名 字段定义
       rename [as|to] 新表名

       删表:drop table t1;




五:数据类型

       数据类型datatype:所容许的数据的类型。每个表列都有相应的数据类型,它限制(或容许)该列中存储的数据

       1,字符串类型:

       1.1,有两种基本的串类型:定长串和变长串
       定长串:接受长度固定的字符串,其长度是在创建表时指定的;不允许多于指定的字符数目;若少于指定的字符数目,以空格补充。

       CHAR 属于定长串

       变长串:存储可变长度的文本;只有指定的数据得到保存(最大的定长内的数据),额外的数据不保存。

       VARCHAR 和 TEXT 属于变长串


    BINARY(M):与CHAR类似,但只是用来存二进制字符串;M不写默认为1

    VARBINARY(M):与VARCHAR类似,但只是用来存二进制字符串

       1.2,CHAR 与 VARCHAR的比较

    当CHAR值被存储时,它们被用空格填充到指定的长度。 当检索到CHAR值时,除非启用了PAD_CHAR_TO_FULL_LENGTH SQL模式,否则将删除尾随空格。

       与CHAR相反,VARCHAR值存储为1字节或2字节长度前缀加数据。 长度前缀表示该值中的字节数。 如果值不超过255个字节,则列使用一个长度字节,如果值可能需要超过255个字节,则使用两个长度字节。

       MySQL处理定长列远比处理变长列快得多;MySQL不允许对变长列(或一个列的可变部分)进行索引,这也会极大地影响性能。所有使用CHAR性能更优,但存在浪费存储空间的问题;使用VARCHAR一定程度上节省存储空间,但性能上较差

       1.3, 二进制数据类型:字符串类型的一种

       二进制数据类型主要用来存储很大的二进制字符串,如图像、多媒体等

       BLOB是一个二进制大对象,可以容纳可变数量的数据;BLOB值被视为二进制字符串。



       2,数值类型

       2.1 整型

       INT[(M)] [UNSIGNED] [ZEROFILL]:

       M:表示最大的显示宽度

       UNSIGNED:指定为无符号的

       ZEROFILL:指定用0填充

整型
type  存储字节  有符号范围(默认)signed  无符号范围unsigned
TINYINT         1 -128 to 127 0 to 255
SMALLINT         2 -32768 to 32767 0 to 65535
MEDIUMINT         3 -8388608 to 8388607 0 to 16777215
INT(INTEGER)         4 -2147483648 to 2147483647 0 to 4294967295
BIGINT         8 -2^63 to 2^63-1 0 to 2^64-1
        2.2 浮点型

       FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]

       M:数字总位数

       D:小数点后的数字位数

       UNSIGNED:指定为无符号的

       ZEROFILL:指定用0填充

浮点型
类型  名称 精确度  取值范围
FLOAT 单精度浮点数 能精确到约7位小数 允许值为-3.402823466E + 38到-1.175494351E-38,0
和1.175494351E-38到3.402823466E + 38
DOUBLE 双精度浮点数 能精确到15位小数 -1.7976931348623157E + 308至-2.2250738585072014E-308,0
和2.2250738585072014E-308至1.7976931348623157E + 308
DECIMAL(或DEC) 精度可变浮点数 能精确到30位小数 (M,D)  最大(65,30) 默认(10,0)

       3,日期类型


       注意:从MySQL 5.6.6开始,YEAR(2)已过时。 现有表中的YEAR(2)列与以前一样被处理,但新的或变更表中的YEAR(2)被转换为YEAR(4)。


猜你喜欢

转载自blog.csdn.net/hua1011161696/article/details/80253579