SQL基础-DDL/DCL

DDL基础应用

  • 库定义
    • 创建数据库
    • 命令:
      • create database abc;
      • create schema xyz;
      • create database if not exists oldguo;
      • create database bbb charset utf8mb4 collate utf8mb4_0900_ai_ci;
    • 查询库(非DDL)
    • 命令:
      • show databases;
      • show create database bbb;
    • 修改库
    • 命令:
      • alter database aaa charset utf8mb4;
    • 删除库
    • 命令:
      • drop database if exists aaa;
    • 库定义规范
      • 必须设置字符集
      • 库名:不要大写字母,不要数字开头,不要超过18字符,不要用内置字符串,和业务有关。
      • 生产禁用 DROP database(只有管理员可以做)
      • 显示的设置字符集
  • 表定义
    • 创建表
    • 命令
    • CREATE TABLE `student` (
      • `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT ‘主键’,
      • `sid` CHAR(10) NOT NULL COMMENT ‘学号’,
      • `sname` VARCHAR(128) NOT NULL COMMENT ‘姓名’,
      • `sage` TINYINT(3) UNSIGNED NOT NULL DEFAULT ’18’ COMMENT ‘年龄’,
      • `sgender` TINYINT(3) UNSIGNED NOT NULL DEFAULT ‘2’ COMMENT ‘性别’,
      • `scardid` CHAR(18) NOT NULL COMMENT ‘身份证号’,
      • `saddr` ENUM(‘北京市’,’上海市’,’天津市’,’重庆市’) NOT NULL COMMENT ‘省份’, `shobby` SET(‘足球’,’篮球’,’羽毛’,’排球’,’保龄’,’乒乓’) DEFAULT NULL COMMENT ‘爱好’,
      • `smoney` DECIMAL(10,2) UNSIGNED NOT NULL COMMENT ‘学费’,
      • `sdate` DATETIME NOT NULL COMMENT ‘入学时间’,
      • PRIMARY KEY (`id`)
    • ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
    • 建表规范:
      • 表名:不要大写字母,不要数字开头,不要超过18字符,不要用内置字符串,和业务有关。
      • 列名:业务有关,不要内置字符,不要超过18字符。
      • 数据类型:合适的,精简的,完整的。
      • 每个表要有且只有1个主键。每个列尽量Not null。尽量不要使用外键
      • 每列有注释。
      • 存储引擎InnoDB,字符集utf8mb4
      • 每个表建议在30个字段以内。
      • 需要存储emoji字符的,则选择utf8mb4字符集。
      • 机密数据,加密后存储。
      • 整型数据,默认加上UNSIGNED。
      • 存储IPV4地址建议用INT UNSIGNE,查询时再利用INET_ATON()、INET_NTOA()函数转换。
      • 如果遇到BLOB、TEXT大字段单独存储表或者附件形式存储。
      • 选择尽可能小的数据类型,用于节省磁盘和内存空间。
      • 存储浮点数,可以放大倍数存储。
      • 每个表必须有主键,INT/BIGINT并且自增做为主键,分布式架构使用sequence序列生成器保存。 10.
      • 每个列使用not null,或增加默认值。
    • 查看表
      • mysql> show tables;
      • mysql> desc student;
      • mysql> show create table student;
      • mysql> select table_name,column_name,data_type,COLUMN_COMMENT from information_schema.columns where table_schema=’school’;
    • 修改表:
      • mysql> alter table student add stel char(11) not null unique comment ‘手机号’;
      • mysql> alter table student drop stel;
      • mysql> alter table student add index idx_sid(sid);
    • 删除表:
      • mysql> drop table stu;

DCL-用户及权限、角色管理

ALTER USER
CREATE ROLE
CREATE USER
DROP ROLE
DROP USER
GRANT
RENAME USER
REVOKE
SET DEFAULT ROLE
SET PASSWORD
SET ROLE
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《SQL基础-DDL/DCL》
文章链接:https://wrlog.cn/2023/07/1535/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。