在学习MySQL的时候,我选择的是mysql命令行实用程序,因为它对于快速测试和执行脚本非常有价值,并且便于传播与存储。
我们首先输入命令来连接到MySQL,连接的时候需要输入我们安装时候设置的root密码。在这里使用了root用户登录到mysql服务器,我们也可以使用其他mysql用户登录。
mysql -u root -p
数据库
创建数据库
CREATE DATABASE libraryinfo;
CREATE DATABASE library;
CREATE DATABASE info;
libraryinfo、library、info是数据库的名字。
我们可以输入语句来看存储的所有数据库:
SHOW DATABASES;
删除数据库
DROP DATABASE library;
DROP DATABASE info;
DATABASE后面的是数据库名。
我们再用之前的SHOW命令显示数据库信息,可以看到library和info数据库被删除了。
选择数据库
USE libraryinfo;
创建和操纵表
创建表
CREATE TABLE book_info
(
ISBN char(30) NOT NULL,
book_name char(50) NOT NULL,
author char(20) NOT NULL,
publisher char(20) NOT NULL,
pub_date date NOT NULL,
book_price double NOT NULL,
book_id int(4) NOT NULL AUTO_INCREMENT,
book_status boolean NOT NULL,
PRIMARY KEY (book_id)
);
1.AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
2.PRIMARY KEY关键字用于定义列为主键,可以使用多列来定义主键,列间以逗号分隔。
更新表
ALTER TABLE book_info
ADD book_type CHAR(20);
这条语句给book_info表增加一个名为book_type的列,需要注意的是我们必须明确其数据类型。
删除刚刚的列,可以这样做。
ALTER TABLE book_info
DROP COLUMN book_type;
删除表
DROP TABLE book_info2;
这条语句删除book_info2表
重命名表
RENAME TABLE book_info2 TO book_info1;
将表book_info2的名字改为book_info1
null值
NULL值就是没有值或缺值,允许NULL的列允许在插入行时不给出该列的值,不允许NULL值的列不接受该列没有值的行。
主键再介绍
主键值必须唯一,如果使用单个列,它的值必须唯一,如果使用多个列,这些列的组合值必须唯一。
在用单个列作为主键的时候,可以用下面的语句定义:
PRIMARY KEY ()
管理用户
我们在学习的过程中可以使用root进行登录,但是在日常工作的时候,不要使用root,而是应该创建一系列的账号,供不同的对象使用。
用户账号和信息存储在名为mysql的数据库中,在需要获取用户账号列表的时候,我们可以直接访问它。代码如下:
USE mysql;
SELECT user FROM user;
mysql数据库有一个名为user的表,user表有一个名为user的列,它用于存储用户登录名。
创建用户账号
CREATE USER beryl IDENTIFIED BY "123456";
这里的beryl是新创建用户名,123456是对应的口令。
我们再次列出用户账号的时候,可以在输出中看到新账号。
我们也可以重新命名用户账号。
RENAME USER beryl TO reberyl;
删除用户账号
DROP USER reberyl;
设置访问权限
我们可以输入下面语句查看用户账号的权限。
SHOW GRANTS FOR beryl;
这里的结果表示没有任何权限。
我们可以使用GRANT语句设置权限(grant是准许的意思)。GRANT要求至少给出以下信息:
1.要授予的权限
2.被授予访问权限的数据库或者表
3.用户名
更改口令
ALTER USER 'beryl'@'%' IDENTIFIED BY 'MyNewPass@123';
MySQL8.0版本更改口令的方式好像和之前的不太一样。
写在后面的小建议:
- SQL语句不区分大小写,但是许多SQL开发人员喜欢对所有的SQL关键字使用大写,对所有的列和表名使用小写,这样做使代码更易于阅读和调试
- 使用mysql命令行,必须加上分号来结束SQL语句。
本篇博文参考来源:
菜鸟教程
一个简单数据库设计例子
《MySQL必知必会》Ben Forta 著