MariaDB

1.3 MariaDB 服务端命令(DDL)

 

1、数据类型

表由行和列组成;

创建表时需要定义表中的字段;
定义字段时需要确定其数据类型;
确定数据类型的目的:数据存储格式、能参与运算的种类、可表示的有效的数据范围;

字符型数据与字符集有关;
码表:在字符和二进制数字之间建立映射关系;

2、数据类型的种类:字符型、数值型、日期时间型;

1>字符型
——————–
定长字符型:
   CHAR(#):不区分字符大小写;
   BINARY(#):区分字符大小写;
变长字符型:
  VARCHAR(#)
  VARBINARY(#)
对象存储:
  TEXT:不区分字符大小写;
  BLOB:区分字符大小写;

TINYTEXT,SMALLTEXT,MEDIUMTEXT,TEXT,LONGTEXT;
TINYBLOB,SMALLBLOB,MEDIUMBLOB,BLOB,LONGBLOB;

内置类型:
 SET
 ENUM

2>数值型
———————
精确数值型:
  INT:(TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT)
  DECIMAL
近似数值型:
  FLOAT
  DOBULE

3>日期时间型
———————
 日期型:DATE
 时间型:TIME
 日期时间型:DATETIME
 时间戳:TIMESTAMP
 年份:YEAR(2),YEAR(4)

3、字段数据修饰符(可以多个组合使用);

 UNSIGNED:无符号;
 NOT NULL:非空;
 NULL:可以为空;
 AUTO_INCREMENT:自动增长;
 DEFAULT value:默认值;

 PRIMARY KEY:主键;
 UNIQUE KEY:唯一键;

4、MariaDB 服务端命令:

DDL:Data Defined Language,数据定义语言;
主要用于管理数据库组件:数据库、表、索引、视图、用户、存储过程等;
操作指令有,CREATE,ALTER,DROP,…;
DML:Data Manipulation Language,数据操作语言;
主要用于管理表中的数据,实现数据的增、删、改、查;
操作指令有,INSERT,DELETE,UPDATE,SELECT,…;

4.1 数据库管理

1>数据库创建

语法格式
==============

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name;

  [DEFAULT] CHARACTER SET[=] charse_name
  [DEFAULT] COLLATE[=] collation_name


  查看支持的所有字符集:show character set;
  查看支持的所有排序规则:show collation;

举例:

MariaDB [(none)]> CREATE DATABASE a CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS a CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 0 rows affected, 1 warning (0.00 sec)

MariaDB [(none)]> create database b
    -> default character set utf8
    -> default collate utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

2>修改数据库属性

语法格式
================

ALTER {DATABASE | SCHEMA}  [db_name];

	[DEFAULT] CHARACTER SET[=] charse_name
	[DEFAULT] COLLATE[=] collation_name

3>删除数据库

语法格式
===============
DROP  {DATABASE | SCHEMA}  [IF NOT EXISTS]  db_name;

4>查看数据库的指定属性

语法格式
=================
SHOW  {DATABASES | SCHEMAS}
       [LIKE   ‘pattern’ | WHERE  expr]

4.2、表管理

1>创建表

语法格式
=================

CREATE  [TEMPORARY]  TABLE  [IF  NOT  EXISTS]  tbl_name
(create_definition,…)
[table_options]
[partition_options]

(字段名称   type   null   key   default   extra)

键(key)写法:
PRIMARY   KEY(col1,col2,…)
UNIQUE   KEY(col1,col2,…)
FOREIGEN    KEY(col1,col2,…)

索引写法:
KEY | INDEX  [index_name]  (col1,col2,…)

table_options写法:
ENGINE[=]engine_name
[DEFAULT]  CHARACTER SET[=]  charse_name
[DEFAULT]  COLLATE[=]  collation_name

举例:

MariaDB [b]> CREATE TABLE b (id INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE KEY,name VARCHAR(60) NOT NULL);
Query OK, 0 rows affected (0.10 sec)

MariaDB [b]> create table tbl3 (id smallint unsigned not null auto_increment,name varchar(50) not null,unique key(id));
Query OK, 0 rows affected (0.01 sec)

MariaDB [b]> 
MariaDB [b]> create table tbl4 (id smallint unsigned not null auto_increment,name varchar(50) not null,primary key(id));
Query OK, 0 rows affected (0.01 sec)

MariaDB [b]> create table tbl5 (id smallint unsigned not null auto_increment,name varchar(50) not null,primary key(id,name));
Query OK, 0 rows affected (0.01 sec)

MariaDB [b]> create table tbl11 (id smallint unsigned not null auto_increment,name varchar(100) not null,primary key(id,name)) engine myisam;

MariaDB [b]> create table tbl10 (id int unsigned not null auto_increment primary key,name varchar(111) not null,index(name));
Query OK, 0 rows affected (1.70 sec)


注意:'unsigned'修饰符必须位于字段类型'smallint'的后面!!!!

查看表有哪些字段,及字段属性
——————————–
MariaDB [b]> DESC  tbl_name;

查看数据库支持的所有存储引擎类型
———————————
MariaDB [b]> show  engines;

查看所有表的状态信息(表名、engine类型、版本、字符集、排序规则、…):
——————————————————————
MariaDB [mysql]> show  table  status;
MariaDB [mysql]> show  table  status\G;

查看指定表的状态信息:
—————————————
MariaDB [b]> show  table  status  like  ‘tbl7’;
MariaDB [b]> show  table  status  like  ‘tbl7’\G;

指定表字段名字,查看表信息:
———————————
MariaDB [b]> show  table  status  where  engine  like  ‘innodb’;

2>修改表属性

语法格式
=================
ALTER  [ONLINE  |  OFFLINE]  [IGNORE]  TABLE  tbl_name
               [alter_specification [, alter_specification] …]
               [partition_options]

alter_specification:
—————————–
添加字段
         ADD  [COLUMN]  col_name  column_definition  [FIRST  |  AFTER  col_name ]
删除字段
         DROP  [COLUMN]  col_name
修改字段
        CHANGE  [COLUMN]  old_col_name  new_col_name  column_definition  [FIRST | AFTER  col_name]
        MODIFY  [COLUMN]  col_name  column_definition  [FIRST  |  AFTER  col_name]

备注:’change’可以修改字段的名字;’modify’不能修改字段的名字;

添加键
       ADD {PRIMARY|UNIQUE|FOREIGN} KEY [index_type] (index_col_name,…) [index_option]  …
删除主键
      DROP PRIMARY KEY
删除外键
     DROP FOREIGN KEY fk_symbol

添加索引
     ADD {INDEX|KEY}  [index_name]  [index_type]  (index_col_name, …)  [index_option]  …
删除索引
     DROP  {INDEX|KEY}  index_name

备注:添加索引时可指定索引的名字,如果不指定,则延用需要创建索引的字段的名称;

表选项(更改表的存储引擎)
ENGINE[=]engine_name

查看表上的索引信息:
———————————
MariaDB [b]> show  indexes  from  tbl_name;

举例:

# 查看表字段;

MariaDB [b]> desc   tbl7;

+-------+----------------------+------+-----+---------+----------------+
| Field | Type                 | Null | Key | Default | Extra          |
+-------+----------------------+------+-----+---------+----------------+
| id    | smallint(5) unsigned | NO   | PRI | NULL    | auto_increment |
| name  | varchar(100)         | NO   | PRI | NULL    |                |
+-------+----------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

# 在指定表中添加字段;

MariaDB [b]> alter table tbl7 add gongfu varchar(15) not null;
MariaDB [b]> alter table tbl7 add jianghu varchar(10)  not null after name;


MariaDB [b]> alter table tbl7 add gender enum('F','M') not null after name;
Query OK, 0 rows affected (0.23 sec)
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [b]> desc tbl7;
+---------+----------------------+------+-----+---------+----------------+
| Field   | Type                 | Null | Key | Default | Extra          |
+---------+----------------------+------+-----+---------+----------------+
| id      | smallint(5) unsigned | NO   | PRI | NULL    | auto_increment |
| name    | varchar(100)         | NO   | PRI | NULL    |                |
| gender  | enum('F','M')        | NO   |     | NULL    |                |
| jianghu | varchar(10)          | NO   |     | NULL    |                |
| gongfu  | varchar(15)          | NO   |     | NULL    |                |
+---------+----------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

# 更改表中指定字段的名称;

MariaDB [b]> alter table tbl7 change id wulingid smallint(7) unsigned not null auto_increment;
Query OK, 0 rows affected (0.10 sec)
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [b]> desc tbl7;
+----------+----------------------+------+-----+---------+----------------+
| Field    | Type                 | Null | Key | Default | Extra          |
+----------+----------------------+------+-----+---------+----------------+
| wulingid | smallint(7) unsigned | NO   | PRI | NULL    | auto_increment |
| name     | varchar(100)         | NO   | PRI | NULL    |                |
| gender   | enum('F','M')        | NO   |     | NULL    |                |
| jianghu  | varchar(10)          | NO   |     | NULL    |                |
| gongfu   | varchar(15)          | NO   |     | NULL    |                |
+----------+----------------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)

# 在表中指定字段添加索引;

MariaDB [b]> alter table tbl7 add index (name);
Query OK, 0 rows affected (0.11 sec)
Records: 0  Duplicates: 0  Warnings: 0

# 查看表中的索引;

MariaDB [b]> show indexes from tbl7\G;
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| tbl7  |          0 | PRIMARY  |            1 | wulingid    | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
| tbl7  |          0 | PRIMARY  |            2 | name        | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
| tbl7  |          1 | name     |            1 | name        | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
3 rows in set (0.01 sec)

3>删除表

语法格式
================
DROP  TABLE  [IF EXISTS]  tbl_name  [, tbl_name]  …

举例:

MariaDB [b]> show tables;
+-------------+
| Tables_in_b |
+-------------+
| b           |
| tbl11       |
| tbl2        |
| tbl3        |
| tbl4        |
| tbl5        |
| tbl7        |
+-------------+
7 rows in set (0.00 sec)

MariaDB [b]> drop table b;
Query OK, 0 rows affected (0.35 sec)

MariaDB [b]> show tables;
+-------------+
| Tables_in_b |
+-------------+
| tbl11       |
| tbl2        |
| tbl3        |
| tbl4        |
| tbl5        |
| tbl7        |
+-------------+
6 rows in set (0.00 sec)

备注,表的引用方式:tbl_name,db_name.tbl_name;
—————————————————

备注,表的另外2种创建方式:
——————————
复制表结构
MariaDB [b]> create  table tbl_user  like  mysql.user;

复制表数据
MariaDB [b]> create  table  tbl_user2 (Host  char(60)  not  null, User  char(80)  not  null, Password  char(41)  not  null, primary  key (Host,User))  select host,user,password  from  mysql.user;
Query  OK, 8  rows  affected (1.76  sec)
Records:  8  Duplicates:  0  Warnings: 0

4>索引管理

索引的创建可以在创建表时指定,或者在修改表属性时添加或删除,也可以做如下单独管理;

创建索引,语法格式
======================
CREATE  [UNIQUE | FULLTEXT | SPATIAL]  INDEX  index_name  {BTREE  |  HASH}  ON  tbl_name  (index_col_name,…)

删除索引,语法格式
======================
DROP  [ONLINE | OFFLINE]  INDEX index_name  ON  tbl_name

*************************************

查看当前数据库使用的默认字符集:
—————————————–
MariaDB [(none)]>  show  variables  like  ‘character_set%’;

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

查看当前数据库使用的默认字符集的默认排序规则:
—————————————————-
MariaDB [(none)]>  show  variables  like  ‘collation%’;

+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | utf8_general_ci   |
| collation_database   | latin1_swedish_ci |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)

 

Leave a Reply

Your email address will not be published. Required fields are marked *