QSL必知必会:附录A样例脚本

QSL必知必会

因为我是root,阿里云又给我安装好了MySQL,所以我进入MySQL比较容易。没有那么多yak shaving,不管怎么样先混进去再说,后面会有创建用户的操作。如何登陆MySQL,我还是花了时间的。

显示数据库

   mysql>  show databases;

创建数据库应该这样:

 mysql>  create database firstSQL;
 Query OK, 1 row affected (0.00 sec)

当我试图创建数据库的时候却:

Access denied for user ''@'localhost' to database '

发现是因为mysql数据库的user表里,存在用户名为空的账户即匿名账户,导致登录的时候是虽然用的是root,但实际是匿名登录的,通过错误提示里的''@'localhost'可以看出来,办法如下:

1.关闭mysql
   # service mysqld stop
2.屏蔽权限
   # mysqld_safe --skip-grant-table
   屏幕出现: Starting demo from .....
3.新开起一个终端输入
   # mysql -u root mysql
   mysql> delete from user where USER='';
   mysql> FLUSH PRIVILEGES;//记得要这句话,否则如果关闭先前的终端,又会出现原来的错误
   mysql> \q

于是,查看数据库:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| firstSQL           |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.00 sec)

数据库创建成功了,然后我要创建示例用的表:

mysql> use firstSQL
Database changed
mysql> show tables;
Empty set (0.00 sec)

可见我的数据库里面并没有表,于是我试图按照书的附录文件创建一个表Customers:

mysql> INSERT INTO Customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email)
    -> VALUES('1000000001', 'Village Toys', '200 Maple Lane', 'Detroit', 'MI', '44444', 'USA', 'John Smith', '[email protected]');

ERROR 1146 (42S02): Table 'firstSQL.Customers' doesn't exist

往一个还不存在的表里面插入数值实不可取。应该这样创建表书的链接有下载文件,文件中有创建表的语句:

在这里面
mysql> CREATE TABLE Customers (
    -> cust_id INT NOT NULL AUTO_INCREMENT,
    -> cust_name VARCHAR(20) NOT NULL,
    -> cust_address VARCHAR(20) NOT NULL,
    -> cust_city VARCHAR(20) NOT NULL,
    -> cust_state VARCHAR(20) NOT NULL,
    -> cust_zip VARCHAR(20) NOT NULL,
    -> cust_country VARCHAR(20) NOT NULL,
    -> cust_contact VARCHAR(40) NOT NULL,
    -> cust_email VARCHAR(60) NOT NULL,
    ->PRIMARY KEY (cust_id)  --指定主键
    -> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.02 sec)

然后,我逐条insert:

mysql> INSERT INTO Customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email)
    -> VALUES('1000000001', 'Village Toys', '200 Maple Lane', 'Detroit', 'MI', '44444', 'USA', 'John Smith', '[email protected]');
Query OK, 1 row affected (0.00 sec)

就这样,我创建了第一个表,Customers

mysql> desc Customers;
+--------------+-------------+------+-----+---------+----------------+
| Field        | Type        | Null | Key | Default | Extra          |
+--------------+-------------+------+-----+---------+----------------+
| cust_id      | int(11)     | NO   | PRI | NULL    | auto_increment |
| cust_name    | varchar(20) | NO   |     | NULL    |                |
| cust_address | varchar(20) | NO   |     | NULL    |                |
| cust_city    | varchar(20) | NO   |     | NULL    |                |
| cust_state   | varchar(20) | NO   |     | NULL    |                |
| cust_zip     | varchar(20) | NO   |     | NULL    |                |
| cust_country | varchar(20) | NO   |     | NULL    |                |
| cust_contact | varchar(40) | NO   |     | NULL    |                |
| cust_email   | varchar(60) | NO   |     | NULL    |                |
+--------------+-------------+------+-----+---------+----------------+
9 rows in set (0.00 sec)

我的第一个表Customers 不是按照说明建的怕影响以后示例时报错,所以我要把它删掉,重新建;

mysql> DROP TABLE Customers ;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TABLE Customers
    -> (
    ->   cust_id      char(10)  NOT NULL ,
    ->   cust_name    char(50)  NOT NULL ,
    ->   cust_address char(50)  NULL ,
    ->   cust_city    char(50)  NULL ,
    ->   cust_state   char(5)   NULL ,
    ->   cust_zip     char(10)  NULL ,
    ->   cust_country char(50)  NULL ,
    ->   cust_contact char(50)  NULL ,
    ->   cust_email   char(255) NULL 
    -> );
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO Customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email)
    -> VALUES('1000000001', 'Village Toys', '200 Maple Lane', 'Detroit', 'MI', '44444', 'USA', 'John Smith', '[email protected]');
Query OK, 1 row affected (0.00 sec)

我想看看我建了几个表:

mysql> show tables;
+--------------------+
| Tables_in_firstSQL |
+--------------------+
| Customers          |
| OrderItems         |
| Orders             |
| Products           |
| Vendors            |
+--------------------+
5 rows in set (0.00 sec)

到这这本书的基本数据就准备好了,然后就是各种select啦。

你可能感兴趣的:(QSL必知必会:附录A样例脚本)