第一章,探索数据库
启动:
`net start mysql`
` mysql -- initialize `
初始化mysql
` mysql -u root -p`
初始密码
mysql 不区分关键值的大小写,但是将关键值大写可以能够让读者辨别哪些是SQL约定的,而哪些是可变的。
先看一下mysql中都有哪些数据库
SHOW DATABASES;
其中 information_schema 数据库包含服务器的相关信息
mysql 数据库储存着用户名、密码和权限首先创建一个test数据库
CREATE DATABASE test;
在test数库中新建一个名为books 的表
CREATE TABLE test.books ( book_id INT,title TEXT, status INT );
列出test库中所有的表
SHOW TABLES FROM test;
如果一直在同一个数据库中操作,可以设定默认数据库, USE命令
USE test
这是mysql客户端的指令而非服务器的,所以通常不加分号结尾
执行完USE后,就不必再制定test:
SHOW TABLES;
查看刚建的表,用SQL语句DESCRIBE:
DESCRIBE books;
插入数据
INSERT INTO books VALUES(100, 'Heart of Darkness', 0);
INSERT INTO books VALUES(101, 'The Catcher of the Rye', 1);
INSERT INTO books VALUES(102, 'My Antonia', 0);
以上被称为结构化语言。语言各元素需要空格,数量随意,但顺序必须妥当,括号、逗号和分号一个不能少。使用结构化的语句能令查询容易识别,所以执行起来也更快。
读取表中所有的列
SELECT * FROM books;
*读取表中第一列
SELECT * FROM books WHERE status = 1;
显示status = 1 的所有行
SELECT * FROM books WHERE status = 0;
让结果不以表格形式展示,而是使每条记录都分成很多行来展示
SELECT * FROM books WHERE status = 0 \G
修改数据
UPDATE books SET status = 1 WHERE book_id = 102;
更新books, 将status的值设为1,作用于book_id等于102 的所有行
UPDATE books SET status = 0 WHERE book_id = 101;
SELECT * FROM books WHERE status = 0;
UPDATE BOOKS
SET title = 'The Catcher in the Rye', status = 1
WHERE book_id = 101;
两个表结合在一起
CREATE TABLE status_names (status_id INT, status_name CHAR(8));
INSERT INTO status_names VALUES(0, 'Inactive'), (1, 'Active');
用SELECT 语句连接两个表,并在此过程中有选择性地只让某些数据得以展示。
SELECT book_id, title, status_name
FROM books JOIN status_names
WHERE status = status_id;
book_id 和 title 在 books 表中, status_name 在 status_names 表中,指定想要的列。
明确这些列来自books 和 status_names 表中。
将books 表中的 status 列与 status_names 表中的 status_id 列匹配起来。
小结: 这节学习了如何创建并查看数据库,学习了如何创建数据库中的表,并且修改插入值。学习了如何将两个表结合。