数据库的存储结构是库->表结构,相关的数据存放在一个库中,库中按类分为多个表,这样的多级存放,提高了查询效率,也显得十分有逻辑。
下面分别讲讲基本的数据库建立操作。
对数据库的操作
在一个运行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教程