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

前言:此文旨在汇总从建立数据库到联接查询等绝大部分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 FLOATCONSTRAINT FOREIGN KEY(s_c_id) REFERENCES t_class(class_id); 

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

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

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

转载于:https://www.cnblogs.com/ghost-xyx/p/3795679.html

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

  1. SQL语句遍历树结构的数据表

    [转自]:肆尾葱的博客<SQL语句遍历树结构的数据表> 一.创建树结构的数据库表 -- 数据库为 SQL Server create table treeTest(id int,paren ...

  2. 数据库常用的sql语句汇总

    数据库相关: 查所有数据库 show databases; 创建数据库 create database db1; 查看数据库 show create database db1; 创建数据库指定字符集 ...

  3. 执行多条SQL语句,执行数据库事务(可传入Sql参数)

    上篇博客,实例介绍了一个事务执行多条SQL语句函数(int ExecuteSqlTran(List<String> SQLStringList))点击打开链接,方便之余又发现了它的缺陷-- ...

  4. sql语句查看MySQL数据库大小

    SQL语句查看MySQL数据库大小 > SELECT table_schema "Database Name", sum( data_length + index_lengt ...

  5. 常用SQL语句 - 基于MySQL数据库

    常用SQL语句 - 基于MySQL数据库 基础 连接数据库 mysql -h10.20.66.32 -uroot -p123456 -h后面是mysqlServer所在地址,-u后面是用户名,-p后面 ...

  6. MySQL表sql语句增删查改_学会这些操作你就不会栓Q(狗头)

    目录 本章目标 CRUD 新增(Create) 单行数据,全列插入 多行插入,指定列插入 查询(Retrieve) 修改(Update) 删除(Delete) 本章目标 学会MySQL表中的sql语句 ...

  7. SQL语句优化优化数据库性能

    在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为 ...

  8. sql语句,怎么查看一个表中的所有约束

    sql语句,怎么查看一个表中的所有约束,比如,一个student表,有唯一,外键,主键,用sql语句怎么查看student表中的所有约束呢? select * from sysobjects wher ...

  9. sql语句lastupdate使用数据库库函数

    sql语句lastupdate使用数据库库函数 <sql id="Base_Column_List">CKLSH, ZJLX, ZJHM, MC, CBR, SJY, ...

最新文章

  1. 办公软件Office 2010下载安装介绍
  2. java--Hibernate添加数据save
  3. 二十八、Pyspider 爬取链家网
  4. OpenGL 实例化属性的实例
  5. [软件推荐]使用OneNote来构建你自己的知识库(OFFICE2010)
  6. iOS开发:AFNetworking、MKNetworkKit和ASIHTTPRequest比较
  7. [html] html5中的meta标签renderer有什么作用?
  8. sqlite3的backup和restore函数的使用
  9. mysql 分区 导出_mysql普通表变成分区表导入导出
  10. 气候变化与 计算机网络,北京理工大学:气候变化综合评估模式研究获立项
  11. 砸黑板! 正则表达式!!!re 模块
  12. Python functools模块之cmp_to_key
  13. Linux开发板循环显示红绿蓝
  14. 无心剑中译约翰·拉伯克《书海乐无穷》
  15. 3dsMax学习笔记01_用VRayMtl材质制作玻璃材质
  16. PAT 1034 有理数四则运算 python
  17. signature=0ca2720a9af9bfe70731d72325e6c137,Ca2+ signatures
  18. Clang调试诊断信息Expressive Diagnostics
  19. java Runable类实现多线程计数器
  20. SpringBoot2.x系列教程03--新纪元之SpringBoot初相见

热门文章

  1. vuedraggable嵌套块拖拽_Vue.Draggable拖拽效果
  2. python内点法_python射线法判断一个点在图形区域内外
  3. java imapi.jat的使用_springboot+mybatis+Maven+jsp+Quartz整合实战林业厅项目
  4. ionic自动生成启动页和图标
  5. 对学生成绩表按计算机应用成绩排序,计算机等级考试EXCEL练习题-12学生成绩表2...
  6. linux sed保存,linux sed
  7. 华为手机媒体音量自动静音_华为手机音量键隐藏着四个功能,80%的人只知道第一个!...
  8. python可视化工具bokeh_浅谈python可视化包Bokeh
  9. 哪款浏览器速度最快_全球知名度非常高的火狐浏览器,它好在哪呢?
  10. java使用btree_java数据结构之二叉树遍历的非递归实现