SQL - Lee的学习笔记5

SQL - 学习笔记5

1、数据插入 - INSERT INTO

(1) INSERT INTO 表名                             VALUES(插入值)
                             表名(插入字段名)
        插入值为完整行或部分行(允许NULL或缺省)
                完整行: INSERT INTO prod_info VALUES(1, ‘火腿肠’, ‘55g’, ‘2019/2/4’, 12, 15,5, 21)
                部分/完整行:INSERT INTO prod_info(prod_id, prod_name…) VALUES(1, ‘火腿肠’, …)

(2) 插入检索数据:将SELECT语句查询结果直接插入表中
        不影响SELECT语句中WHERE/GROUP BY/HAVING等子句的使用
        可以调整列的顺序,可以只给部分行,表结构发生变化也不影响
        字段数据类型保持一致,字段顺序保持一致。

2、数据更新 - UPDATE

(1) UPDATE 表名 SET 字段 = 值 WHERE 过滤条件
        指定更新的表,有且仅有一个
        可更新多个字段,逗号隔开
        并且需用WHERE指定更新行,否则全部更新
        赋值时,若该列允许空值,则可赋值NULL

3、数据删除 - DELETE

        DELETE FROM 表名 WHERE 过滤条件
               删除的只是表中的数据,而非删除表
        TRUNCATE TABLE 表名
               表中无内容,但表仍然存在

4、表操作 - 创建表

        CREATE TABLE 表名
        { 字段名 数据类型 属性,
        字段名 数据类型 属性
        };
        是否允许NULL, 默认允许;
        默认值DEFAULT设置,必须是常数
        表名唯一,字段名唯一
        NULL != 空串,空串是有效值

5、表操作 - 复制表

        MYSQL写法:
                CREATE TABLE 表名
                AS 目标二维表;
        任何形式的SELECT语句
        表结构由SELECT字段决定
        表记录由WHERE条件决定
        标准SQL写法:SELECT 字段 INTO 新表 FROM 目标表 (忽略)

6、表操作 - 更新表

        对表的结构进行更新,字段及其属性发生更改
        ALTER TABLE 表名 ADD 字段名 数据类型 属性
                                        DROP 字段名
                                        DROP COLUMN 字段名
                                        MODIFY COLUMN 字段名 数据类型 属性
        表更改不能撤销,建议做完整备份

7、表操作 - 删除表

        DROP TABLE 表名
        没有确认,没有撤销,永久删除
        备份!

8、重命名

        RENAME TABLE 表名1 TO 新表名1,表名2 TO 新表名2 , …
                可批量,从左往右依次执行
                可连续执行

练习

Q1:写出插入语句的两种语句结构,并分析其使用场景。
        ① INSERT INTO 表名 VALUES()
        ② INSERT INTO 表名(…, …, …) VALUES(…, …, …)
        ①仅适用于整行插入,且要求表结构固定;
        ②可用于郑航插入也可用于部分插入,插入顺序可自定义。即使表后续发生修改,只要插入字段存在,则该语句有效。

Q2:请写出更新表的语句结构(多列),以及更新操作的注意事项。
        UPDATE 表名 SET 字段 = 值 WHERE 过滤条件
        指定更新的表有且仅有一个;可更新多个字段,逗号隔开;一定要注意过滤条件的检查。

Q3:分别写出以下语句。
1、 向 milk_tea 表中插入一个完整的行:(9,测试商品 1,100g,2019-01-01,12,13,20)
        INSERT INTO milk_tea VALUES(9,测试商品 1,100g,2019-01-01,12,13,20)

2、 向 milk_tea 表中插入以下数据:prod_id = 10,pro_date = “2018-01-01”,prod_name = “测试商品 2”
        INSERT INTO milk_tea(prod_id, pro_date, prod_name) VALUES(10, “2018-01-01”,“测试商品 2”)

3、 从 milk_tea 表中找到‘棒棒糖’的行,修改 prod_id 为 11 后重新插入 milk_tea 表
        法1
        UPDATE milk_tea SET prod_id = 11 WHERE prod_name = ‘棒棒糖’

        法2
        INSERT INTO milk_tea
        SELECT 11, m.prod_name, m.net_w, m.pro_date, m.valid_month, m.in_price, m.sale_price
        FROM milk_tea m
        WHERE prod_name = ‘棒棒糖’

4、 修改 prod_id 为 11 的行数据,将 prod_name 修改为“测试商品 3”
        UPDATE milk_tea SET prod_name = "测试商品 3”WHERE prod_id = 11

5、 删除 prod_id 为 9、10、11 的行。
        DELETE FROM milk_tea WHERE prod_id IN (9, 10, 11)

Q4:请写出创建表语句的结构、常用的属性及相关注意事项。
CREATE TABLE 表名
(
字段名 数据类型 属性,
字段名 数据类型 属性
);
常用属性:是否允许空值 - NOT NULL, 缺省值设定 - DEFUALT,
注意事项:表名唯一,字段名唯一;NULL!=空串,空串是有效值。

Q5:写出为表增加字段和修改字段数据类型的语句结构。
ALTER TABLE 表名 ADD 字段名 数据类型 属性;
ALTER TABLE 表名 MODIFY COLUMN 字段名 数据类型 属性;

Q6:写出以下语句
1、 复制 milk_tea 表的prod_id/prod_name/prod_date/valid_month列至表 milk_tea2,使其的 prod_id 列为 milk_tea 表中 prod_id 值添加前缀‘T’,其余列与 milk_tea 表一模一样
CREATE TABLE milk_tea2
AS
SELECT CONCAT(‘T’, prod_id), prod_name, prod_date, valid_month
FROM milk_tea

2、 增加 net_w 列,类型为 VARCHAR(255)
ALTER TABLE milk_tea2 ADD net_w VARCHAR(255);

3、 修改 net_w 列与 milk_tea 表中的 net_w 列完全一样
法1:
UPDATE milk_tea2 m2
SET net_w = (
SELECT m.net_w
FROM milk_tea m
WHERE m2.prod_id = CONCAT(‘T’, m.prod_id)
);

法2:
UPDATE milk_tea2 m2
INNER JOIN milk_tea m
SET m2.net_w = m.net_w
WHERE m2.prod_id = CONCAT(‘T’, m.prod_id);

4、 修改 milk_tea2 表中的 pro_date 列缺省值为‘20190401’
ALTER TABLE milk_tea MODIFY COLUMN pro_date DATE DEFUALT ‘20190401’;

5、 删除 milk_tea2 表的 net_w 和 valid_month 列
ALTER TABLE milk_tea2 DROP

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值