SQL 基础学习

由 B_Z_B_Y 发布

SQL 基础学习

备注 :SQL语句,对大小写不敏感。
但是,编译的时候,操作系统会将所有字符转换成大写的,再进行编译。
如果大写,在编译的时候,可以节省转化的时间。当SQL语句大量的时候,就显得很重要了。
在大型的ERP系统开发的时候,往往会这么要求。

1. 构建一个DATABASE

#以下命令均在cmd(管理员)运行
CREATE DATABASE SHOP #构建一个数据库shop
\q # 表示退出
x:\xxx\xx\bin\psql.exe -U postgres -d shop # 运行shop数据库

2. 标准SQL 命令

  • DDL (Data Definition Language , 数据定义语言 )
CREATE #创建数据库和表等对象
DROP #删除数据库和表等对象
ALTER #修改数据库和表等对象的结构
  • DML (Data Manipulation Language , 数据操纵语言 )
SELECT #查询表中的数据
INSERT #向表中插入数据
UPDATE #更新表中的数据
DELETE #删除表中的数据
  • DCL (Data Control Language , 数据控制语言 )
COMMIT #确认对数据库中的数据进行的变更
ROLLBACK #取消对数据库中的数据进行的变更
GRANT #赋予用户操作权限
REMOVE #取消用户的操作权限
SQL语句中字符串使用''表示 分隔单词使用半角空格或者换行(如果因为这玩意出了BUG,不说什么就一句:QAQ)

3. 表的创建

\d <tableName> # 查看表内容 若只写\d 表是查看数据库中的表信息
CREATE TABLE <表名>
(<列名1> <数据类型> <该列所需约束>,
<列名2> <数据类型> <该列所需约束>,
    -
    -
    -

<该表所需约束>, <该表所需约束2>, 。。。。);
CREATE TABLE Products
(product_id CHAR(4) NOT NULL,  #NOT NULL 不能输入空白的约束
product_name VARCHAR(100) NOT NULL,
product_type VARCHAR(32) NOT NULL,
sale_price INTEGER  ,
purchar_price INTEGER  ,
regist_date DATE  ,
PRIMARY KEY (product_id));  #主键约束 可通过它读取特点商品数据

4.表的删除和更新

DROP TABLE <表名>;
# add a column
ALTER TABLE <tableName> ADD COLUMN <列的定义>;
ALTER TABLE products ADD COLUMN product_name_pingyin VARCHAR(100);

#delete column 
ALTER TABLE <tableName> DROP COLUMN <colName>
ALTER TABLE products DROP COLUMN product_name_pingyin;

#插入数据
BEGIN TRANSACTION;
INSERT INTO products VALUES ('0001','YHB','Clothes',1000,500,'2020-11-17');
INSERT INTO products VALUES ('0002','ZY','Clothes',1000,500,'2020-11-17');
INSERT INTO products VALUES ('0003','T-shirt','Clothes',1000,500,'2009-09-20');
INSERT INTO products VALUES ('0004','T-shirt','Clothes',1000,500,'2009-09-20');
INSERT INTO products VALUES ('0005','T-shirt','Clothes',1000,500,'2009-09-20');
COMMIT;

#修改表名
ALTER TABLE products RENAME TO product;

# 查询 query the columns of the table
SELECT <colname1>,<colname2>
FROM products;
#单引号 -》 字符串& 日期常数
SELECT *
FROM <tableName>

# 为列设置别名

SELECT product_id AS id,
       product_name AS "姓名", 
       purchase_price As price
    FROM products;

# 从结果中删除重复行
SELECT DISTINCT product_type
    FROM products;
    #distinct 只能用于第一个列名之前

# 根据where 选择记录
SELECT <colname>,<>
    FROM <TABLENAME>
    WHERE <IFNAME>;
-- 这是注释 使用-- 或者多行 /* */
SELECT *
FROM pr
WHERE 商品名称 LIKE '%果'
    OR 商品名称 LIKE '_莓'
ORDER BY 单价


-- % 表示多个字符 _ 表示一个字符

5.运算(符)

AVG --函数
SELECT AVG(单价)
    FROM pr;

COUNT(*) --求行数
COUNT(colname) -- 求取非空值行数
COUNT(DISTINCT 列名) --求取排除非空及重复行的行数
SUM(calname)
MAX(calname)
MIN(calname)

--分组计算
FROM pr
GROUP BY 地域;

SELECT sale_price ,
    sale_price * 2 + sale_price / 9  AS " cal-Price"
    FROM pr;
-- 所有包含 值类型为 NULL 的 运算 结果均为 NULL 
-- 9 / null = null       9 * null = null

-- 比较运算符 > <  <>  =   >=  <=
-- 字符串比较按照字典序 "2" > "1000"

-- 不能对null 使用 比较运算符
-- 选取不为NULL的记录 : 
WHERE id IS NOT NULL  
WHERE id IS NULL  
WHERE NOT id >= 1000 -- == id < 1000
-- AND OR
-- AND 优先 OR  ()

暂无评论


发表评论