[sql]sql語法剖析
阿新 • • 發佈:2021-12-02
目錄:
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 timestampdefault(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的區別
2. 常用欄位型別
1)char 與 varchar 與 text
char: 表示固定長度的字串, 括號中指定的是字串的長度, 可以省略,預設為1個字元長度; 插入資料超過限值則報錯。
varchar: 表示可變長度字串, 必須指定最大長度(即限值,最大取值255),如果內容超過限值則會報錯(wxy: 有的博文說是會被轉換成text型別?)
均屬於SQL Server 資料型別中的Character型別
text
屬於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; ---???待實驗