SQL语句系列

1、SQL语句之行操作

2、SQL语句之表操作

3、SQL语句之数据库操作

4、SQL语句之用户管理


  写在前面

  在上一篇博文里面我整理了“行”级别的操作,分别是“增(insert)、删(delete)、改(update)、查(select)”,这篇文章继续整理“表”级别的操作,同样分为“增(create table)、删(drop table与truncate table)、改(alter table)、查(show tables)”,有心的朋友可能已经发现,表级别的操作都包含"table"这个单词,为了方便记忆我也有意识的将操作分级别整理,制成下面表,往后再不断完善该表:

 

行级别

insert

delete

update

select

表级别

create table

drop table

truncate table

alter table

show tables

  表操作——增(新建表)

  1、基本语法

基本语法:
create table 表名(
字段名1 类型 是否为空,
字段名2 类型 是否为空,
……
)engine=innodb default charset=utf8

   创建一个新的表,就是要告诉数据库你这张表叫什么,里面有多少字段(列),每一字段(列)叫什么名字。这就好比excel里面的表格一样,需要给表格命名,给每一列命名;但是与excel表格不同的是,数据库为了提高存储和读取的效率,需要在建表的时候告诉它每列(每个字段)的数据类型是什么,需要占几个字节(列如int、char、text、datetime等);除此之外,我们还可以要求每一个字段具有一些其他属性,比如不可为空、唯一、自增、默认值等。

  接下来还可以设置引擎(engine)和存储时的默认编码(default charset)。

    1.1  表名和字段名的命名规则

  建议在SQL中使用驼峰式命名,比如用户信息表命名为UserInfo,每个单词的首字母大写;名字简洁,做到让人一目了然,非特殊情况不建议使用特殊字符,不过在某些情况下有例外,比如对外键命名时,习惯使用“fk_T1_T2_id”这样的命名风格。  

  1.2  字段的类型

         bit(长度)
--二进制位,长度(1-64),默认长度=1 tinyint(长度) unsigned zerofill
-- 短整数
-- 有符号(默认,后面不跟unsigned):-128 ~ 127.
-- 无符号(unsigned):0 ~ 255
-- zerofill:若不够位数在高位补0,例如tinyint(4),存储1是为0001 int(长度) unsigned zerofill
-- 整数
-- 有符号:-2147483648 ~ 2147483647
-- 无符号(unsigned):0 ~ 4294967295
-- zerofill同上 bigint(长度) unsigned zerofill
-- 长整数
-- 有符号:-9223372036854775808 ~ 9223372036854775807
-- 无符号:0 ~ 18446744073709551615
-- zerofill同上 decimal(总长度,小数位数) unsigned zerofill
-- 精确的小数(高精度的数据推荐使用)
-- 总长度最大值为65,小数位数最大值为30 float(总长度,小数位数) unsigned zerofill
-- 单精度浮点数(非精确小数)
-- 有符号:-3.402823466E+38 ~ -1.175494351E-38,0
1.175494351E-38 ~ 3.402823466E+38
-- 无符号:0,1.175494351E-38 ~ 3.402823466E+38 double(总长度,小数位数) unsigned zerofill
-- 双精度浮点数(非精确小数值)
-- 有符号:
-1.7976931348623157E+308 ~ -2.2250738585072014E-308
0
2.2250738585072014E-308 ~ 1.7976931348623157E+308
-- 无符号:
0,2.2250738585072014E-308 ~ 1.7976931348623157E+308

1、数字类型

         char (长度)
-- 表示固定长度的字符串,最多达255个字符
-- 该类型储存时占用固定位数,查找速度较快 varchar(长度)
-- 可变字符串,最多达255个字符
-- 括号内的“长度”参数表示最多占用的字符
-- 查找速度慢于char,但是相对来说较节省空间 text
-- 可变的长字符串,最多65535 (2**16 − 1)个字符。 mediumtext
-- 可变的中长字符串,最多16777215 (2**24 − 1) 个字符 longtext
-- 可变长的特长字符串,最多4294967295 (2**32 − 1) 个字符(4GB) enum(元素1,元素2,元素3……)
-- 枚举类型
-- 一个枚举里面最多 65,535个不重复的元素,实际应用中一般少于3000个
-- 枚举类型表示该字段只能插入在枚举里的一个元素 set(元素1,元素2,元素3……)
-- 集合类型
-- 一个集合最多包含64个不重复的元素
-- 集合类型表示该字段只能插入在集合中的一个或多个元素

2、字符串类型 

         DATE
-- 日期
-- 格式: YYYY-MM-DD,如 2018-01-01 TIME
-- 时间
-- 格式:HH:MM:SS,如 12:01:59 YEAR
-- 年份
-- 格式:YYYY,如 2018 DATETIME
-- 日期+时间
-- 格式:YYYY-MM-DD HH:MM:SS,如 2018-01-01 12:01:59 TIMESTAMP
-- 时间戳
-- 格式:YYYYMMDD HHMMSS
-- 默认长度14位,也可以设置成其他位数,例如设置成8位,则显示年月日

3、日期类型

            --二进制数据可以存储图片、视频等格式内容,但将其存入数据库属非主流做法
TinyBlob
Blob
MediumBlob
LongBlob

4、扩展,二进制类型

           1.3  是否为空

           -- 数据库中,如果插入一行数据时,不给某字段插入内容,即插入空(SQL用null表示)
-- 例如,在test中分别插入“空字符串”和“空”,对比如下两步操作:
insert into test(name) values(""); -- 此时name不为空 insert into test() values (); -- name为空

      2、自增 & 主键

          --  在建表时的字段名后跟 auto_increment
-- 一般情况下,我们建表时,会给每张表设置一个id字段,这个字段既自增,且为主键(primary key)
-- 主键:不为null,且唯一的字段
-- 故,id字段自增(唯一),且不为null,所以可为主键。PS:mysql规定,自增列必须设为主键 create table t1(
id int auto_increment primary key
);

            -- 一般将自增列设置为主键,除此之外也可将多列设置为主键
create table t3(
num int(4) zerofill not null,
name char(10) not null,
gender char(2) default "男",
tstamp timestamp default CURRENT_TIMESTAMP,
primary key(num, name) -- 将 num、name两字段共同设为主键
); -- 插入几条数据试试
insert t3(num,name) values(1,"小明");
insert t3(num,name) values(1,"小李"); -- 虽然num也是1,但是name不同
insert t3(num,name) values(2,"小李"); -- name也是“小李”,但num不同
insert t3(num,name) values(1,"小李"); -- 报错,已经存在(1,"小李")

此时t3表中数据如下:

、默认值

          -- 在插入数据时,如果不插入任何值时,想自动插入默认值,可以使用语句“default 值”

      create table t2(
id int(4) zerofill auto_increment primary key, -- zerofill上文已述
gender char(2) not null default "男",
ttamp timestamp default CURRENT_TIMESTAMP -- 默认插入当前时间戳
); -- 插入两条数据试试 insert into t2(gender) values("女");
insert into t2() values();

      4、外键

  表操作——删(删除表)

  表操作——改(更改表的结构)

  表操作——查(联表查询)

SQL语句之表操作的更多相关文章

  1. SQL语句总结---表操作

    https://blog.csdn.net/hallomrzhang/article/details/85010014 表的操作 1.查看表结构 desc 表名 2.创建表结构的语法 create t ...

  2. SQL语句之数据库操作

    SQL语句系列 1.SQL语句之行操作 2.SQL语句之表操作 3.SQL语句之数据库操作 4.SQL语句之用户管理 占坑,带写……

  3. SQL语句之行操作

    SQL语句系列 1.SQL语句之行操作 2.SQL语句之表操作 3.SQL语句之数据库操作 4.SQL语句之用户管理 关系型数据库的存储形式 在关系型数据库中,数据都是以类似于Excel表格的形式存储 ...

  4. 5-04用Sql语句创建表

    用Sql语句创建表的基本语法: USE E_Market--指向当前所操作的数据库 GO CREATE TABLE CommoditySort--创建表的名字 { sortID int IDENTIT ...

  5. MySQL之唯一索引、外键的变种、SQL语句数据行操作补充

    0.唯一索引 unique对num进行唯一限制,表示num是独一无二的,uql是唯一索引名称 上面为联合索引:num和xx不能完全一样  1.外键的变种 a. 用户表和部门表 用户: 1 alex 1 ...

  6. SQL语句 在一个表中插入新字段

    SQL语句 在一个表中插入新字段: alter table 表名 add 字段名 字段类型 例: alter table OpenCourses add Audio varchar(50)alter ...

  7. 【转载】SQL语句将一个表的数据写入到另一个表中

    在日常的数据库运维过程中,有时候需要将Select查询出来的数据集写入到另一个数据表中,其中一种方式是通过存储过程循环写入数据,另一种简便的方式是直接使用Insert Into语句后面跟上Select ...

  8. SQL语句 删除表user 中字段name 内容重复的记录,

    public class T01 { public static void main(String[] args) { int j=4; j=j+=j-=j*=j; System.out.printl ...

  9. sql语句建表,并且自增加主键

    sql语句建表,并且自增加主键 use [test] CREATE TABLE [dbo].[Table_4] ( [userid] [int] IDENTITY(1,1) NOT NULL, CON ...

随机推荐

  1. php析构方法关于栈的问题

    <?php class test{ var $name; var $sex; var $age; function __construct( $name, $sex ,$age ) { $thi ...

  2. Python 网络爬虫 009 (编程) 通过正则表达式来获取一个网页中的所有的URL链接,并下载这些URL链接的源代码

    通过 正则表达式 来获取一个网页中的所有的 URL链接,并下载这些 URL链接 的源代码 使用的系统:Windows 10 64位 Python 语言版本:Python 2.7.10 V 使用的编程 ...

  3. blockchain notes

    1. IBM blockchain platform https://www.ibm.com/blockchain/platform/ 2. 开源项目hyperledger https://hyper ...

  4. 31.SUM() 函数

    SUM() 函数 SUM 函数返回数值列的总数(总额). SQL SUM() 语法 SELECT SUM(column_name) FROM table_name SQL SUM() 实例 我们拥有下 ...

  5. cv 验证

    This is how I have trained a xgboost classifier with a 5-fold cross-validation to optimize the F1 sc ...

  6. Installing XGBoost on Mac OSX

      0. Get gcc with open mp.  Just paste and execute the following command in your terminal, once Home ...

  7. OpenCV2.3.0在VS中的配置

    本文为cherish总结,这里先收藏着了啦啦啦!!! vs中配置时尽量在全局配置中修改,否则每次新建项目都需要重新配置全局配置步骤如下:1.“视图”菜单 -> (其他窗口->)属性管理器 ...

  8. UVa 1625 Color Length (DP)

    题意:给定两个序列,让你组成一个新的序列,让两个相同字符的位置最大差之和最小.组成方式只能从一个序列前部拿出一个字符放到新序列中. 析:这个题状态表示和转移很容易想到,主要是在处理上面,dp[i][j ...

  9. PS插件开发plugin

    Photoshop插件开发 VC++制作Photoshop自动化插件:http://blog.sina.com.cn/s/blog_73c52fda0101c7hw.html Photoshop 的扩 ...

  10. Go语言最佳实践——异常和错误

    Go语言将错误和异常两者区分对待. 1.Go语言中处理错误的惯用法是将错误以函数或者方法最后一个返回值的形式将其返回,并总是在调用它的地方检查返回的错误值. 2.对于“不可能发生的事情”称为异常,可使 ...