Dbeaver安装
创建数据库
create database shop
导入sql并执行
直接复制粘贴
要用“执行sql脚本”执行
sql语句分类
DDL:数据定义语言。创建或删除存储数据用的数据库以及数据表。
创建,删除,修改:
create
drop
alter
DML:数据操纵语言。查询或变更表记录。
select 查
insert 增
update 改
delete 删
DCL:数据控制语言。确认或取消变更;权限设定。
commit 确认变更
rollback 取消变更
grant 赋予权限
revoke 取消权限
书写规则
- ;
- 语言不区分大小写,但是写入的数据区分。
- win不区分表名、字段名大小写,linux/max严格区分
- 常数由单引号
- (?什么意思)SQL 语句的单词之间需使用半角空格或换行符来进行分隔,且不能使用全角空格作为单词的分隔符,否则会发生错误,出现无法预期的结果。
表创建
CREATE DATABASE < 数据库名称 > ;
CREATE TABLE < 表名 >
( < 列名 1> < 数据类型 > < 该列所需约束 > ,
< 列名 2> < 数据类型 > < 该列所需约束 > ,
< 列名 3> < 数据类型 > < 该列所需约束 > ,
< 列名 4> < 数据类型 > < 该列所需约束 > ,
.
.
.
< 该表的约束 1> , < 该表的约束 2> ,……);
数据类型
INTEGER
VARCHAR
DATE
约束
NOT NULL
PRIMARY KEY
表删除
DROP TABLE < 表名 > ;
无法恢复
表修改
ALTER TABLE < 表名 > ADD COLUMN < 列的定义 >;
ALTER TABLE < 表名 > DROP COLUMN < 列名 >;
-- 一定注意添加 WHERE 条件,否则将会删除所有的数据
DELETE FROM product WHERE COLUMN_NAME='XXX';
TRUNCATE TABLE TABLE_NAME; # 清空
UPDATE <表名>
SET <列名> = <表达式> [, <列名2>=<表达式2>...]
WHERE <条件> -- 可选,非常重要
ORDER BY 子句 --可选
LIMIT 子句; --可选
使用 update 时要注意添加 where 条件,否则将会将所有的行按照语句修改
INSERT INTO <表名> (列1, 列2, 列3, ……) VALUES (值1, 值2, 值3, ……);
-- 对表进行全列 INSERT 时,可以省略表名后的列清单。这时 VALUES子句的值会默认按照从左到右的顺序赋给每一列。
-- 多行INSERT ( DB2、SQL、SQL Server、 PostgreSQL 和 MySQL多行插入)
INSERT INTO productins VALUES ('0002', '打孔器', '办公用品', 500, 320, '2009-09-11'),
('0003', '运动T恤', '衣服', 4000, 2800, NULL),
('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20');
-- 将商品表中的数据复制到商品复制表中
INSERT INTO productcopy (product_id, product_name, product_type, sale_price, purchase_price, regist_date)
SELECT product_id, product_name, product_type, sale_price, purchase_price, regist_date
FROM Product;
索引
高效的
-- 方法1
CREATE INDEX indexName ON table_name (column_name)
-- 方法2
ALTER table tableName ADD INDEX indexName(columnName)
练习
- 编写一条 CREATE TABLE 语句,用来创建一个包含表 1-A 中所列各项的表 Addressbook (地址簿),并为 regist_no (注册编号)列设置主键约束
-
一个大括号包住了所有,包括主键
-
忘记写分号。
-
忘记写 ‘table’、
create table addressbook ( regist_no int not null, name varchar(128) not null, address varchar(256) not null, tel_no char(10), mail_address char(20), primary key (regist_no));
- 假设在创建练习1.1中的 Addressbook 表时忘记添加如下一列 postal_code (邮政编码)了,请编写 SQL 把此列添加到 Addressbook 表中。
alter table addressbook
add column postal_code char(8) not null;
- 请补充如下 SQL 语句来删除 Addressbook 表。
( ) table Addressbook;
-- drop
-
是否可以编写 SQL 语句来恢复删除掉的 Addressbook 表?
不可以。