专栏首页用户6093955的专栏SQL语句汇总(一)——数据库与表的操作以及创建约束

SQL语句汇总(一)——数据库与表的操作以及创建约束

首先,非常感谢大家对上篇博文的支持,真是让本菜受宠若惊,同时对拖了这么久才出了此篇表示抱歉。  

前言:此文旨在汇总从建立数据库到联接查询等绝大部分SQL语句。SQL语句虽不能说很多,但稍有时间不写就容易出错。博主希望通过此文来战胜自己的健忘,如果大家认可也可以保留起来。

"SQL"是 "Structured Query Language" 即“结构化查询语言”的简称,它是用来管理关系型数据库的。

其包括:

–数据定义语言(DDL)

–数据查询语言(DQL)

–数据操作语言(DML)

–数据控制语言(DCL)

创建数据库:

CREATE DATABASE 数据库名;

数据库名命名规则:

- 第一个字符必须为下列之一:字母、下划线、#及@符号。

- 后续字符由字母、十进制数、下划线、#、$及@符号组成。

- 不能为RDBMS(数据库管理系统)的保留关键字。

- 不允许空格及其他字符。

本文以SQLyog软件为例,创建数据库如下:

CREATE DATABASE test_sql

此图为SQLyog的左侧目录栏,前三个为本地自带数据库。将SQL语句全部选中运行(F8)后,F5刷新目录栏,出现了我们创建的数据库。

连接数据库:

USE test_sql;

删除数据库:

DROP DATABASE test_sql;

接下来就开始创建表了,在创建表之前先列出几种常用的数据类型

整数数据类型:

-INT 大小:4字节

-BIGINT 大小:8字节

浮点数据类型:

- FLOAT 大小:4字节 精度:7位小数

- DOUBLE 大小:8字节 精度:15位小数

字符串数据类型:

- VARCHAR 范围:0-65535

日期数据类型:

- DATE 大小:3字节 格式:YYYY

- DATETIME 大小:8字节 格式:YYYY-MM-DD

创建表:

CREATE TABLE <表名>
      (<列名> <列的数据类型> [<列的约束>]);

如:

CREATE TABLE t_student(
            student_name VARCHAR(10),
            student_birthday DATETIME,
            student_phone INT,
            student_score FLOAT);

上表中我们创建了一张学生表,并定义了姓名、生日、电话、得分四列,列名后加上数据类型。其中要注意的是VARCHAR需要在括号内设置字符串的最大长度。

刷新之后就可以看到我们创建的数据库中多了一张表:

选择打开表可以直观的看到内容:

之后我们可以通过SQL语句也可以通过手动为表添加内容。

删除表:

DROP TABLE t_student;

复制表:

CREATE TABLE copy_student SELECT * FROM t_student; 

如此我们便复制了一张名为copy_student的表,它包括t_student表中的内容与结构。注意:复制表的同时表的约束并不能复制过来。

只复制表结构而不复制表内容:

CREATE TABLE copy_student SELECT * FROM t_student WHERE 1=0; 

只需在WHERE条件中加入一个永不为真的值即可。

修改表

添加新列:

ALTER TABLE t_student ADD student_address VARCHAR(50);

更改列:

ALTER TABLE t_student CHANGE student_birthday student_age INT;

这里我们把学生生日列改为学生年龄列,CHANGE后第一个为旧列名,第二个为新列名。

删除列:

ALTER TABLE t_student DROP COLUMN student_score;

数据库完整性

保证数据库的完整性是为了防止垃圾数据的产生,以免影响数据库的执行效率。这里简要说一些,因为毕竟不是理论类的文章,这里主要是整理汇总SQL语句。

分类:

1.实体完整性

  保证一行数据是有效的

2.域完整性

  保证一列数据是有效的

3.引用完整性

  保证引用的编号是有效的

4.用户自定义完整性

  保证自定义规则

实体完整性--主键约束:

PRIMARY KEY

主键列不能为空也不能重复,通常加在表的id列中。

CREATE TABLE t_student(
            student_id INT PRIMARY KEY,
            student_name VARCHAR(10),
            student_birthday DATETIME,
            student_phone INT,
            student_score FLOAT);

实体完整性--唯一约束:

UNIQUE

唯一约束是指给定列的值必须唯一,与主键约束不同的是它可以为空。通常加在表中不能重复的信息中,如电话号码。

CREATE TABLE t_student(
            student_id INT PRIMARY KEY,
            student_name VARCHAR(10),
            student_birthday DATETIME,
            student_phone INT UNIQUE,
            student_score FLOAT);

域完整性--非空约束:

NOT NULL

非空约束可以加在诸如姓名等列上。

CREATE TABLE t_student(
            student_id INT PRIMARY KEY,
            student_name VARCHAR(10) NOT NULL,
            student_birthday DATETIME,
            student_phone INT UNIQUE,
            student_score FLOAT);

域完整性--默认约束:

设定默认值后,可以在添加此列时不指定值,数据库会自动填充设定的默认值。

DEFAULT

现给学生表加入性别列,默认值设为“男”,这样添加新的学生信息时如果没有填写具体的性别均会默认为男性:

CREATE TABLE t_student(
            student_id INT PRIMARY KEY,
            student_name VARCHAR(10) NOT NULL,
            student_sex VARCHAR(5) DEFAULT '男',
            student_birthday DATETIME,
            student_phone INT UNIQUE,
            student_score FLOAT);

引用完整性--外键约束:

外键约束是指在外键关联主键上强制加上一个约束,如果违反该约束,则不允许该条数据的修改。

创建主表--班级表:

CREATE TABLE t_class(
              class_id INT PRIMARY KEY,
              class_name VARCHAR(20) UNIQUE NOT NULL);
            )

创建从表--学生表,并设置外键约束:

CREATE TABLE t_student(
            student_id INT PRIMARY KEY,
            s_c_id INT REFERENCES t_class(class_id),
            student_name VARCHAR(10) NOT NULL,
            student_sex VARCHAR(5) DEFAULT '男',
            student_birthday DATETIME,
            student_phone INT UNIQUE,
            student_score FLOAT
            CONSTRAINT FOREIGN KEY(s_c_id) REFERENCES t_class(class_id); 

红色标识的就是创建外键约束的方法,个人认为也是SQL语句中最难记的。

本篇博文先到这里,写起来才发现SQL比想像的多啊,所以初步打算分为三篇。第二篇讲数据增删改查这些操作、聚合函数及分组,第三篇讲SQL的子查询、组合查询以及连接查询。

感谢您的浏览,希望能对您有所帮助。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SQL语句汇总(二)——数据修改、数据查询

    注:修改多个列的值时用逗号隔开。要想设置某一列的值为空,只需让<列名>=NULL 即可。WHERE表示过滤条件。

    _DIY
  • SQL语句汇总(三)——聚合函数、分组、子查询及组合查询

    分组中也可以加入筛选条件WHERE,不过这里一定要注意的是,执行顺序为:WHERE过滤→分组→聚合函数。牢记!

    _DIY
  • 【畅通工程 HDU - 1232 】【并查集模板题】

    话说江湖上散落着各式各样的大侠,有上千个之多。他们没有什么正当职业,整天背着剑在外面走来走去,碰到和自己不是一路人的,就免不了要打一架。但大侠们有一个优点就是讲...

    _DIY
  • Python面向对象编程

    张俊红
  • 【Java框架型项目从入门到装逼】第十五节 - jdbc模糊查询实现(附带详细调试过程)

    剽悍一小兔
  • SQL server 数据库基本插入、删除命令

    L宝宝聊IT
  • Cassandra-java操作——基本操作

      接着上篇博客,我们来谈谈java操作cassandra; 上篇博客的环境:jdk1.7 + python2.7.10 + cassandra2.2.8; 由...

  • Django之ModelForm详解

    新人小试
  • 关于知识蒸馏,这三篇论文详解不可错过

    导语:继《从Hinton开山之作开始,谈知识蒸馏的最新进展》之后,作者对知识蒸馏相关重要进行了更加全面的总结。在上一篇文章中主要介绍了attention tra...

    AI科技大本营
  • Python基础 | 比系统自带dict()更方便的字典EasyDict

    字典是平时开发中非常常用的一种数据结构,是一种典型的存储"key-value"形式的数据结构,使用字典能够非常方便的存储一些配置等信息。

    算法与编程之美

扫码关注云+社区

领取腾讯云代金券