Mariadb/MySQL数据库单表查询基本操作及DML语句

                            作者:尹正杰 

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

 

 

一数据库及表相关概述

1>.数据库操作

创建数据库:
  CREATE DATABASE|SCHEMA [IF NOT EXISTS] 'DB_NAME';
  CHARACTER SET 'character set name’COLLATE 'collate name'

修改数据库:
  ALTER DATABASE DB_NAME character set utf8;

删除数据库
  DROP DATABASE|SCHEMA [IF EXISTS] 'DB_NAME';

查看支持所有字符集:
  SHOW CHARACTER SET;

查看支持所有排序规则:
  SHOW COLLATION;

获取命令使用帮助:
  HELP KEYWORD;

查看数据库列表:
  SHOW DATABASES;

2>.创建表

创建表:CREATE TABLE
  (1) 直接创建
      CREATE TABLE [IF NOT EXISTS] ‘tbl_name’ (col1 type1 修饰符, col2 type2 修饰符, ...)
  (2) 通过查询现存表创建;新表会被直接插入查询而来的数据
      CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_options] [partition_options] select_statement
  (3) 通过复制现存的表的表结构创建,但不复制数据
      CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name { LIKE old_tbl_name | (LIKE old_tbl_name) }
注意:
  Storage Engine是指表类型,也即在表创建时指明其使用的存储引擎,同一库中不同表可以使用不同的存储引擎
  同一个库中表建议要使用同一种存储引擎类型
  
字段信息
  col type1
  PRIMARY KEY(col1,...)
  INDEX(col1, ...)
  UNIQUE KEY(col1, ...)

表选项:
  ENGINE [=] engine_name
    SHOW ENGINES;查看支持的engine类型
  ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}

获取帮助:
  mysql
> HELP CREATE TABLE;

3>.表操作

表:
  二维关系

设计表:
  遵循规范

定义:字段,索引
  字段:字段名,字段数据类型,修饰符
  约束,索引:应该创建在经常用作查询条件的字段上

查看所有的引擎:
  SHOW ENGINES

查看表:
  SHOW TABLES [FROM db_name]

查看表结构:
  DESC [db_name.]tb_name
  SHOW COLUMNS FROM [db_name.]tb_name

删除表:
  DROP TABLE [IF EXISTS] tb_name

ALTER TABLE 'tbl_name'
  字段:
    添加字段:add
      ADD col1 data_type [FIRST|AFTER col_name]
    删除字段:drop
    修改字段:
      alter(默认值), change(字段名), modify(字段属性)
  索引:
    添加索引:add index
    删除索引:drop index
  表选项
    修改:

查看表上的索引:
  SHOW INDEXES FROM [db_name.]tbl_name;

查看帮助:
  Help ALTER TABLE

查看表创建命令:   SHOW CREATE TABLE tbl_name 查看表状态:   SHOW TABLE STATUS LIKE
'tbl_name’ 查看库中所有表状态:   SHOW TABLE STATUS FROM db_name

 

二.数据类型

Mariadb/MySQL数据库单表查询基本操作及DML语句

数据类型:
  数据长什么样
  数据需要多少空间来存放

系统内置数据类型和用户定义数据类型
MySql支持多种列类型:   数值类型   日期
/时间类型   字符串(字符)类型   更多数据类型说明参考:https://dev.mysql.com/doc/refman/5.5/en/data-types.html

选择正确的数据类型对于获得高性能至关重要,三大原则:   更小的通常更好,尽量使用可正确存储数据的最小数据类型   简单就好,简单数据类型的操作通常需要更少的CPU周期   尽量避免NULL,包含为NULL的列,对MySQL更难优化

1>.整型

tinyint(m) 
  1个字节 范围(-128~127)

smallint(m) 
  2个字节 范围(-32768~32767)

mediumint(m) 
  3个字节 范围(-8388608~8388607)

int(m) 
  4个字节 范围(-2147483648~2147483647)
  int(m)里的m是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围,规定了MySQL的一些交互工具(例如MySQL命令行客户端)用来显示字符的个数。对于存储和计算来说,Int(1)和Int(20)是相同的

bigint(m) 
  8个字节 范围(+-9.22*10的18次方)

加了unsigned(最高位不为符号位),则最大值翻倍,
  如:tinyint unsigned的取值范围为(0~255)

2>.布尔型

BOOL,BOOLEAN:布尔型,
  是TINYINT(1)的同义词。zero值被视为假,非zero值视为真

3>.浮点型(float和double),近似值

float(m,d) 
  单精度浮点型 8位精度(4字节) m总个数,d小数位

double(m,d) 
  双精度浮点型16位精度(8字节) m总个数,d小数位

设一个字段定义为float(6,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位

4>.定点数

  在数据库中存放的是精确值,存为十进制

  decimal(m,d) 参数m<65 是总个数,d<30且 d<m 是小数位
  MySQL5.0和更高版本将数字打包保存到一个二进制字符串中(每4个字节存9个数字)。例如,
decimal(18,9)小数点两边将各存储9个数字,一共使用9个字节:小数点前的数字用4个字节,小数点后的数字用4个字节,小数点本身占1个字节
  浮点类型在存储同样范围的值时,通常比decimal使用更少的空间。float使用4个字节存储。double占用8个字节
  因为需要额外的空间和计算开销,所以应该尽量只在对小数进行精确计算时才使用decimal——例如存储财务数据。但在数据量比较大的时候,可以考虑使用bigint代替decimal

5>.字符串 

char(n) 
  固定长度,最多255个字符

varchar(n) 
  可变长度,最多65535个字符

tinytext 
  可变长度,最多255个字符

text 
  可变长度,最多65535个字符

mediumtext 
  可变长度,最多2的24次方-1个字符

longtext 
  可变长度,最多2的32次方-1个字符

BINARY(M) 
  固定长度,可存二进制或字符,长度为0-M字节

VARBINARY(M) 
  可变长度,可存二进制或字符,允许长度为0-M字节

char和varchar:
  1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉,所以char类型存储的字符串末尾不能有空格,varchar不限于此
  2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n< n>255),所以varchar(4),存入3个字符将占用4个字节
  3.char类型的字符串检索速度要比varchar类型的快

varchar和text:
  1.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n< n>255),text是实际字符数+2个字节。
  2.text类型不能有默认值
  3.varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text

6>.内建类型

  ENUM枚举, SET集合

7>.二进制数据:BLOB

  BLOB和text存储方式不同,TEXT以文本方式存储,英文存储区分大小写,而Blob是以二进制方式存储,不分大小写

  BLOB存储的数据只能整体读出
  TEXT可以指定字符集,BLOB不用指定字符集

8>.日期时间类型

date 
  日期 '2008-12-2'  
time

  时间 '12:25:36'
datetime
  日期时间
'2008-12-2 22:06:44'
timestamp
  自动存储记录修改时间
YEAR(
2), YEAR(4):
  年份
timestamp
  字段里的时间数据会随其他字段修改的时候自动刷新,这个数据类型的字段可以存放这条记录最后被修改的时间

9>.修饰符

所有类型:
  NULL 
    数据列可包含NULL值
  NOT NULL 
    数据列不允许包含NULL值
  DEFAULT 
    默认值
  PRIMARY KEY 
    主键
  UNIQUE KEY 
    唯一键
  CHARACTER SET name 
    指定一个字符集

数值型
  AUTO_INCREMENT 
    自动递增,适用于整数类型
  UNSIGNED 
    无符号

 

三.增

MariaDB [(none)]> help CREATE          #查看CREATE命令的帮助信息
Many help items for your request exist.
To make a more specific request, please type 'help <item>',
where <item> is one of the following
topics:
   CREATE DATABASE
   CREATE EVENT
   CREATE FUNCTION
   CREATE FUNCTION UDF
   CREATE INDEX
   CREATE PROCEDURE
   CREATE SERVER
   CREATE TABLE
   CREATE TABLESPACE
   CREATE TRIGGER
   CREATE USER
   CREATE VIEW
   SHOW
   SHOW CREATE DATABASE
   SHOW CREATE EVENT
   SHOW CREATE FUNCTION
   SHOW CREATE PROCEDURE
   SHOW CREATE TABLE
   SPATIAL

MariaDB [(none)]> 
MariaDB [(none)]> 
MariaDB [(none)]> help CREATE          #查看CREATE命令的帮助信息

相关文章: