MYSQL基础知识和常用语法

1. 直观感受MySQL是怎么储存数据的
# 用root用户登陆进入数据库
[mysqladmin@hadoop000 ~]$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor. 
# 查看这台机器上有多少数据库,分别叫啥名字,这些数据库都放在定义的data目录下
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| ruoze              |
| test               |
+--------------------+
5 rows in set (0.01 sec)



# 选择某一个数据库进去,里面存的是表格
mysql> use performance_schema
Database changed

# 查看这个数据库有多少表格,叫什么
mysql> show tables;
+----------------------------------------------------+
| Tables_in_performance_schema                       |
+----------------------------------------------------+
| accounts                                           |
| cond_instances                                     |
| events_stages_current                              |
| users                                              |
+----------------------------------------------------+
4 rows in set (0.00 sec)

# 选择感兴趣的表,查看它的有哪些项目,叫什么,每一个项目的数据类型是什么,是否可以是空值,有无默认值等。
mysql> desc users;
+---------------------+------------+------+-----+---------+-------+
| Field               | Type       | Null | Key | Default | Extra |
+---------------------+------------+------+-----+---------+-------+
| USER                | char(16)   | YES  |     | NULL    |       |
| CURRENT_CONNECTIONS | bigint(20) | NO   |     | NULL    |       |
| TOTAL_CONNECTIONS   | bigint(20) | NO   |     | NULL    |       |
+---------------------+------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

# 查看这张表的通过什么语法创建的,引擎是什么,字符编码是什么
mysql> show create table users;
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                                       |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| users | CREATE TABLE `users` (
  `USER` char(16) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `CURRENT_CONNECTIONS` bigint(20) NOT NULL,
  `TOTAL_CONNECTIONS` bigint(20) NOT NULL
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8 |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

# 查看这张表的某一项目的内容
mysql> select USER from users;
+------+
| USER |
+------+
| root |
| NULL |
+------+
2 rows in set (0.00 sec)

# 查看这张表的所有内容。
mysql> select * from users;
+------+---------------------+-------------------+
| USER | CURRENT_CONNECTIONS | TOTAL_CONNECTIONS |
+------+---------------------+-------------------+
| root |                   3 |                 6 |
| NULL |                  18 |                29 |
+------+---------------------+-------------------+
2 rows in set (0.00 sec)

总结: 一台机器中可以有多个数据库,每一个数据库有多张表,每张表有不同的项目,不同的项目可以有不同性质(数据类型,长度,默认值,主键与否,是否支持中文等)

2. 创建一个database和表,以及表结构的操作。
#删除某个数据库
mysql> drop database ruoze;
Query OK, 0 rows affected (0.01 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

# 创建一个名为ubung的数据库
mysql> create database ubung;
Query OK, 1 row affected (0.00 sec)


# 创建一个名为ubungadm的用户以及设置密码
mysql> create user ubungadm identified by '123qwe';
Query OK, 0 rows affected (0.00 sec)

#赋予这个用户对这个数据库所有表的所有权限
mysql> grant all privileges on ubung.* to ubungadm@192.168.137.130;
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for ubungadm;
+---------------------------------------------------------------------------------------------------------+
| Grants for ubungadm@%                                                                                   |
+---------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'ubungadm'@'%' IDENTIFIED BY PASSWORD '*050376F3855A67F5E2C6514FD3130B31006C1276' |
+---------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)



# 创建一个对这个数据库所有表都最高权限的bsp用户,然后去除它创建表的权限
mysql> grant all privileges on ubung.* to bsp identified by '123';
mysql> revoke create on ubung.* from bsp;
Query OK, 0 rows affected (0.00 sec)

mysql> show grants for bsp;
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for bsp@%                                                                                                                                                                                                     |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'bsp'@'%' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257'                                                                                                                   |
| GRANT SELECT, INSERT, UPDATE, DELETE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `ubung`.* TO 'bsp'@'%' |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql> revoke create on ubung.* from bsp;
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for bsp;
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for bsp@%                                                                                                                                                                                                     |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'bsp'@'%' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257'                                                                                                                   |
| GRANT SELECT, INSERT, UPDATE, DELETE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `ubung`.* TO 'bsp'@'%' |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)



# 在ubung数据库中创建一张名为waren的表
mysql> use ubung
Database changed
mysql> create table waren(
    -> id int AUTO_INCREMENT primary key,#id,整数 自动增加,主键
    -> name varchar(100), # name, 字符,长度100byte内
    -> price float, # 小数
    -> menge int,   # 整数
    -> ctime timestamp DEFAULT CURRENT_TIMESTAMP, # 自动时间矬,默认后修改表时候不变
    -> mtime timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP # 修改表后时间改变
    -> )ENGINE=InnoDB AUTO_INCREMENT=2 DEFALUT CHARSET=utf8;# 自动增加从2开始,编码utf8



# 给表里塞内容
mysql> insert into waren(id, name, price, menge) values(1, 'ios', 10.5, 10);
Query OK, 1 row affected (0.01 sec)
mysql> insert into waren(name, price, menge) values('andriod', 8, 15); # 不加id,自动补上
Query OK, 1 row affected (0.01 sec)
mysql> insert into waren(name, price, menge) values('blackb', 13.77, 9);
Query OK, 1 row affected (0.00 sec)
mysql> select * from waren; # 查看结果
+----+---------+-------+-------+---------------------+---------------------+
| id | name    | price | menge | ctime               | mtime               |
+----+---------+-------+-------+---------------------+---------------------+
|  1 | ios     |  10.5 |    10 | 2018-06-14 00:30:24 | 2018-06-14 00:30:24 |
|  2 | andriod |     8 |    15 | 2018-06-14 00:32:14 | 2018-06-14 00:32:14 |
|  3 | blackb  | 13.77 |     9 | 2018-06-14 00:32:54 | 2018-06-14 00:32:54 |
+----+---------+-------+-------+---------------------+---------------------+
3 rows in set (0.00 sec)



# 增加一个cuser的项目列
mysql> alter table waren add column cuser varchar(50);
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> update waren set cuser='root';
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3  Changed: 3  Warnings: 0
mysql> select * from waren;
+----+---------+-------+-------+---------------------+---------------------+-------+
| id | name    | price | menge | ctime               | mtime               | cuser |
+----+---------+-------+-------+---------------------+---------------------+-------+
|  1 | ios     |  10.5 |    10 | 2018-06-14 00:30:24 | 2018-06-14 00:39:33 | root  |
|  2 | andriod |     8 |    15 | 2018-06-14 00:32:14 | 2018-06-14 00:39:33 | root  |
|  3 | blackb  | 13.77 |     9 | 2018-06-14 00:32:54 | 2018-06-14 00:39:33 | root  |
+----+---------+-------+-------+---------------------+---------------------+-------+
3 rows in set (0.00 sec)



# 在menge后增加一个orgin的项目列
mysql> alter table waren add column orgin varchar(50) after menge;
Query OK, 0 rows affected (0.15 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> update waren set orgin='CN';
Query OK, 3 rows affected (0.01 sec)
Rows matched: 3  Changed: 3  Warnings: 0


# 删除cuser这个列
mysql> alter table waren drop cuser;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> select * from waren;
+----+---------+-------+-------+-------+---------------------+---------------------+
| id | name    | price | menge | orgin | ctime               | mtime               |
+----+---------+-------+-------+-------+---------------------+---------------------+
|  1 | ios     |  10.5 |    10 | CN    | 2018-06-14 00:30:24 | 2018-06-14 00:46:47 |
|  2 | andriod |     8 |    15 | CN    | 2018-06-14 00:32:14 | 2018-06-14 00:46:47 |
|  3 | blackb  | 13.77 |     9 | CN    | 2018-06-14 00:32:54 | 2018-06-14 00:46:47 |
+----+---------+-------+-------+-------+---------------------+---------------------+
3 rows in set (0.00 sec)


# 复制waren这个表并且命名为sales
mysql> create table sales select * from waren;
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0
mysql> select * from sales;
+----+---------+-------+-------+-------+---------------------+---------------------+
| id | name    | price | menge | orgin | ctime               | mtime               |
+----+---------+-------+-------+-------+---------------------+---------------------+
|  1 | ios     |  10.5 |    10 | CN    | 2018-06-14 00:30:24 | 2018-06-14 00:46:47 |
|  2 | andriod |     8 |    15 | CN    | 2018-06-14 00:32:14 | 2018-06-14 00:46:47 |
|  3 | blackb  | 13.77 |     9 | CN    | 2018-06-14 00:32:54 | 2018-06-14 00:46:47 |
+----+---------+-------+-------+-------+---------------------+---------------------+
3 rows in set (0.00 sec)


# 将orgion这个列重命名为market
mysql> alter table sales change column orgin market varchar(20) not null;
Query OK, 3 rows affected (0.03 sec)
Records: 3  Duplicates: 0  Warnings: 0
mysql> select * from sales;
+----+---------+-------+-------+--------+---------------------+---------------------+
| id | name    | price | menge | market | ctime               | mtime               |
+----+---------+-------+-------+--------+---------------------+---------------------+
|  1 | ios     |  10.5 |    10 | CN     | 2018-06-14 00:30:24 | 2018-06-14 00:46:47 |
|  2 | andriod |     8 |    15 | CN     | 2018-06-14 00:32:14 | 2018-06-14 00:46:47 |
|  3 | blackb  | 13.77 |     9 | CN     | 2018-06-14 00:32:54 | 2018-06-14 00:46:47 |
+----+---------+-------+-------+--------+---------------------+---------------------+
3 rows in set (0.00 sec)

此外, 关于用户权限具体见下表。

权限描述
ALL PRIVILEGES影响除WITH GRANT OPTION之外的所有权限
ALTER影响ALTER TABLE命令的使用
ALTER ROUTINE影响创建存储例程的能力
CREATE影响CREATE TABLE命令的使用
CREATE ROUTINE影响更改和弃用存储例程的能力
CREATE TEMPORARY TABLES影响CREATE TEMPORARY TABLE命令的使用
CREATE USER影响创建、弃用;重命名和撤销用户权限的能力
CREATE VIEW影响CREATE VIEW命令的使用
DELETE影响DELETE命令的使用
DROP影响DROP TABLE命令的使用
EXECUTE影响用户运行存储过程的能力
EVENT影响执行事件的能力(从MySQL5.1.6开始)
FILE影响SELECT INTO OUTFILE和LOAD DATA INFILE的使用
GRANT OPTION影响用户委派权限的能力
INDEX影响CREATE INDEX和DROP INDEX命令的使用
INSERT影响INSERT命令的使用
LOCK TABLES影响LOCK TABLES命令的使用
PROCESS影响SHOW PROCESSLIST命令的使用
REFERENCES未来MySQL特性的占位符
RELOAD影响FLUSH命令集的使用
REPLICATION CLIENT影响用户查询从服务器和主服务器位置的能力
REPLICATION SLAVE复制从服务器所需的权限
SELECT影响SELECT命令的使用
SHOW DATABASES影响SHOW DATABASES命令的使用
SHOW VIEW影响SHOW CREATE VIEW命令的使用
SHUTDOWN影响SHUTDOWN命令的使用
SUPER影响管理员级命令的使用,如CHANGE、MASTER、KILL thread、mysqladmin debug、PURGE MASTER LOGS和SET GLOBAL
TRIGGER影响执行触发器的能力(从MySQL5.1.6开始)
UPDATE影响UPDATE命令的使用
USAGE只连接,不授予权限
3. 函数
  • 目的:无论增删改查,除了直接数据,我们还可以根据原数据的函数来指定操作
  • 命令
mysql> select * from sales
    -> ;
+----+---------+-------+-------+--------+---------------------+---------------------+
| id | name    | price | menge | market | ctime               | mtime               |
+----+---------+-------+-------+--------+---------------------+---------------------+
|  1 | ios     |  10.5 |    10 | CN     | 2018-06-14 00:30:24 | 2018-06-14 00:46:47 |
|  2 | andriod |     8 |    15 | CN     | 2018-06-14 00:32:14 | 2018-06-14 00:46:47 |
|  3 | blackb  | 13.77 |     9 | CN     | 2018-06-14 00:32:54 | 2018-06-14 00:46:47 |
+----+---------+-------+-------+--------+---------------------+---------------------+
3 rows in set (0.00 sec)

mysql> select sum(price) from sales;
+-------------------+
| sum(price)        |
+-------------------+
| 32.27000045776367 |
+-------------------+
1 row in set (0.00 sec)

mysql> select price*menge from sales;
+--------------------+
| price*menge        |
+--------------------+
|                105 |
|                120 |
| 123.93000411987305 |
+--------------------+
3 rows in set (0.00 sec)

mysql> select day(ctime) from sales;
+------------+
| day(ctime) |
+------------+
|         14 |
|         14 |
|         14 |
+------------+
3 rows in set (0.00 sec)

mysql> select menge from sales where price=8;
+-------+
| menge |
+-------+
|    15 |
+-------+
1 row in set (0.00 sec)

mysql> select menge from sales where price <> 8;
+-------+
| menge |
+-------+
|    10 |
|     9 |
+-------+
2 rows in set (0.00 sec)

mysql> select name, substring(name, 1, 3), substring(name,2) from sales;
+---------+-----------------------+-------------------+
| name    | substring(name, 1, 3) | substring(name,2) |
+---------+-----------------------+-------------------+
| ios     | ios                   | os                |
| andriod | and                   | ndriod            |
| blackb  | bla                   | lackb             |
+---------+-----------------------+-------------------+
3 rows in set (0.00 sec)

mysql> select concat(name,'-',price,'-',menge) as combin from sales;
+----------------+
| combin         |
+----------------+
| ios-10.5-10    |
| andriod-8-15   |
| blackb-13.77-9 |
+----------------+
3 rows in set (0.00 sec)

下表为常用函数

数学函数
ABS(x)返回x的绝对值
SQRT(x)返回x的非负2次方根
MOD(x,y)返回x被y除后的余数
CEILING(x)返回不小于x的最小整数
FLOOR(x)返回不大于x的最大整数
ROUND(x,y)对x进行四舍五入操作
TRUNCATE(x,y)舍去x中小数点y位后面的数
SING(x)返回x的符号
字符串函数
LENGTH(str)返回字符串str的长度
CONCAT(s1,s2,……)返回一个或者多个字符串连接
TRIM(str)删除字符串两侧的空格
REPLACE(str,s1,s2)使用字符串s2
SUBSTRING(str,n,len)返回字符串str的子串
REVERSE(str)返回字符串反转后的结果
LOCATE(s1,str)返回子串s1在字符串str中的起始位置
日期和时间函数
CURDATE()——获取系统当前日期
CURTIME()——获取系统当前时间
SYSDATE()——获取当前系统日期和时间
TIME_TO_SEC()——返回将时间转换成秒的结果
ADDDATE()——执行日期的加运算
SBUDATE()——执行日期的减运算
DATE_FORMAT()——格式化输入日期和时间值
条件判断函数
IF(expr,v1,v2)——如果expr表达式为true返回v1
IFNULL(v1,v2)——如果v1不为NULL返回v1
CASE expr WHEN v1 THEN r1[WHEN v2 THEN r2……][ELSE m] END——如果expr值等于v1
加密函数
MD(str)——对字符串str进行MD5加密
ENCODE(str,pwd_str)——使用pwd作为密码加密字符串str
DECODE(str,pwd_str)——使用pwd作为密码解码字符串str
4. 表内容的增删改查
# 增
mysql> insert into waren(name, price, menge, orgin) values('sb', 6, 3, 'sw');
Query OK, 1 row affected (0.01 sec)

mysql> select * from waren;
+----+---------+-------+-------+-------+---------------------+---------------------+
| id | name    | price | menge | orgin | ctime               | mtime               |
+----+---------+-------+-------+-------+---------------------+---------------------+
|  1 | ios     |  10.5 |    10 | CN    | 2018-06-14 00:30:24 | 2018-06-14 00:46:47 |
|  2 | andriod |     8 |    15 | CN    | 2018-06-14 00:32:14 | 2018-06-14 00:46:47 |
|  3 | blackb  | 13.77 |     9 | CN    | 2018-06-14 00:32:54 | 2018-06-14 00:46:47 |
|  4 | sb      |     6 |     3 | sw    | 2018-06-14 02:22:56 | 2018-06-14 02:22:56 |
+----+---------+-------+-------+-------+---------------------+---------------------+
4 rows in set (0.00 sec)
# 删
mysql> delete from sales where id=3
    -> ;
Query OK, 1 row affected (0.00 sec)

mysql> select * from sales;
+----+---------+-------+-------+--------+---------------------+---------------------+
| id | name    | price | menge | market | ctime               | mtime               |
+----+---------+-------+-------+--------+---------------------+---------------------+
|  1 | ios     |  10.5 |    10 | CN     | 2018-06-14 00:30:24 | 2018-06-14 00:46:47 |
|  2 | andriod |     8 |    15 | CN     | 2018-06-14 00:32:14 | 2018-06-14 00:46:47 |
+----+---------+-------+-------+--------+---------------------+---------------------+
2 rows in set (0.00 sec)

# 查
mysql> select orgin, sum(price*menge) as cost from waren  group by orgin order by cost desc; # group后才会计算sum(),降序desc
+-------+--------------------+
| orgin | cost               |
+-------+--------------------+
| CN    | 348.93000411987305 |
| sw    |                 18 |
+-------+--------------------+
2 rows in set (0.00 sec)

mysql> select orgin, sum(price*menge) as cost from waren  group by orgin order by cost limit 1; # 正常是升序排列。
+-------+------+
| orgin | cost |
+-------+------+
| sw    |   18 |
+-------+------+
1 row in set (0.00 sec)

mysql> select orgin, sum(price*menge) as cost from waren where id <> 2 group by orgin having cost > 100; # having的东西要在select里还有,只是是select东西的函数。
+-------+--------------------+
| orgin | cost               |
+-------+--------------------+
| CN    | 228.93000411987305 |
+-------+--------------------+
1 row in set (0.00 sec)

##### 交并和集
## 数据
mysql> insert into sales(id, name, price, menge, market) values(7, 'mtk', 5, 7, 'CN')
    -> ;
Query OK, 1 row affected (0.01 sec)

mysql> select * from sales;
+----+---------+-------+-------+--------+---------------------+---------------------+
| id | name    | price | menge | market | ctime               | mtime               |
+----+---------+-------+-------+--------+---------------------+---------------------+
|  1 | ios     |  10.5 |    10 | CN     | 2018-06-14 00:30:24 | 2018-06-14 00:46:47 |
|  2 | andriod |     8 |    15 | CN     | 2018-06-14 00:32:14 | 2018-06-14 00:46:47 |
|  7 | mtk     |     5 |     7 | CN     | 2018-06-14 03:25:02 | 2018-06-14 03:25:02 |
+----+---------+-------+-------+--------+---------------------+---------------------+
3 rows in set (0.00 sec)

mysql> select * from waren;
+----+---------+-------+-------+-------+---------------------+---------------------+
| id | name    | price | menge | orgin | ctime               | mtime               |
+----+---------+-------+-------+-------+---------------------+---------------------+
|  1 | ios     |  10.5 |    10 | CN    | 2018-06-14 00:30:24 | 2018-06-14 00:46:47 |
|  2 | andriod |     8 |    15 | CN    | 2018-06-14 00:32:14 | 2018-06-14 00:46:47 |
|  3 | blackb  | 13.77 |     9 | CN    | 2018-06-14 00:32:54 | 2018-06-14 00:46:47 |
|  4 | sb      |     6 |     3 | sw    | 2018-06-14 02:22:56 | 2018-06-14 02:22:56 |
+----+---------+-------+-------+-------+---------------------+---------------------+
4 rows in set (0.00 sec)

mysql> select a.id, a.name, b.market, b.id from waren a left join sales b on a.id=b.id; # 左jion,以左表的id为准,查有的东西,没有则为空
+----+---------+--------+------+
| id | name    | market | id   |
+----+---------+--------+------+
|  1 | ios     | CN     |    1 |
|  2 | andriod | CN     |    2 |
|  3 | blackb  | NULL   | NULL |
|  4 | sb      | NULL   | NULL |
+----+---------+--------+------+
4 rows in set (0.00 sec)

mysql> select a.id, a.name, b.market, b.id from waren a right join sales b on a.id=b.id;  # 右jion,以右id为准,没得为NULL。
+------+---------+--------+----+
| id   | name    | market | id |
+------+---------+--------+----+
|    1 | ios     | CN     |  1 |
|    2 | andriod | CN     |  2 |
| NULL | NULL    | CN     |  7 |
+------+---------+--------+----+
3 rows in set (0.00 sec)

mysql> select a.id, a.name, b.market, b.id from sales b right join waren a on a.id=b.id;    ### a得左join等于 b得右join
+----+---------+--------+------+
| id | name    | market | id   |
+----+---------+--------+------+
|  1 | ios     | CN     |    1 |
|  2 | andriod | CN     |    2 |
|  3 | blackb  | NULL   | NULL |
|  4 | sb      | NULL   | NULL |
+----+---------+--------+------+
4 rows in set (0.00 sec)

mysql> select a.id, a.name, b.market, b.id from sales b left join waren a on a.id=b.id;   # a得左join等于 b得右join
+------+---------+--------+----+
| id   | name    | market | id |
+------+---------+--------+----+
|    1 | ios     | CN     |  1 |
|    2 | andriod | CN     |  2 |
| NULL | NULL    | CN     |  7 |
+------+---------+--------+----+
3 rows in set (0.00 sec)

mysql> select a.id, a.name, b.market, b.id from sales b inner join waren a on a.id=b.id;   # 合集 inner join
+----+---------+--------+----+
| id | name    | market | id |
+----+---------+--------+----+
|  1 | ios     | CN     |  1 |
|  2 | andriod | CN     |  2 |
+----+---------+--------+----+
2 rows in set (0.00 sec)


#### 并集复杂做法(假设数据复杂,或则条件复杂,此次实为简单)
mysql> select sales.name  from waren right join sales on waren.id = sales.id;
+---------+
| name    |
+---------+
| ios     |
| andriod |
| mtk     |
+---------+
3 rows in set (0.00 sec)

mysql> select waren.name  from waren left join sales on waren.id = sales.id;
+---------+
| name    |
+---------+
| ios     |
| andriod |
| blackb  |
| sb      |
+---------+
4 rows in set (0.00 sec)

mysql> select waren.name  from waren left join sales on waren.id = sales.id
    -> union
    -> select sales.name  from waren right join sales on waren.id = sales.id;
+---------+
| name    |
+---------+
| ios     |
| andriod |
| blackb  |
| sb      |
| mtk     |
+---------+
5 rows in set (0.00 sec)

#### 并集在简单的情况下
mysql> select name from waren
    -> union
    -> select name from sales;
+---------+
| name    |
+---------+
| ios     |
| andriod |
| blackb  |
| sb      |
| mtk     |
+---------+
5 rows in set (0.00 sec)

# 改
mysql> update waren set price = 15 where orgin <> 'CN';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from waren;
+----+---------+-------+-------+-------+---------------------+---------------------+
| id | name    | price | menge | orgin | ctime               | mtime               |
+----+---------+-------+-------+-------+---------------------+---------------------+
|  1 | ios     |  10.5 |    10 | CN    | 2018-06-14 00:30:24 | 2018-06-14 00:46:47 |
|  2 | andriod |     8 |    15 | CN    | 2018-06-14 00:32:14 | 2018-06-14 00:46:47 |
|  3 | blackb  | 13.77 |     9 | CN    | 2018-06-14 00:32:54 | 2018-06-14 00:46:47 |
|  4 | sb      |    15 |     3 | sw    | 2018-06-14 02:22:56 | 2018-06-14 04:08:45 |
+----+---------+-------+-------+-------+---------------------+---------------------+
4 rows in set (0.00 sec)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值