追加一份数据库的基本使用详细版

本文详细介绍了MySQL的使用方法,包括服务的启动与停止、登录与退出,以及如何进行数据库和表的增删改查等操作。此外,还讲解了数据记录的添加、删除、修改和查询方法。

建议:代码都使用大写,不要死记,理解,查笔记

一, 小黑窗口的SQL的使用

1、MySQL的DDL(操作数据库和表,增删改查,使用)
2、MySQL的DML(操作表记录,增删改)
3、MySQL的DQL(操作表记录,查)
4、MySQL启动服务的操作
    A.手动启动
        a.计算机 -> 管理 -> 服务和应用程序 -> 服务
        b.任务管理器 -> 服务
    B.普通CMD小黑窗口
        a.指令: servers.msc   "微软ms控制c"
    C.管理员CMD小黑窗口
        a.开启服务  net start mysql
        b.关闭服务  net stop  mysql
5、MySQL的登录和退出的操作
    A.登录      a.登录自己的   mysql -u root -p 密码
        b.登录别人的(别人在安装的时候,勾选远程访问)
            方式1: mysql -h 127.0.0.1 -u root -p 密码
            方式2: mysql --host=127.0.0.1 --user=root --password==密码
    B.退出        a. exit  
                 b. quit

二, MySQL的DDL(操作数据库和表,增删改查,使用)

I.数据库的操作:【增,删,改,查,使用】

1、创建数据库的操作
        A.基本创建操作
            CREATE DATABASE 数据库名称;                                       --->    create databases 数据库名称;
        B.综合创建操作(判断是否存在,指定字符集"不会出现中文乱码问题")
            CREATE DATABASE IF NOT EXISTS 数据库名称  CHARACTER SET 具体的编码;--->   create database if not exists  数据库名称 character set 具体编码
2、查询数据库的操作
        A.显示所有的数据库
            SHOW DATABASES;                               --->   show databases;
        B.显示数据库的创建语句(隐含的作用:查看数据库的字符集)
            SHOW CREATE DATABASE 数据库名称;               --->      show create database  数据库名称;
3、修改数据库的操作
        A.修改数据库的字符集
            ALTER DATABASE 数据库名称 CHARACTER SET 具体的编码; --->       alter database 数据库名称  character set 具体的编码;
4、删除数据库的操作
        A.基本的删除操作
            DROP DATABASE 数据库名称;           --->      drop database 数据库名称;
        B.判断是否存在,存在则删除的操作
            DROP DATABASE IF EXISTS 数据库名称; --->     drop database  exists 数据库名称;
5、使用数据库的操作
        A.使用数据库
            USE 数据库名称;       --->    use  数据库名称;
        B.查询正在使用当中的数据库
            SELECT DATABASE();   --->       select database();

II.表的操作【增,删,改,查】

1、查询表的操作
        A.查询数据库当中所有的表信息
            SHOW TABLES;                   --->   show tables;
        B.查询某个具体表的结构(每个字段的信息)
            DESC 表名称;                   --->     desc  表名称;
2、创建表的操作
        A.基本的创建格式
            CREATE TABLE 表名称 (列名1 类型1,列名2 类型2,列名3 类型3);--->   create table 表名称(列名1 类型1,......);
        B.复制表的操作
            CREATE TABLE 新表名称 LIKE 原始表;                      --->    create table 新表名称 like 原始表;
        C.常用的数据类型
            a.整数类型 int
            b.小数类型 double(4,1)   4表示有4个数字,1表示精确小数点后1位
            c.字符串类型 varchar(24) 24表示最大容纳24个字符
            d.日期类型 date         需要手动的插入数据到数据库当中
            e.时间戳类型 timestamp   可以自动添加当前的系统时间
3、删除表的操作
        A.基本的删除操作
            DROP TABLE 表名称;            --->      drop table 表名称;
        B.判断是否存在,存在则删除的操作
            DROP TABLE IF EXISTS 表名称;  --->  drop table exists 表名称;
4、修改表的操作
        A.修改表名称
            ALTER TABLE 原始表名称 RENAME TO 新的表名;
        B.修改表的字符集
            ALTER TABLE 表名称 CHARACTER SET  字符集编码;
        C.修改列名
            ALTER TABLE 表名称 CHANGE 旧列名称  新列名称  新列数据类型;
            ALTER TABLE 表名称 MODIFY 要修改的列名 新的数据类型;
        D.增加一列
            ALTER TABLE 表名称 ADD 列名称 数据类型;
        E.删除一列
            ALTER TABLE 表名称 DROP 列名称;

三, MySQL的DML(操作表记录,增删改)

1、表记录的添加语句
    A.添加指定列的数据
        INSERT INTO 表名称 (列名1,列名2,列名3) VALUES (值1,值2,值3);--->insert into  表名称 (列名1,列名2,列名3)values(值1,值2,值3);
    B.添加所有列的数据
        INSERT INTO 表名称  VALUES (值1,值2,值3,值4,值5);          --->insert into  表名称  values (值1,值2,值3,值4,值5);  
    C.注意事项
        除了数字类型(整数和小数)以外,其他的都要采用引号(单引号双引号都可以)引起来
2、表记录的删除语句
    A.删除指定的某些条记录
        DELETE FROM 表名称 [WHERE 条件];          --->delete from 表名称 [where 条件]; 
    B.删除整个表的操作 
        a. DELETE FROM 表名称;     
        -- 删除整个表(逐行删除) 效率低              --->delete from 表名称;  
        b. TRUNCATE TABLE 表名称;  
        -- 删除整个表(先删表,再建表) 效率高[推荐使用]--->truncate table 表名称;
3、表记录的修改语句
    A.常见修改语句的操作(带有条件)
        UPDATE 表名称 SET 列名1=值1,列名2=值2 [WHERE 条件]; --->updata 表名称 set 列名1=值1,列名2=值2 [where 条件]; 
    B.不常见的修改语句操作(修改所有的情况)
        UPDATE 表名称 SET 列名1=值1,列名2=值2;             --->updata 表名称 set 列名1=值1,列名2=值2;  

四, MySQL的DQL(操作表记录,查)

1、基础查询
    A.多个字段的查询操作
        a.通用写法
            SELECT * FROM 表名称;                 --->select * from 表名称;   
        b.指定列写法
            SELECT 列名1,列名2,列名3  FROM 表名称; --->select 列名1,列名2,列名3  from 表名称;
    B.去掉重复的查询操作
            SELECT DISTINCT 列名 FROM 表名称;   --->select  distinct 列名 from 表名称;
    C.四则运算计算列的操作
            SELECT IFNULL (列名1,0) + 列名2  FROM 表名称;  --->select   ifnull (列名1,0) + 列名2  from 表名称;  
    D.给查询结果起别名的操作
             SELECT 列名1 AS 别名1,列名2 别名2 FROM 表名称; --->select  列名1 as 别名1,列名2 别名2 from表名称;
2、条件查询 WHERE 后面的格式写法
    A.与 && (理解)
        a.写法1:  SELECT * FROM 表名称 WHERE age>20 && age<30;       --->select * from表名称 where age>20 && age<30;
        b.写法2:  SELECT * FROM 表名称 WHERE age>20 AND age<30;      --->select  * from 表名称 where age>20 AND age<30; 
        c.写法3:  SELECT * FROM 表名称 WHERE age BETWEEN 20 AND 30;  --->select  * from  表名称where age between 20 AND 30; 
    B.或 || (理解) 
        a.写法1:  SELECT * FROM 表名称 WHERE age=20 || age=30;                       --->select * from 表名称 where age=20 || age=30;   
        b.写法2:  SELECT * FROM 表名称 WHERE age=20 OR age=30;                       ---> select * from 表名称where age=20 OR age=30; 
        c.写法3:  SELECT * FROM 表名称 WHERE age IN(20,30);   -- 年龄是20或者30的才可以--->select * from 表名称 where age in(20,30); 
    C.非 !  (理解)
        a.写法1:  SELECT * FROM 表名称 WHERE address IS NULL;  -- 居住地是Null       --->select * from 表名称 where address is null;   
        b.写法2:  SELECT * FROM 表名称 WHERE address IS NOT NULL;  -- 居住地不是Null --->select * from 表名称 where address is not null;  
3、模糊查询 WHERE LIKE
    A.两个占位符
        a. '_' 下划线,表示1个字符
        b. '%' 百分号,表示0个或多个字符
    B.案例
        a. 查询姓'武'
            SELECT * FROM hero WHERE name LIKE '武%';     --->select*from hero where name like'武%';
        b. 查询姓'武'只有两个字
            SELECT * FROM hero WHERE name LIKE '武_';       --->select*from hero where name like '武_';
        c. 查询第二个字是'文'的
            SELECT * FROM hero WHERE name LIKE '_文%';    --->select*from hero where name like '_文%';
        d. 查询只要带有'李'字的
            SELECT * FROM hero WHERE name LIKE '%李%';   --->select*from hero where name like'%李%'; 
Greenplum(GP)数据库是基于 PostgreSQL 的大规模并行处理(MPP)数据库,广泛用于数据仓库和大数据分析场景。以下是 Greenplum 数据库中常用的 SQL 脚本模板,涵盖建表、分区、分布策略、索引、权限管理、数据加载与查询优化等常见操作。 --- ### 1. 创建标准表(带分布键和存储格式) ```sql -- 创建事实表:使用哈希分布 + 压缩列存(AOCS) CREATE TABLE fact_sales ( sale_id BIGINT, product_id INTEGER, store_id INTEGER, sale_date DATE, amount NUMERIC(10,2), quantity INTEGER ) WITH ( APPENDONLY = TRUE, -- 启用追加优化表(AOCO) ORIENTATION = COLUMN, -- 列存 COMPRESSTYPE = ZLIB, -- 压缩类型 COMPRESSLEVEL = 5 -- 压缩级别 ) DISTRIBUTED BY (sale_id) -- 分布键:确保数据均匀分布 PARTITION BY RANGE (sale_date) ( -- 按日期分区 START ('2023-01-01'::DATE) INCLUSIVE END ('2024-01-01'::DATE) EXCLUSIVE EVERY (INTERVAL '1 month') ); ``` > **说明**: > - `APPENDONLY=TRUE` 和 `ORIENTATION=COLUMN` 表示使用 AOCS(Append-Optimized Column Store),适合大量扫描的分析型查询。 > - `DISTRIBUTED BY` 是 Greenplum 实现 MPP 并行的关键,选择高基数、常用于 JOIN 的列为佳。 > - `PARTITION BY RANGE` 支持按时间自动切分子表,提升查询性能和维护效率。 --- ### 2. 创建维度表(复制表) ```sql -- 小表使用 DISTRIBUTED REPLICATED,保证各节点都有副本,减少跨节点通信 CREATE TABLE dim_product ( product_id INTEGER PRIMARY KEY, product_name VARCHAR(255), category VARCHAR(100), price NUMERIC(10,2) ) DISTRIBUTED REPLICATED; ``` > **说明**: > - 维度表通常较小,使用 `DISTRIBUTED REPLICATED` 可避免 JOIN 时的数据重分布(redistribute motion),显著提升性能。 --- ### 3. 添加分区 ```sql -- 手动添加一个新分区 ALTER TABLE fact_sales ADD PARTITION FOR VALUES FROM ('2024-01-01') TO ('2024-02-01'); -- 或者为未来日期添加默认分区(防止插入错误) ALTER TABLE fact_sales ADD DEFAULT PARTITION other; ``` > **注意**:一旦添加了 `DEFAULT PARTITION`,所有不匹配现有范围的数据将进入该分区,便于容错。 --- ### 4. 删除旧分区(归档或清理) ```sql -- 删除某个分区(物理删除) ALTER TABLE fact_sales DROP PARTITION FOR (RANGE('2023-01-01', '2023-02-01')); -- 或通过名称删除 ALTER TABLE fact_sales DROP PARTITION sales_y2023m01; ``` > 推荐定期归档历史分区以控制表大小。 --- ### 5. 创建索引(谨慎使用,Greenplum 中全表扫描更常见) ```sql -- 在维度表上创建 B-tree 索引 CREATE INDEX idx_dim_product_category ON dim_product(category); -- 支持位图索引(适用于低基数列) CREATE INDEX idx_fact_sales_store ON fact_sales USING bitmap(store_id); ``` > **提示**:Greenplum 中索引主要用于约束或点查,大多数分析查询依赖顺序扫描 + 分区裁剪。 --- ### 6. 授权与用户管理 ```sql -- 创建角色/用户 CREATE ROLE analyst WITH LOGIN PASSWORD 'secure_password'; -- 授予模式访问权限 GRANT USAGE ON SCHEMA public TO analyst; -- 授予表读取权限 GRANT SELECT ON ALL TABLES IN SCHEMA public TO analyst; -- 设置默认权限(对后续新建表也生效) ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO analyst; ``` --- ### 7. 数据导入(外部表方式) ```sql -- 创建可读外部表(从 CSV 文件加载) CREATE READABLE EXTERNAL TABLE ext_sales ( like fact_sales ) LOCATION ('file://gpdb-host1/data/sales.csv', 'file://gpdb-host2/data/sales.csv') FORMAT 'CSV' (HEADER DELIMITER ','); -- 使用 INSERT INTO ... SELECT 加载数据 INSERT INTO fact_sales SELECT * FROM ext_sales; ``` > 外部表支持 `gpfdist`、`s3`、`hdfs` 等协议,适合批量加载。 --- ### 8. 查看执行计划与统计信息 ```sql -- 查看查询执行计划 EXPLAIN ANALYZE SELECT sum(amount) FROM fact_sales WHERE sale_date >= '2023-06-01'; -- 更新统计信息(建议在大批量写入后运行) ANALYZE fact_sales; ``` > `EXPLAIN ANALYZE` 显示实际执行耗时,帮助识别瓶颈(如广播、重分布等)。 --- ### 9. 监控常用视图 ```sql -- 查看当前正在运行的查询 SELECT pid, usename, current_query, query_start FROM pg_stat_activity WHERE current_query != '<IDLE>'; -- 查看表大小(按 MB) SELECT schemaname, tablename, pg_size_pretty(total_bytes) AS size FROM gp_toolkit.gp_table_size ORDER BY total_bytes DESC; ``` --- ### 10. 清理与维护脚本模板 ```bash #!/bin/bash # 定期维护脚本示例(配合 cron 使用) psql -d mydb -c "VACUUM ANALYZE fact_sales;" psql -d mydb -c "REINDEX TABLE fact_sales;" ``` > 注意:`VACUUM` 清理死元组;`ANALYZE` 更新统计信息;`REINDEX` 重建索引(较少需要)。 --- ### 总结说明 上述脚本覆盖了 Greenplum 日常开发运维中的核心操作: - 表设计强调 **分布策略** 和 **分区机制** - 使用 **AOCS 表** 提升分析性能 - 合理使用 **复制表** 减少 JOIN 开销 - 利用 **外部表** 高效加载数据 - 注重 **权限管理** 和 **监控** 这些模板可根据具体业务调整字段、压缩方式、分区粒度等。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值