MySQL 创建数据库
CREATE DATABASE 数据库名;
例如:
mysql> CREATE DATABASE stu;
Query OK, 1 row affected (0.01 sec)
MySQL 删除数据库
drop database 数据库名;
例如:
mysql> DROP DATABASE stu;
Query OK, 0 rows affected (0.02 sec)
MySQL 选择数据库
USE 数据库名;
例如:
mysql> USE test;
Database changed
MySQL 数据类型
MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。
数值类型
日期和时间类型
字符串类型
MySQL 创建数据表
创建MySQL数据表需要以下信息:表名、表字段名、定义每个表字段
CREATE TABLE 表名 (列名 列的类型);
例如:
mysql> CREATE TABLE test1(
-> id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
-> title VARCHAR(100) NOT NULL,
-> author VARCHAR(20) NOT NULL,
-> sub_date DATE);
Query OK, 0 rows affected (0.03 sec)
注意:MySQL命令终止符为分号 ;
注意: -> 是换行符标识,不要复制
- 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
- AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
- PRIMARY KEY关键字用于定义列为主键。
MySQL 删除数据表
DROP TABLE 表名;
例如:
mysql> DROP TABLE test1;
Query OK, 0 rows affected (0.05 sec)
MySQL 插入数据
INSERT 表名 ( 列1, 列2,...列N )VALUES ( 值1,值2,...值N );
例如:
mysql> INSERT test1(
-> title,author,sub_date)
-> VALUES
-> ("Java","Jom",NOW());
Query OK, 1 row affected, 1 warning (0.00 sec)
注意: 使用箭头标记 -> 不是 SQL 语句的一部分,它仅仅表示一个新行,如果一条SQL语句太长,我们可以通过回车键来创建一个新行来编写 SQL 语句,SQL 语句的命令结束符为分号 ;
读取数据表
SELECT * FROM 表名;
例如:
mysql> SELECT * FROM test1;
+----+-------+--------+------------+
| id | title | author | sub_date |
+----+-------+--------+------------+
| 1 | Java | Jom | 2019-03-27 |
+----+-------+--------+------------+
1 row in set (0.00 sec)
使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
MySQL WHERE 语句
SELECT 列1,列2,..列N FROM 表1, 表2...
[WHERE 条件1 [AND [OR]] 条件2.....
例如:
mysql> SELECT * FROM test1 WHERE author ='Jom';
+----+-------+--------+------------+
| id | title | author | sub_date |
+----+-------+--------+------------+
| 1 | Java | Jom | 2019-03-27 |
+----+-------+--------+------------+
1 row in set (0.01 sec)
- 查询语句中你可以使用一个或者多个表,表之间使用逗号, 分割,并使用WHERE语句来设定查询条件
- 你可以在 WHERE 子句中指定任何条件。
- 你可以使用 AND 或者 OR 指定一个或多个条件。
- WHERE 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令。
- WHERE 子句类似于程序语言中的 if 条件,根据 MySQL 表中的字段值来读取指定的数据。
以下为操作符列表,可用于 WHERE 子句中。
下表中实例假定 A 为 10, B 为 20
BINARY 关键字
MySQL 的 WHERE 子句的字符串比较是不区分大小写的。 你可以使用 BINARY 关键字来设定 WHERE 子句的字符串比较是区分大小写的。
例如:
mysql> SELECT * FROM test1 WHERE BINARY title='java';
Empty set (0.01 sec)
mysql> SELECT * FROM test1 WHERE BINARY title='Java';
+----+-------+--------+------------+
| id | title | author | sub_date |
+----+-------+--------+------------+
| 1 | Java | Jom | 2019-03-27 |
+----+-------+--------+------------+
1 row in set (0.00 sec)
MySQL UPDATE 查询
如果我们需要修改或更新 MySQL 中的数据,我们可以使用 SQL UPDATE 命令来操作
UPDATE 表名 SET 列1=new-value1, 列2=new-value2 [WHERE 条件]
例如:
mysql> UPDATE test1 SET title='C++' WHERE id=3;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
查看test1表:发现id为3的title从MySQL改为iOS
mysql> SELECT * FROM test1;
+----+-------+--------+------------+
| id | title | author | sub_date |
+----+-------+--------+------------+
| 1 | Java | Jom | 2019-03-27 |
| 2 | PHP | Tom | 2019-03-27 |
| 3 | C++ | LiSa | 2019-03-27 |
| 4 | iOS | Lili | 2019-03-27 |
+----+-------+--------+------------+
4 rows in set (0.00 sec)
MySQL DELETE 语句
可以使用 SQL 的 DELETE FROM 命令来删除 MySQL 数据表中的记录
DELETE FROM 表名 [WHERE 条件]
例如:
mysql> DELETE FROM test1 WHERE id=3;
Query OK, 1 row affected (0.01 sec)
查询一下发现id为3的记录被删除了
mysql> SELECT * FROM test1;
+----+-------+--------+------------+
| id | title | author | sub_date |
+----+-------+--------+------------+
| 1 | Java | Jom | 2019-03-27 |
| 2 | PHP | Tom | 2019-03-27 |
| 4 | iOS | Lili | 2019-03-27 |
+----+-------+--------+------------+
3 rows in set (0.00 sec)
- 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
- 你可以在 WHERE 子句中指定任何条件
- 您可以在单个表中一次性删除记录。
MySQL LIKE 子句
SELECT 列1,列2,...列N FROM 表名 WHERE 列1 LIKE 条件1 [AND [OR]] filed2 = 'somevalue'
例如:
mysql> SELECT * FROM test1 WHERE author LIKE "%m";
+----+-------+--------+------------+
| id | title | author | sub_date |
+----+-------+--------+------------+
| 1 | Java | Jom | 2019-03-27 |
| 2 | PHP | Tom | 2019-03-27 |
+----+-------+--------+------------+
2 rows in set (0.00 sec)
- 你可以在 WHERE 子句中指定任何条件。
- 你可以在 WHERE 子句中使用LIKE子句。
- 你可以使用LIKE子句代替等号 =。
- LIKE 通常与 % 一同使用,类似于一个元字符的搜索。
- 你可以使用 AND 或者 OR 指定一个或多个条件。
- 你可以在 DELETE 或 UPDATE 命令中使用 WHERE…LIKE 子句来指定条件。
MySQL UNION 操作符
MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。
语法
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
参数
expression1, expression2, ... expression_n: 要检索的列。
tables: 要检索的数据表。
WHERE conditions: 可选, 检索条件。
DISTINCT: 可选,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响。
ALL: 可选,返回所有结果集,包含重复数据。
例子:
"Websites" 表的数据:
mysql> SELECT * FROM Websites;
+----+---------------+---------------------------+-------+---------+
| id | name | url | alexa | country |
+----+---------------+---------------------------+-------+---------+
| 1 | Google | https://www.google.cm/ | 1 | USA |
| 2 | 淘宝 | https://www.google | 13 | CN |
| 3 | 菜鸟教程 | http://www.runoob.com/ | 4689 | CN |
| 4 | 微博 | http://weibo.com/ | 20 | CN |
| 5 | Facebook | https://www.facebook.com/ | 3 | USA |
| 6 | stackoverflow | http://stackoverflow.com/ | 0 | IND |
+----+---------------+---------------------------+-------+---------+
6 rows in set (0.00 sec)
"apps" APP 的数据:
mysql> SELECT * FROM apps;
+----+------------+-------------------------+---------+
| id | name | url | country |
+----+------------+-------------------------+---------+
| 1 | QQ APP | http://im.qq.com/ | CN |
| 2 | WebBO APP | http://weibo.com/ | CN |
| 3 | TaoBao APP | http://www,taobao.com/ | CN |
+----+------------+-------------------------+---------+
3 rows in set (0.00 sec)
从 "Websites" 和 "apps" 表中选取所有不同的country(只有不同的值):
mysql> SELECT country FROM Websites
-> UNION
-> SELECT country FROM apps
-> ORDER BY country;
+---------+
| country |
+---------+
| CN |
| IND |
| USA |
+---------+
3 rows in set (0.00 sec)
注释:UNION 不能用于列出两个表中所有的country。如果一些网站和APP来自同一个国家,每个国家只会列出一次。UNION 只会选取不同的值。请使用 UNION ALL 来选取重复的值!
UNION ALL 的例子:
mysql> SELECT country FROM Websites UNION ALL SELECT country FROM apps ORDER BY country;
+---------+
| country |
+---------+
| CN |
| CN |
| CN |
| CN |
| CN |
| CN |
| IND |
| USA |
| USA |
+---------+
9 rows in set (0.00 sec)
带有 WHERE 的 SQL UNION AL
使用 UNION ALL 从 “Websites” 和 “apps” 表中选取所有的中国(CN)的数据(也有重复的值):
mysql> SELECT country,name FROM Websites WHERE country='CN'
-> UNION ALL
-> SELECT country,name FROM apps WHERE country='CN'
-> ORDER BY country;
+---------+--------------+
| country | name |
+---------+--------------+
| CN | 淘宝 |
| CN | 菜鸟教程 |
| CN | 微博 |
| CN | QQ APP |
| CN | WebBO APP |
| CN | TaoBao APP |
+---------+--------------+
6 rows in set (0.00 sec)
MySQL 排序
ORDER BY 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果
SELECT 列1, 列2,...列N FROM 表1, 表2...ORDER BY 列1, 列2...] [ASC [DESC]]
例子:
mysql> SELECT * FROM test1 WHERE author LIKE '%m' ORDER BY sub_date DESC;
+----+-------+--------+------------+
| id | title | author | sub_date |
+----+-------+--------+------------+
| 1 | Java | Jom | 2019-03-27 |
| 2 | PHP | Tom | 2019-03-27 |
+----+-------+--------+------------+
2 rows in set (0.00 sec)
- 你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。
- 你可以设定多个字段来排序。
- 你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
- 你可以添加 WHERE…LIKE 子句来设置条件