概述
SQL
,Structured Query Language,被设计用于关系型数据库管理系统(RDBMS
,relational database management systems)的一种语言。
P.S.:译自SQL for Beginners
1
基本操作
DATABASE
CREATE DATABASE
创建一个数据库
|
|
SHOW DATABASES
获取所有的数据库列表
|
|
DROP DATABASE
删除一个存在的数据库,在输入此命令后会直接删除,不会提示
|
|
USE
选择一个数据库,不需要在查询语句后加上;
|
|
Database Table
数据库表可以存放结构化数据,也可对数据进行增加、读取、更新和删除操作
CREATE TABLE
创建数据库表,可以使用多行和缩进来完成创建
|
|
- PRIMARY KEY:用于区分表里的每一行数据
AUTO_INCREMENT:每次添加新行时自动增加一个新的ID数
12345CREATE TABLE users {user_id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(20),create_date DATE};SHOW TABLES:显示当前数据库里的所有表
1SHOW TABLES;EXPLAIN:查看一个存在的数据库表的结构
1EXPLAIN users;DROP TABLE:删除一个数据库表,没有任何提示
1DROP TABLE users;ALTER TABLE:修改一个数据库表的结构
Add a column:添加一列
123ALTER TABLE usersADD email VARCHAR(100)AFTER username;Remove a column:移除一列,没有任何提示
1ALTER TABLE users DROP email;Modify a column:修改一列,即修改该列的属性
123ALTER TABLE usersCHANGE usernameuser_name VARCHAR(30);
INSERT
添加一些数据到数据库表里
VALUES:存放属性值的列表,使用
,
隔开;注意主键值为NULL
的情况,该值可以自动生成,因为该列设置为AUTO_INCREMENT
123456INSERT INTO users VALUES (NULL,‘johndoe’,‘john@doe.com’,‘2009-12-14’);Alternate Syntax:使用
SET
关键字代替VALUES
;注意一列可以被忽略,并且每列必须通过列名被引用1234INSERT INTO users SETuser_name = ‘nettuts’,email = ‘nettuts@gmail.com’,create_date = ‘2009-12-15’Alternate Syntax 2:每一列通过列名被引用,可以指定任意的顺序
12INSERT INTO users (email, user_name, created_date)VALUES (‘foo@bar.com’, ‘foobar’, ‘2009-12-16’);LAST_INSERT_ID():获取当前会话里被插入最后一行的
ID
值1SELECT LAST_INSERT_ID();NOW():返回当前的日期
1234INSERT INTO users SETcreate_date = NOW(),user_name = ‘batman’,email = ‘bat@man.com’;
SELECT
从一个数据库表里读取数据
Asterisk(*):从数据库表里获取所有列的数据
1SELECT * FROM users;WHERE:筛选出符合条件的某些行数据,如
=
、>=
、<=
等条件1SELECT email FROM users WHERE user_name = ‘nettuts’;AND and OR:组合筛选的条件
12SELECT * FROM users WHEREuser_id = 1 OR user_name = ‘nettuts’;IN():用于匹配多个值
12SELECT * FROM users WHEREcreate_date IN (‘2009-12-15’, ‘2009-12-16’);LIKE:通配符(
%
标记)查找12SELECT * FROM users WHEREemail LIKE ‘%tuts%’;ORDER BY:获取指定顺序的结果,如增序(
ASC
)、降序(DESC
)等12SELECT * FROM usersORDER BY create_date;LIMIT … OFFSET …:限制返回结果的数目,如
LIMIT 2
表示获取前两条结果,LIMIT 1 OFFSET 2
表示在前两条结果后获取一条结果,LIMIT2, 1
表示在前一条结果后获取两条结果1SELECT * FROM users LIMIT 2;1SELECT * FROM users LIMIT 1 OFFSET 2;1SELECT * FROM users LIMIT 2, 1;
UPDATE
更新数据库表里的数据,可以结合WHERE
和LIMIT
语句
|
|
|
|
DELETE
结合WHERE
语句来删除数据库表里的数据
|
|
通常使用TRUNCATE更有效,可以重置AUTO_INCREMENT
数,即一个新行的ID
值为1,而DELETE
会继续计数
|
|
转移字符和特殊单词
转义字符串
某些字符需要被转义,可以使用\
来实现
特殊单词
因MySQL有很多如SELECT
或UPDATE
等特殊单词,可以通过`
来避免冲突