MySQL笔记(四)DDL与DML风格参考

便于 COPY

▲ 在所有操作之前

SET character_set_database=utf8;

确保 ↓

mysql> SHOW VARIABLES LIKE "%char%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

▲ 创建数据库:

CREATE DATABASE sql_lab;

▲ 然后创建表:

1CREATE TABLE chucang ( 2 chucang_no VARCHAR(12), 3 enterprise_name VARCHAR(20), 4 chucang_time DATE, 5 chucang_type CHAR(1) COMMENT '企业性质,Y 公有,N 私有', 6 enterprise_address VARCHAR(50), 7 delivery_car_no VARCHAR(12), 8 chucang_sum DECIMAL(8,2), 9 10 PRIMARY KEY(chucang_no) 11 12) ENGINE=INNODB DEFAULT CHARSET=utf8; 13 14CREATE TABLE chucang_detail ( 15 chucang_no VARCHAR(12), 16 product_no VARCHAR(12), 17 price DECIMAL(8,2), 18 quantity INT, 19 total DECIMAL(8,2), 20 21 FOREIGN KEY (chucang_no) 22 REFERENCES chucang(chucang_no) 23 24) ENGINE=INNODB DEFAULT CHARSET=utf8;

PS. 别漏掉 DEFAULT CHARSET=utf8

▲ 确认表是否创建:

1mysql> SHOW TABLES; 2+-------------------+ 3| Tables_in_sql_lab | 4+-------------------+ 5| chucang | 6| chucang_detail | 7+-------------------+ 82 rows in set (0.01 sec)

 ▲ 插入数据:

1INSERT INTO chucang 2 (chucang_no, 3 enterprise_name, 4 chucang_time, 5 chucang_type, 6 enterprise_address, 7 delivery_car_no, 8 chucang_sum) 9VALUES 10 ('10001', 11 'enterprise_a', 12 '1997-10-11', 13 'Y', 14 '????', 15 '30005', 16 0.00), 17 ('10002', 18 'enterprise_b', 19 '1997-10-21', 20 'Y', 21 'shanghai', 22 '30001', 23 0.00), 24 ('10003', 25 'enterprise_c', 26 '1997-10-22', 27 'N', 28 'beijin', 29 '30003', 30 0.00), 31 ('10004', 32 'enterprise_d', 33 '1997-10-23', 34 'Y', 35 'shanghai', 36 '30004', 37 0.00), 38 ('10005', 39 'enterprise_e', 40 '1997-10-24', 41 'N', 42 'guangdong', 43 '30007', 44 0.00); 45 46INSERT INTO chucang_detail 47 (chucang_no, 48 product_no, 49 price, 50 quantity, 51 total) 52VALUES 53 ('10002', 54 '221', 55 30.5, 56 20, 57 0.00), 58 ('10003', 59 '222', 60 31.5, 61 22, 62 0.00), 63 ('10004', 64 '223', 65 40.5, 66 20, 67 0.00), 68 ('10001', 69 '224', 70 41.5, 71 20, 72 0.00), 73 ('10005', 74 '225', 75 43.5, 76 20, 77 0.00);

▲ 检查数据:

1SELECT * 2FROM chucang_detail 3LIMIT 3\G

 ▲ 修改表,插入一个新的字段/属性/列:

1ALTER TABLE chucang 2ADD enterprise_phone CHAR(20);

▲ 检查是否修改成功:

mysql> DESCRIBE chucang;

 ▲ 更新数据:

1UPDATE chucang_detail 2SET total = quantity * price; 3 4UPDATE chucang x, chucang_detail y 5SET x.chucang_sum = y.total 6WHERE x.chucang_no = y.chucang_no; 7-- 多表示例 ↑ ↓ 8UPDATE chucang x 9SET x.chucang_sum = ( 10 SELECT SUM(total) 11 FROM chucang_detail y 12 GROUP BY y.chucang_no 13 HAVING y.chucang_no = x.chucang_no 14)

▲ 最简单的查询:

1SELECT chucang_sum 2FROM chucang 3WHERE chucang_type = 'Y'

▲ 排序:

1SELECT chucang_no, enterprise_name 2FROM chucang 3ORDER BY chucang_no

▲ 子查询:

1SELECT chucang_no 2FROM chucang_detail 3WHERE chucang_no NOT IN ( 4 SELECT chucang_no 5 FROM chucang 6)

▲ 分组过滤 & 聚集函数:

1SELECT chucang_type, SUM(chucang_sum) 2FROM chucang 3GROUP BY chucang_type 4HAVING chucang_type = 'Y'

▲ 本题无关,联表查询示例:

1SELECT employee_no, employee_name, product_name, quantity, price 2FROM employee x 3LEFT OUTER JOIN order_master y ON x.employee_no = y.saler_no 4LEFT OUTER JOIN order_detail z ON z.order_no = y.order_no 5LEFT OUTER JOIN product m ON m.product_no = z.product_no 6WHERE ( 7 SELECT COUNT(DISTINCT product_no) 8 FROM order_master w 9 LEFT OUTER JOIN order_detail e ON w.order_no = e.order_no 10 WHERE w.saler_no = x.employee_no) >= 5 11ORDER BY employee_no
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )