首页 > 数据库 >数据库学习(一)——DDL数据库定义语句

数据库学习(一)——DDL数据库定义语句

时间:2023-07-28 19:44:06浏览次数:29  
标签:语句 数据库 DDL alter 表名 table 约束 主键

定义数据库

创建数据库

  • 使用CRETE DATABASE关键字,指定编码和排序格式
    CREATE DATABASE
    mysqldb
    DEFAULT CHARACTER SET
    utf-8
    DEFAULT COLLATE
    utf8_unicode_ci;
    
  • 使用IF NOT EXITS关键字
    CREATE DATABASE
    IF NOT EXITS
    mysqldb
    

查看数据库

  • 查看数据库

    show databases;
    
  • 查看数据库编码

    select schema_name,default_character_set_name
    from information_schema.schemata
    where schema_name = 'test';
    
  • 查看数据库的相关信息(MySQL版本ID号、默认字符集等信息)。

    show create database mysqldb;
    

删除数据库

drop database mysqldb;

定义表

设计表

  • 主键(Primary Key)
    数据库表要求表中的每一行记录都必须是唯一的,即在同一张表中不允许出现完全相同的两条记录。在设计数据库时,为了保证记录的“唯一性”,最为普遍、最为推荐的做法是为表定义一个主键(primary key)。

数据库表中主键有以下两个特征:

  1. 表的主键可以由一个字段构成,也可以由多个字段构成(这种情况称为复合主键)。
  2. 数据库表中主键的值具有唯一性且不能取空值(NULL),当数据库表中的主键由多个字段构成时,每个字段的值不能取NULL值。
  • 实体间的关系与外键(Foreign Key)
    班级实体和班主任实体之间为一对一关系,班级实体和学生实体之间为一对多关系,学生实体和课程实体之间为多对多关系。
    实体间的关系可以通过外键来表示。如果表A中的一个字段a对应于表B的主键b,则字段a称为表A的外键。此时存储在表A中字段a的值,同时这个字段值也是表B主键b的值。
  • 约束: Constraint
    是定义在表上的一种强制规则。
    当为某个表定义约束后,对该表做的所有SQL操作都必须满足约束的规则要求,否则操作将失败。

约束类型

约束类型 描述
frimary key 主键约束,表的每一行的唯一标识,指定列或者列组合的所有行数据必须唯一,且不为空
unique 唯一性约束,指定列或者列组合的所有行数据必须唯一
not null 非空约束,指定某列的所有行数据不能包含空值
foreign key 外键约束,在列及引用列上建立的一种强制依赖关系
check 检查性约束,在列上指定一个必须满足的条件

数据类型

image

image

image

image

创建表

create table 表名(
字段名1 数据类型 [约束条件],
…
[其他约束条件],
[其他约束条件]
)其他选项(例如存储引擎、字符集等选项);

注意

  • PRIMARY KEY,指定字段为主键。
  • AUTO_INCREMENT,指定字段为自动增加字段。
  • INDEX,为字段创建索引。
  • NOT NULL,字段值不允许为空。
  • NULL,字段值可以为空。
  • COMMENT,设置字段的注释信息。
  • DEFAULT,设置字段的默认值。

复制表

  • 使用like关键字,只复制表结构,不复制记录
    create table
    tablename
    like
    tablenme;
    
  • 使用select关键字,可以实现表结构的复制,甚至可以将源表的表记录拷贝到新表中
    create table
    tablename
    select
    (字段名)
    from tablename;
    

删除表

deop table tablename;

修改表

使用alter table关键字,完成修改表的结构,包括添加列、修改列属性和删除列等操作!

  • 修改列字段或属性modify关键字
    ALTER TABLE 表名 MODIFY 列名 新数据类型和长度  新列属性
    
  • 新增列add关键字
    ALTER TABLE 表名 ADD 列名 数据类型和长度 列属性
    
  • 删除列列名drop colum关键字
    ALTER TABLE 表名 DROP COLUMN 列名
    

注意:
在使用modify关键字修改默认值时,需要提供数据类型和长度

  • 新增约束条件

    alter table 表名 add constraint 约束名 约束类型 (字段名)
    
  • 删除约束条件

    1. 删除表的主键约束条件语法格式比较简单,语法格式如下
      alter table 表名 drop primary key
      
    2. 删除表的外键约束时,需指定外键约束名称,语法格式如下(注意需指定外键约束名)。
      alter table 表名 drop foreign key 约束名
      
    3. 删除表字段的唯一性约束,实际上只需删除该字段的唯一性索引即可,语法格式如下(注意需指定唯一性索引的索引名)。
      alter table 表名 drop index 索引名;
      
  • 修改表的属性

    alter table 表名 engine=新的存储引擎类型
    alter table 表名 default charset=新的字符集
    alter table 表名 auto_increment=新的初始值
    alter table 表名 pack_keys=新的压缩类型
    
  • 修改表名

    alter table tablename to name;
    或者
    alter table tablename rename name;
    

标签:语句,数据库,DDL,alter,表名,table,约束,主键
From: https://www.cnblogs.com/sorrymine/p/17587907.html

相关文章

  • 数据库隔离级别 整理
    一、隔离级别及含义事务隔离级别(transactionisolationlevels):隔离级别就是对对事务并发控制的等级。ANSI/ISOSQL将其分为串行化(SERIALIZABLE)、可重复读(REPEATABLEREAD)、读已提交(READCOMMITED)、读未提交(READUNCOMMITED)四个等级。为了实现隔离级别通常数据库采用锁(Lock)。一般......
  • 最快嵌入式数据库CrossDB与SQLite3性能测试报告
    CrossDB是目前最快的高性能嵌入式关系数据库。测试工具:CrossBenchDB驱动:SQLite3CrossDB测试方法:随机访问,单线程,绑定CPU核测试服务器CPU:Intel(R)Xeon(R)[email protected] cachesize36864KBHDD:DELLPERCH755FrontSCSIDisk......
  • 基于 Kubernetes 部署 MySQL 数据库
    本文将介绍如何基于Kubernetes部署MySQL数据库。创建服务Service创建一个Service为即将部署的MySQL数据库固定连接的IP,同时提供负载均衡,下面是mysql-service.yaml文件的内容: yaml复制代码apiVersion:v1kind:Servicemetadata:name:mysqlspec:s......
  • 数据库数据恢复-断电导致Syabse数据库无法启动,存储页底层数据杂乱的数据恢复案例
    数据库恢复环境:Sybase版本:SQLAnywhere8.0。数据库故障:数据库所在的设备意外断电后,数据库无法启动。错误提示:使用SybaseCentral连接后报错:数据库故障分析:经过北亚企安数据恢复工程师检测,定位到数据库无法启动的原因:突然断电导致Sybase数据库无法正常回写数据,造成多个存......
  • 写一条mysql更新数据的语句
    要更新MySQL数据库中的数据,你可以使用UPDATE语句。下面是一个示例代码,用于更新数据库中的数据:importmysql.connectordefupdate_data(connection,table,column,value,condition):cursor=connection.cursor()#构造更新数据的SQL语句update_query=f"UP......
  • oracle数据库中的%type 及%rowtype
    1%TYPE说明为了使一个变量的数据类型与另一个已经定义了的变量(尤其是表的某一列)的数据类型相一致,Oracle提供了%TYPE定义方式。当被参照的那个变量的数据类型改变了之后,这个新定义的变量的数据类型会自动跟随其改变,容易保持一致,也不用修改PL/SQL程序了。当不能确切地知道被参照的......
  • SqlServer备份数据库语句
    Declare@DataStrNVARCHAR(200)set@DataStr=convert(NVARCHAR(19),getdate(),120)set@DataStr=REPLACE(@DataStr,':','_')set@DataStr=REPLACE(@DataStr,'','_')set@DataStr=REPLACE(@DataStr,'-','......
  • SqlServer 语句大全
    SQLServerT-SQL高级查询 高级查询在数据库中用得是最频繁的,也是应用最广泛的。Ø基本常用查询--selectselect *from student; --all 查询所有select all sexfrom student; --distinct 过滤重复select distinct sexfrom student; --count 统计s......
  • 使用 docker 部署 mycat 中间件配置数据库读写分离、分库分表
    文章目录前言配置镜像配置文件server.xml服务配置文件,包含登录用户配置schema.xml逻辑表配置rule.xml分片规则将这三个配置文件放置到固定的位置,方便后面使用启动dockercomposedockercompose启动测试前言之前有一篇博客已经在docker中将mysql的主从配置讲述了,没有看的童......
  • postgresql 数据库 报错 FATAL: sorry, too many clients already 解决方法
    场景项目postgres连接不上,所有连接报错:psql:FATAL:sorry,toomanyclientsalready原由程序使用连接未及时释放,连接一直处于idle状态处理方式1、程序里面未释放的连接,在使用后及时释放;2、postgres连接数默认最大100个,在配置文件修改该参数;postgres.confmax_con......