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

前言:此文旨在汇总从建立数据库到联接查询等绝大部分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的子查询、组合查询以及连接查询。

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

SQL语句汇总(一)——数据库与表的操作以及创建约束的更多相关文章

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

    首先,非常感谢大家对上篇博文的支持,真是让本菜受宠若惊,同时对拖了这么久才出了此篇表示抱歉. 前言:此文旨在汇总从建立数据库到联接查询等绝大部分SQL语句.SQL语句虽不能说很多,但稍有时间不写就容易 ...

  2. SQL语句汇总(终篇)—— 表联接与联接查询

    上一篇博文说到相关子查询效率低下,那我们怎么能将不同表的信息一起查询出来呢?这就需要用到表联接. 和之前的UNION组合查询不同,UNION是将不同的表组合起来,也就是纵向联接,说白了就是竖着拼起来. ...

  3. SQL Server中查询数据库及表的信息语句

    /* -- 本文件主要是汇总了 Microsoft SQL Server 中有关数据库与表的相关信息查询语句. -- 下面的查询语句中一般给出两种查询方法, -- A方法访问系统表,适应于SQL 20 ...

  4. 怎样用SQL语句查询一个数据库中的所有表?

    怎样用SQL语句查询一个数据库中的所有表?  --读取库中的所有表名 select name from sysobjects where xtype='u'--读取指定表的所有列名select nam ...

  5. SQL语句分组排序,多表关联排序

    SQL语句分组排序,多表关联排序总结几种常见的方法: 案例一: 在查询结果中按人数降序排列,若人数相同,则按课程号升序排列? 分析:单个表内的多个字段排序,一般可以直接用逗号分割实现. select ...

  6. 如何用SQL语句实现Mysql数据库的备份与还原

    以前一直做android客户端的项目,根本没有开发asp.net mvc的开发,现阶段做了一个模块,参数设置,以及数据库的备份与还原.其需求如下: 参数设置 本项参数设置为对自动数据备份进行设置,管理 ...

  7. Mysql学习总结(1)——常用sql语句汇总

    一.基础 1.说明:创建数据库 CREATE DATABASE database-name  2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- ...

  8. 使用SQL语句修改Mysql数据库字符集的方法

    使用SQL语句修改Mysql数据库字符集的方法   修改库: alter database [$database] character set [$character_set] collate [$c ...

  9. sql语句 怎么从一张表中查询数据插入到另一张表中?

    sql语句 怎么从一张表中查询数据插入到另一张表中?  ----原文地址:http://www.phpfans.net/ask/MTc0MTQ4Mw.html 比如我有两张表 table1 字段 un ...

随机推荐

  1. python2.x和3.x的区别(不定时更新)

    python2.x和3.x的区别 文:铁乐与猫 2018.3.16新增博文,为方便以后总结Python2.x与3.x的不同版本之间的区别,随时更新. python原本的宗旨是崇尚优美.清晰.简单.但p ...

  2. 关于Tomcat端口出现的问题

    =Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are already in use. Th ...

  3. php命名空间的设计思想和缺点

    相比C#等语言,你可以在PHP函数里面随意定义变量并赋值,而不用担心覆盖了全局变量,或者类变量:你也可以随意的定义类变量,而不用担心会和函数名冲突,因为变量前面都有个$. php的命名空间和全局变量. ...

  4. Python中网络编程对 listen 函数的理解

    listen函数的第一个参数时SOCKET类型的,该函数的作用是在这个SOCKET句柄上建立监听,至于有没有客户端连接进来,就需要accept函数去进行检查了,accept函数的第一个参数也是SOCK ...

  5. mysqldump.md

    mysqldump命令 选项 -A, --all-databases:导出全部数据库 -Y, --all-tablespaces:导出全部表空间. -y, --no-tablespaces:不导出任何 ...

  6. Jupyter Notebook的使用

    命令模式 (按键 Esc 开启) Enter : 转入编辑模式 Shift-Enter : 运行本单元,选中下个单元 Ctrl-Enter : 运行本单元 Alt-Enter : 运行本单元,在其下插 ...

  7. 利用mpvue开发微信小程序

    最近公司部门负责人提出需求需要开发一款微信小程序,由于本人之前是做前端开发的,对于小程序开发一窍不通,但是很多时候我们都是把不会做变成我会学.于是便在网上寻找小程序开发教程,相比于相生的小程序开发,本 ...

  8. 最易懂的layui分页

    该篇文章是在layui前端框架之分页基础上简洁化和详细化. 首先该示例采用的是Spring+MyBatis Plus+SpringMVC(常规的SSM框架),持久层换成MyBatis也行. 至于lay ...

  9. pl/sql连接远程oracle

    1.找到oracle安装程序下的网络配置助手 2.选中本地net服务,进行添加 3.输入远程oracle服务名 4.选中tcp协议 5.输入远程oracle的ip地址 6.在网络服务名处,随便输入一个 ...

  10. 【转】Tomcat 9.0安装配置

    本文转自:http://blog.sina.com.cn/s/blog_15126e2170102w5o8.html 一.JDK的安装与配置 1.从官网下载jdk,注意是jdk不是jre.最好从官网下 ...