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)