MySQL 初识

数据库的存储结构是库->表结构,相关的数据存放在一个库中,库中按类分为多个表,这样的多级存放,提高了查询效率,也显得十分有逻辑。

下面分别讲讲基本的数据库建立操作。

对数据库的操作

在一个运行MySQL的服务器上,可以创建多个数据库。要列出所有数据库,使用命令:

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
| school             |
+--------------------+

其中,information_schema、mysql、performance_schema和sys是系统库,不要去改动它们。其他的test、school是用户创建的数据库。

创建新数据库:CREATE DATABASE <tabelname>;
eg: mysql> CREATE DATABASE test;
    Query OK, 1 row affected (0.01 sec)

删除数据库:DROP DATABASE <tablename>;
eg: mysql> DROP DATABASE test;
    Query OK, 0 rows affected (0.01 sec)

对一个数据库进行操作时,要首先将其切换为当前数据库:USE <tablename>; 
eg: mysql> USE test; 
    Database changed

对表的操作

基本的操作:

SHOW TABLES;              #列出当前数据库的所有表
DROP TABLE <tablename>;   #删除表
CREAT TABLE <tablename>;  #创建表
#修改表名的两种方式:
RENAME TABLE <tablename> TO <newname>;
ALTER TABLE <tablename> RENAME TO <newname>;

这里需要展开讲的是创建表操作,如果使用上面的语句创建一个表,得到的是空表,连有什么列,列的数据类型也没有定义,表的结构取决于往其中插入的第一条数据。通常,为了更加明确,我们在创建表时就应该定义好表的属性,有什么列,列的类型,是否有默认值,哪些列是主键、索引,使用什么引擎等。因此推荐写比较详细的创建语句。

CREATE TABLE <tablename> (list1name type, list1name type…);    #指定列名和类型

create语句中加入若干关键字,可以对列的特性进行约束。
a.设置主键
CREATE TABLE <tablename> (list1name type primary key auto_increment, list1name type…);
在要设置为主键的列的类型后面加上primary key关键词,由Mysql 一些概念所述主键有四种,这里是自增型主键auto_increment.
b.是否可以为NULL
默认允许为NULL,若不允许该列为NULL,可以在列的类型后加入关键词not null.
c.设置默认值
所有的字段都可以设置默认值,如果不设置,默认的默认值为NULL。设置方法为在列的类型后加入关键词default 'shit'.
d.指定编码格式
若需指定表的编码格式,可在最后(括号后)加入指定的格式。如希望默认编码格式为utf8,末尾插入default charset = utf8.
e.指定引擎
若需指定特定的引擎,在末尾加上指定引擎。如指定为MyISAM,应加上ENGINE=MyISAM.

查看表的结构

#查看表的结构 两种方法
SHOW COLUMNS FROM <tablename>; 
DESC <tablename>; eg:DESC students; +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | id | bigint | NO | PRI | NULL | auto_increment | | class_id | bigint | NO | | NULL | | | name | varchar(100) | NO | | NULL | | | gender | varchar(1) | NO | | NULL | | | score | int | NO | | NULL | | +----------+--------------+------+-----+---------+----------------+

对列的操作

若需要对创建好的表进行修改,如修改列名,插入、删除列,设置主键、索引等,则需要用到关键字ALTER;

删除列:
ALTER TABLE <tablename> DROP <listname>;
新增列:
ALTER TABLE <tablename> ADD <listname> <type> <otherInfo>; #默认增加到末尾
ALTER TABLE <tablename> ADD <listname> <type> <otherInfo> FIRST; #新增为第一列
ALTER TABLE <tablename> ADD <listname> <type> <otherInfo> AFTER <listK>; #新增到名为listK的列之后
修改列:
ALTER TABLE <tablename> MODIFY <listname> <newtype> <newInfo>; #修改列的类型、其他信息
ALTER TABLE <tablename> CHANGE <oldlistname> <newname> <type> <otherInfo>; #当需要修改列名时用change
change也可以实现既修改列名,也修改其他属性。

后面的文章都以两个表students表和classes表作示例,展示MySQL的其他语法。

 参考:廖雪峰的SQL教程

原文地址:https://www.cnblogs.com/cpcpp/p/13019865.html