[sql]sql语法剖析

目录:

1. 创建相关的命令

2. 表的插入

3. 表的

一,创建


1. 建库

2. 建表(table)

mysql> create table Persons(
    id int unsigned AUTO_INCREMENT, 
    lastname varchar(20),   
    firstname varchar(10) NOT NULL,
    address char,
    age integer(3),
    family int(2),
    birthday date,
    info text,
    created timestamp default(CURRENT_TIMESTAMP),
    uptate time,
    PRIMARY KEY (id, firstname)
    );
mysql> create table Family(  
    lastname varchar(10) NOT NULL PRIMARY KEY,
    origin char(15),
    history FLOAT(4,1)
    );

 【说明】

1. 属性
1) AUTO_INCREMENT: 自动加1;
2) PRIMARY KEY(主键)
     一张表中要保证没有重复的条目,所以就需要将某个字段设置成主键, 主键不允许重复, 于是整条条目也就不会重复。主键总体来说具有如下特性:
     值唯一;
     主键列不能包含null值;
     只能有一个主键但可以建立复合主键;
     可以提高查询效率;
      非必须;
3)Unique 与 PRIMARY KEY的区别
参考:看样子是只有空与非空的区别
https://stackoverflow.com/questions/9565996/difference-between-primary-key-and-unique-key
 

2. 常用字段类型
1)  charvarchartext
     char:  表示固定长度的字符串, 括号中指定的是字符串的长度, 可以省略,缺省为1个字符长度; 插入数据超过限值则报错。
     varchar:  表示可变长度字符串, 必须指定最大长度(即限值,最大取值255),如果内容超过限值则会报错(wxy: 有的博文说是会被转换成text类型?)
     均属于SQL Server 数据类型中的Character类型
 
     text:属于Microsoft Access 数据类型(最大长度255个字符), 和
             属于MySQL 数据类型(存放最大长度为 65,535 个字符),  和
             属于SQL Server 数据类型(2GB字符数据)
 
 
 
2) int(系列) 与 integer
  int:占用4字节存储, 无符号表示-2,147,483,648 ~ 2,147,483,647; 有符号使用unsigned属性(即 int unsigned)则表示0 到 4294967295;
     可以指定长度....;
  属于MySQL,  SQL Server 数据类型中的Number类型。
  Integer:占用2字节,  -32,768 到 32,767 之间的数字, 长度设置可选,表示
     属于Microsoft Access 数据类型。
 
3)  浮点数
     FLOAT(size,d),Mysql的Number类型,表示带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数(比如2000.1,  20.22就是不正确的长度)。
              DOUBLE(size,d)表示带有浮动小数点的大数字;   Single/Double是MASQL家的;
n. 其他
1)"Describe"是特殊关键字, 不能用作表字段。

 二. 删除操作


三. 操作表数据(insert, update)


方式一: INSERT INTO 表名称 VALUES (值1, 值2,....)

mysql>insert into Persons values(3,'wu','xiaohong','L',40,4,'1980-4-1','I am superman!',CURDATE(),NOW());

解析: 必须为所有字段赋值,即使是自增的id也需要手动指定

方拾二:INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

mysql> insert into Persons (lastName, firstName, Address) VALUES ('wu','xiaohong1', 'H');

解析: id会自增, 其他非空字段不允许置空, 字符串长度不能超过限值; 

         注: 字段名称貌似是模糊匹配,大小写不同的话也能正确插入;

1.关于时间的函数
NOW(): 函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中。
CURDATE(): 以’YYYY-MM-DD’的格式返回今天的日期,可以直接存到DATE字段中。
CURTIME(): 以’HH:MM:SS’的格式返回当前的时间,可以直接存到TIME字段中。

 

三. 向表中插入数据(insert)

n. 查看存储占用
1)字符串长度len(mssql) 或 length(mysql)
mysql> select length(firstName), firstname from Persons;
+-------------------+-----------+
| length(firstName) | firstname |
+-------------------+-----------+
|                 8 | xiaohong  |
|                 9 | xiaohong1 |
+-------------------+-----------+
2)占用字节数?(mysql) 或 datalength(mssql)
mysql> select datalength(firstName), firstname from Persons;  ---???待实验
原文地址:https://www.cnblogs.com/shuiguizi/p/13912679.html