数据库里建设好的网站为什么外网进不去网站,做外贸都得有网站吗,免费app制作平台下载,展台设计网站推荐文章目录 CHAR和VARCHAR插入单行 INSERT INTO插入多行插入分层行 LAST_INSERT_IN()创建表复制 CREAT TABLE AS更新单行 UPDATE...SET更新多行在UPDATES中使用子查询【需着重复习】删除行 DELETE恢复数据库到原始状态 CHAR和VARCHAR
CHAR(50)#xff1a;存储文本占5个字符存储文本占5个字符MySQL会再插入45个空格符填满此列。因此一般最好用VARCHAR来存储字符串或文本值。VARCHAR(50)文本占5个字符就只存储这5个字符不会浪费空间。
插入单行 INSERT INTO
INSERT INTO 表明(列名) VALUE(每列的值)DEFAULT写入默认值
-- 按照customers里的列输入所需要的内容。
INSERT INTO customers
VALUES (DEFAULT,John,Smith,1990-01-01,NULL,address,city,CA,DEFAULT)-- 指定插入customers中的哪些列插入默认值的和NULL的可以不写在这里面。
INSERT INTO customers(first_name,last_name,birth_date,address,city,state)
VALUES (John,Smith,1990-01-01,address,city,CA)插入多行
VALUES后接几个括号就是插入几行
INSERT INTO shippers(name)
VALUES (Shipper1),(wuxu),(songtuo)-- 小小练习
INSERT INTO products
-- DEFAULT是默认列id也可以不写
VALUES (DEFAULT, laote, 89, 1.34),(DEFAULT, laoda, 82, 1.33),(DEFAULT, laoer, 75, 1.32)-- 另一种写法,插入行信息中不写DEFAULT
INSERT INTO products(name, quantity_in_stock,unit_price)
VALUES (laote, 89, 1.34),( laoda, 82, 1.33),( laoer, 75, 1.32)插入分层行 LAST_INSERT_IN()
获取新加记录的idLAST_INSERT_IN()
-- 在orders里增加一条新记录新的order_id是默认增加的对应后面的LAST_INSERT_ID()
INSERT INTO orders(customer_id,order_date,status)
VALUES (1, 2019-01-02, 1);-- 在order_items里对应刚添加的order_id添加新的订单货物信息调用LAST_INSERT_ID获取新加的记录的id
INSERT INTO order_items
VALUES (LAST_INSERT_ID(), 1, 1, 2.95),(LAST_INSERT_ID(), 2, 1, 5.63);创建表复制 CREAT TABLE AS
用CREAT TABLE AS 创建的表复制复制的表中没有主键也没有被标记为自动递增的列Truncate右键表使用这个工具可以清除表中所有的数据使表变成空表向表中插入数据时可以使用选择语句SELECT FROM WHERE作为插入语句INSERT INTO的子查询进行数据的插入
-- 新增的表没有主键也没被标记为自动递增列
CREATE TABLE orders_archived_wuxu AS
SELECT * FROM orders-- 可以使用Truncate工具删除表中的所有数据
-- 在复制的已经被删除了所有数据的新表中想插入2019-01-01之前的数据可以‘使用选择语句做作为插入语句中的子查询’
INSERT INTO orders_archived_wuxu
SELECT *
FROM orders
WHERE order_date 2019-01-01-- 小小练习
CREATE TABLE invoices_archived_wuxu AS
SELECT invoice_id,number,c.name,invoice_total,payment_total,invoice_date,due_date,payment_date
FROM invoices
JOIN clients c USING (client_id)
WHERE payment_date IS NOT NULL;更新单行 UPDATE…SET
UPDATE 表名 SET 每列信息
-- 更新id为1的这列
UPDATE invoices
SET payment_total 10, payment_date 2019-03-01
WHERE invoice_id 1;-- 把id为1的这列恢复成更新之前的
UPDATE invoices
SET payment_total DEFAULT, payment_date NULL
WHERE invoice_id 1;-- 更新id为3的这列
UPDATE invoices
SET payment_total invoice_total * 0.5,payment_date due_date
WHERE invoice_id 3;更新多行
在WHERE子句中选择多行更新即可
UPDATE invoices
SET payment_total invoice_total * 0.5,payment_date due_date
-- WHERE子句中选择多行更新即可
WHERE client_id IN (3,4);-- 小小练习给在1990-01-01之前的顾客加50分
USE sql_store;
UPDATE customers
SET points points 50
WHERE birth_date 1990-01-01;在UPDATES中使用子查询【需着重复习】
-- 不采用硬编码指定值
USE sql_invoicing;
UPDATE invoices
SET payment_total invoice_total * 0.5,payment_date due_date
-- client_id不直接指定为几不采用硬编码
-- 而是通过子查询来指定client_id的值
WHERE client_id (SELECT client_idFROM clientsWHERE name Myworks)UPDATE invoices
SET payment_total invoice_total * 0.5,payment_date due_date
-- 多个查询条件是要换成IN
WHERE client_id IN(SELECT client_idFROM clientsWHERE state IN (CA, NY))-- 练习
-- 我的写法先把orders和customers表通过id匹配
UPDATE orders
JOIN customers USING (customer_id)
SET comments GoldenClient
WHERE shipped_date IS NOT NULL AND points 3000-- 筛选条件中直接写子查询这样更清楚思路更易懂。需要学习、习惯这种写法
UPDATE orders
SET comments GoldenClient
WHERE shipped_date IS NOT NULL ANDcustomer_id IN (SELECT customer_idFROM customersWHERE points 3000)删除行 DELETE
DELETE FROM
DELETE FROM invoices
WHERE client_id (SELECT client_idFROM clientsWHERE name Myworks)恢复数据库到原始状态
在IDEA中找到Project选择对应的sql文件双击后CtrlA全选后执行即可恢复数据库到原始状态。