SQL语句汇总(一)——数据库与表的操作以及创建约束
首先,非常感谢大家对上篇博文的支持,真是让本菜受宠若惊,同时对拖了这么久才出了此篇表示抱歉。
前言:此文旨在汇总从建立数据库到联接查询等绝大部分SQL语句。SQL语句虽不能说很多,但稍有时间不写就容易出错。博主希望通过此文来战胜自己的健忘,如果大家认可也可以保留起来。
"SQL"是 "Structured Query Language" 即“结构化查询语言”的简称,它是用来管理关系型数据库的。
其包括:
CREATE DATABASE 数据库名;
数据库名命名规则:
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语句。
分类:
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语句.SQL语句虽不能说很多,但稍有时间不写就容易 ...
- SQL语句汇总(终篇)—— 表联接与联接查询
上一篇博文说到相关子查询效率低下,那我们怎么能将不同表的信息一起查询出来呢?这就需要用到表联接. 和之前的UNION组合查询不同,UNION是将不同的表组合起来,也就是纵向联接,说白了就是竖着拼起来. ...
- SQL Server中查询数据库及表的信息语句
/* -- 本文件主要是汇总了 Microsoft SQL Server 中有关数据库与表的相关信息查询语句. -- 下面的查询语句中一般给出两种查询方法, -- A方法访问系统表,适应于SQL 20 ...
- 怎样用SQL语句查询一个数据库中的所有表?
怎样用SQL语句查询一个数据库中的所有表? --读取库中的所有表名 select name from sysobjects where xtype='u'--读取指定表的所有列名select nam ...
- SQL语句分组排序,多表关联排序
SQL语句分组排序,多表关联排序总结几种常见的方法: 案例一: 在查询结果中按人数降序排列,若人数相同,则按课程号升序排列? 分析:单个表内的多个字段排序,一般可以直接用逗号分割实现. select ...
- 如何用SQL语句实现Mysql数据库的备份与还原
以前一直做android客户端的项目,根本没有开发asp.net mvc的开发,现阶段做了一个模块,参数设置,以及数据库的备份与还原.其需求如下: 参数设置 本项参数设置为对自动数据备份进行设置,管理 ...
- Mysql学习总结(1)——常用sql语句汇总
一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- ...
- 使用SQL语句修改Mysql数据库字符集的方法
使用SQL语句修改Mysql数据库字符集的方法 修改库: alter database [$database] character set [$character_set] collate [$c ...
- sql语句 怎么从一张表中查询数据插入到另一张表中?
sql语句 怎么从一张表中查询数据插入到另一张表中? ----原文地址:http://www.phpfans.net/ask/MTc0MTQ4Mw.html 比如我有两张表 table1 字段 un ...
随机推荐
- ajax分页
html显示 <center> <div id="fyh"> <ul class="pagination" id="fy ...
- 几篇关于VisualStudio的调试工具文章
现代的软件变得日益复杂,强大的调试功能也变得日益重要起来.在VisualStudio的最近几个版本中,在调试工具方面也是增强了不少的,本文转录了几个微软官方介绍的一些新增的调试功能的文章,如果能很好的 ...
- 理解node模块的exports和module.exports
exports是module.exports的引用,即var exports = module.exports.在一个模块的开头,这两个值都指向同一个空对象:exports = module.expo ...
- MCS-51系列特殊功能寄存器(摘抄)
1. P0 (80H) P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 2.SP 栈指针(81H) 3.DPTR 数据指针(由DPH和DPL组成) DPL 数据指针低八 ...
- Solr Zookeeper ACL权限配置
首先注意:在配置ACL的时候,请关闭solr运行实例!!否则可能对集群造成不可恢复的损坏 开始: 1.修改solr.xml,在solrCloud节点添加,告诉solr要使用的provider: < ...
- C#中TreeView与数据库绑定
protected void CreateTreeView() { TreeNode rootNode = new TreeNode(); rootNode.Text = "全部" ...
- 如何编译Less
什么是LESS LESSCSS是一种动态样式语言,属于CSS预处理语言的一种.它编译后就是CSS了,大名鼎鼎的前端框架BootStrap就是用这个语言写的 下面示范下怎么用LESS编译成CSS,尽量简 ...
- android中如何发送及接收数据(两种方法)?
1.如在MainActivity.java中的按钮点击时设置: //发送数据方法1--简单型 i.putExtra("txt", "没错,我就是刚传来的信息!" ...
- 浏览器对象模型BOM
第二章 浏览器对象模型BOM 1.作用:操作窗口:提供导航对象:提供定位对象:浏览器上方的地址栏:提供跟屏幕相关对象:提供对Cookie的支持 2.根元素:window:代表整个窗口:window,o ...
- ubuntu下非本账户的.profile文件的修改
今天不小心在账户了修改了自己的.profile文件,导致重启之后账户无法进入,点登陆账户后黑屏后就重新回到账户登陆界面.一番折腾之后终于成功修改了原账户中的.profile文件,成功从新进入了原账户. ...