创建数据库
创建数据库:首先用mysql连接服务器,以root的身份创建数据库 CREATE DATABASE database1;
任何时候都应该避免直接登录root去操作数据库。
创建数据库之后,并不意味着已经把它选定为当前的默认数据库了。你需要用 USE database1
把它设置为当前默认数据库。选定数据库的另一种方法是在上一篇中提到的在启动mysql的命令行上给出数据库的名字:
$ mysql -u example -p database1
创建数据表
创建数据表,可以用CREATE TABLE语句来完成,这条语句的格式如下:
CREATE TABLE tbl_name (column_specs);
其中,tbl_name 是表名,column_specs则是该数据库里的各个数据列以及各种索引的定义。索引能够加快信息的检索速度。
CREATE TABLE customers
(
stu_id int UNSIGNED NOT NULL AUTO_INCREMENT,
stu_name char(50) NOT NULL ,
stu_address char(50) NULL ,
stu_city char(50) NULL ,
stu_contact char(50) NULL ,
stu_email char(255) NULL ,
stu_gradate date NOT NULL,
PRIMARY KEY (stu_id)
) ENGINE=InnoDB;
上面就是一个创建数据表的CREATE TABLE语句,执行这条语句的方法有好几种。可以手动输入,也可以写入create1.sql脚本中通过shell输入重导向。
$ mysql -u example -p database1 < create1.sql
执行上面的命令时,需要切换到create1.sql下去执行,否则应该给出create1.sql的绝对路径。
在Linux中执行这条语句时,
mysql -u example -p
可以另起一个别名以此来简化输入。
当然你也可以,在连接数据库之后source create1.sql
的方式执行脚本,同样可以完成创建数据库的操作。(source 后面要跟create1.sql的绝对路径)
在上面的数据表中,大部分数据列的类型都是可变长度的字符串。只有两个数据列例外,用来保存学号的stu_id
和毕业期限的stu_gradate
而数据列stu_id的值必须是唯一的。这也是为什么我们用stu_id 来作为上表的主键,而AUTO_INCREMENT当我们没有给出stu_id 列的值时,会自动生成下一个编号并赋值给这个数据列。数据表class的定义包含如下几个部分:
- INT 表示这个数据列将用来保存整数值
- UNSIGNED 不允许出现负数
- NOT NULL 必须填有数据,不得为空
- AUTO_INCREMENT 主键自增属性
- PRIMRY KEY (stu_id) 将数据列stu_id 设为数据表主键
- ENGINE=InnoDB 为数据表的设置InnoDB引擎(支持事物处理)
当创建完数据表后,可以用 DESCRIBE class ;
命令,查看class表相关的结构信息。 也可以用 DESC class ;
查看,DESC是DESCRIBE的简写。
DESCRIBE class;
DESC class;
EXPLAIN class;
SHOW COLUMNS FROM class;
SHOW FIELDS FROM class;
上面这几条语句实际上都是一样,显示class数据表的信息。
SHOW 还有其它更多的用法,例如:
SHOW COLUMNS FORM class LIKE '%id' ;
可以将输出内容限制为特定的数据列。
SHOW TABLES;
SHOW DATABASES;
SHOW WARNINGS;
上面都是SHOW的用法,第一条SHOW语句表示列出数据库中都有哪些数据表;第二条SHOW语句表示列出当前连接的服务器上的数据库;最后一条用于在sql语句提示warnings时,查看wanrnings信息。