1. 程式人生 > 其它 >[sql]sql語法剖析

[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 與PRIMARYKEY的區別
參考:看樣子是隻有空與非空的區別 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;  ---???待實驗