数据库学习之二--SQL语句以及数据类型
一、SQL语句种类:
1. DDL(Data Definition Language,数据定义语言)用来创建或者删除存储数据用的数据库以及数据库中的表;包含以下几种指令:
a. CREATE:CREATE: 创建数据库和表等对象
b. DROP: 删除数据库和表等对象
c. ALTER: 修改数据库和表等对象的结构
2. DML(Data Manipulation Language,数据操纵语言) 用来查询或者变更表中的记录;包含以下几种指令:
a. SELECT:查询表中的数据
b. INSERT:向表中插入新数据
c. UPDATE:更新表中的数据
d. DELETE:删除表中的数据
3. DCL(Data Control Language,数据控制语言) 用来确认或者取消对数据库中的数据进行的变更,和设定RDBMS 的用户的权限; 包含以下几种指令:
a. COMMIT: 确认对数据库中的数据进行的变更
b. ROLLBACK: 取消对数据库中的数据进行的变更
c. GRANT: 赋予用户操作权限
d. REVOKE: 取消用户的操作权限
二、 书写法则
1. SQL 语句要以分号(;)结尾;
2. SQL 语句不区分大小写;
3. 常数的书写方式是固定的,使用单引号(')将字符串括起来,用来标识这是一个字符串,例如'abc','2010-01-26';
4. 单词之间需要用半角空格或者换行来分隔;
三、命名规则:
1. 数据库名称、表名和列名可以使用以下三种字符:中文字符、英文字母、 数字、下划线(_);
2. 名称必须以中文字符、英文字母作为开头
3. 同一个数据库,表名不能重复;同一张表,字段不能重复;
4. 数据,也就是表的列必须指定数据类型;
四、存储数据类型
1. 整形:
a. INT或INTEGER: (数字型)4 字节;
b. TINYINT:1字节;
c. SMALLINT: 2字节;
d. MEDIUMINT:3字节;
e. BIGINT:8字节;
2. 小数:
a. FLOAT: 单精, 4字节;
b. DOUBLE: 双精度, 8字节;
c. DECIMAL: DECIMAL(M,D) ,如果M>D,为M+2否则为D+2;
3. 字符型
a. CHAR: 存储字符串, 在括号中指定字符串的长度,例如:CHAR(256);
注:i. 字符串以定长字符串的形式存储;如果字符串的长度<长度,字符串仍然以定长存储,用半角空格补足;
ii. 字符串超出最大长度的部分无法输入到该列中;
iii. 区分大小写
b. VARCHAR:存储字符串,在括号中指定字符串的长度,例如:VARCHAR(256);
注:i. 以可变长字符串的形式来保存字符串;
ii. 字符数未达到最大长度,保存字符串本身;如向VARCHAR(8) 类型的列中输入字符串'abc'的时候,保存的就是字符串'abc';
ii. 区分大小写;
c. TINYBLOB: 不超过 255个字符的二进制字符串;
c1. MEDIUMBLOB: 二进制形式的中等长度文本数据
c2. BLOB: 二进制形式的长文本数据
c3. LONGBLOB: 二进制形式的极大文本数据
d1. TINYTEXT: 短文本字符串
d2. MEDIUMTEXT: 中等长度文本数据
d3. TEXT: 长文本数据
d4. LONGTEXT: 极大文本数据
注:UTF-8:一个汉字=3个字节;GBK:一个汉字=2个字节
4. 日期类型
a. DATE: 3个字节,格式:YYYY-MM-DD;
b. TIME: 3个字节,格式:HH:MM:SS;
c. YEAR: 1个字节,格式:YYYY
e. DATETIME: 8个字节,格式:YYYY-MM-DD HH:MM:SS
f. TIMESTAMP: 4个字节,格式:YYYYMMDD HHMMSS
总结字符串的使用:
i. 经常变化的字段用 varchar;
ii. 知道固定长度的用 char
iii. 尽量用 varchar
iv. 超过 255 字符的只能用 varchar 或者 text
iiv. 能用 varchar 的地方不用 text
五、约束
1. PRIMARY KEY:主键,唯一标识数据库表中的每条记录;
a.主键必须包含唯一的值;
b. 不能包含 NULL 值;
c. 每个表都应该有一个主键,并且每个表只能有一个主键。
2. FOREIGN KEY:外键, 一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY;
3. UNIQUE: 唯一标识数据库表中的每条记录;
4. NOT NULL:强制列不接受 NULL 值。尽量使用Not Null; 如:product_id CHAR(4) NOT NULL;
5. CHECK: 限制列中的值的范围;
6. DEFAULT: 向列中插入默认值;
数据库学习之二--SQL语句以及数据类型的更多相关文章
- iOS数据库学习(2)-基础SQL语句
/* 1. 创建一个数据表 */ CREATE TABLE IF NOT EXISTS t_dog (name text, age integer); CREATE TABLE IF NOT EXIS ...
- 【初学Java学习笔记】SQL语句调优
1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2,应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认 ...
- Python3:sqlalchemy对sybase数据库操作,非sql语句
Python3:sqlalchemy对sybase数据库操作,非sql语句 # python3 # author lizm # datetime 2018-02-01 10:00:00 # -*- c ...
- Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句 # python3 # author lizm # datetime 2018-02-01 10:00:00 # -*- co ...
- SQL Server数据库性能优化之SQL语句篇【转】
SQL Server数据库性能优化之SQL语句篇http://www.blogjava.net/allen-zhe/archive/2010/07/23/326927.html 近期项目需要, 做了一 ...
- 创建数据库和表的SQL语句【转】
创建数据库和表的SQL语句 转至http://www.cnblogs.com/philanthr/archive/2011/08/09/2132398.html 创建数据库的SQL语句: 1 crea ...
- 如何找出MySQL数据库中的低效SQL语句
面对业务的迅猛发展,DBA的一项重要工作就是及时发现数据库中的低效SQL语句,有的可以立刻着手解决(比如缺少合适的索引),有的需要尽快反馈给开发人员进行修改. MySQL数据库有几个配置选项可以帮助我 ...
- Oracle数据库中,在SQL语句中连接字符串的方法是哪个?(选择1项)
Oracle数据库中,在SQL语句中连接字符串的方法是哪个?(选择1项) A.cat B.concat C.join D.+ 解答:B
- DBA 需要知道N种对数据库性能的监控SQL语句
--DBA 需要知道N种对数据库性能的监控SQL语句 -- IO问题的SQL内部分析 下面的DMV查询可以来检查当前所有的等待累积值. Select wait_type, waiting_tasks_ ...
随机推荐
- go 结构的方法2
你可以对包中的 任意 类型定义任意方法,而不仅仅是针对结构体. 但是,不能对来自其他包的类型或基础类型定义方法. package main import ( "fmt" ...
- js中WebSocket
一.概念 WebSocket的定义 WebSocket是html5提供的一种在单个TCP连接上进行双向通信的协议,解决了客户端和服务端之间的实时通信问题.浏览器和服务器只需完成一次握手,两者之间就可以 ...
- 1 Refused to display ‘url’ in a frame because it set 'X-Frame-Options' to 'sameorigin' 怎么解决?
进在开发公司的文件中心组件,提供各个子系统的附件上传下载.预览.版本更新等功能,前端在今天突然给我发一张图,说预览缩略图遇到问题了,然后发了个截图给我: 这很明显是一个跨域问题, X-Frame-Op ...
- c#基础知识梳理(三)
上期回顾 - https://www.cnblogs.com/liu-jinxin/p/10824638.html 一.方法 一个方法是把一些相关的语句组织在一起,用来执行一个任务的语句块.每一个 C ...
- SVN 问题解决之 Working copy path does not exist in repository
同事的SVN更新时提示某个特定文件提示 Working copy path does not exist in repository svn更新会被这个错误打断,导致无法完全更新 删掉文件再更新仍然有 ...
- ajax检查用户名重复
1.获取ajax对象 new XMLHttpRequest(); IE6-8: new ActiveXOject("Microsoft.XMLHTTP"); 兼容判断:if(XML ...
- [Vuex系列] - 初尝Vuex第一个例子
Vuex是什么? Vuex是一个专为vue.js应用程序开发的状态管理库.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 通过定义和隔离状态管理中的各种概 ...
- 全面聊聊JavaScript的浅拷贝和深拷贝
一.背景 首先我们可以看下面这段简单的代码: var obj = {name:'程序猿',sex:'男'}; var arr = ['程序猿','程序媛']; var copyobj = o ...
- win7登录密码破解方法(不用U盘)
前提:1.不借助U盘等工具.2.已将win7登录账户为test,密码为123456 1.将电脑开机关机几次,进入以下界面 2.然后点击启动修复(推荐),进入以下界面 3.接着就进入到以下界面,然后点击 ...
- Vue 将一个组件嵌入到另一个组件中
https://github.com/JasmineQian/Vue_Sample App.vue是所有组件的 要嵌入到App.vue组件中, 在script处导入 import xxx from ...