SQL基礎整理

2021-08-25 17:17:13 字數 4930 閱讀 8511

用於訪問和處理資料庫的標準的計算機語言,結構性查詢語言( structured query language), 可以訪問和處理資料庫,一種 ansi(american national standards institute 美國國家標準化組織)標準的計算機語言。

mysql 資料型別

在 mysql 中,有三種主要的型別:文字、數字和日期/時間型別。

char(size)    儲存固定長度的字串(可包含字母、數字以及特殊字元)。在括號中指定字串的長度。最多 255 個字元。

varchar(size)儲存可變長度的字串(可包含字母、數字以及特殊字元)。在括號中指定字串的最大長度。最多 255 個字元。注釋:如果值的長度大於 255,則被轉換為 text 型別。

tinytext    存放最大長度為 255 個字元的字串。

text    存放最大長度為 65,535 個字元的字串。

blob    用於 blobs (binary large objects)。存放最多 65,535 位元組的資料。

mediumtext    存放最大長度為 16,777,215 個字元的字串。

mediumblob    用於 blobs (binary large objects)。存放最多 16,777,215 位元組的資料。

longtext    存放最大長度為 4,294,967,295 個字元的字串。

longblob    用於 blobs (binary large objects)。存放最多 4,294,967,295 位元組的資料。

enum(x,y,z,etc.)允許你輸入可能值的列表。可以在 enum 列表中列出最大 65535 個值。如果列表中不存在插入的值,則插入空值。注釋:這些值是按照你輸入的順序儲存的。可以按照此格式輸入可能的值:enum('x','y','z')

set    與 enum 類似,set 最多只能包含 64 個列表項,不過 set 可儲存乙個以上的值。

tinyint(size)    -128 到 127 常規。0 到 255 無符號*。在括號中規定最大位數。

smallint(size)    -32768 到 32767 常規。0 到 65535 無符號*。在括號中規定最大位數。

mediumint(size)    -8388608 到 8388607 普通。0 to 16777215 無符號*。在括號中規定最大位數。

int(size)    -2147483648 到 2147483647 常規。0 到 4294967295 無符號*。在括號中規定最大位數。

bigint(size)    -9223372036854775808 到 9223372036854775807 常規。0 到 18446744073709551615 無符號*。在括號中規定最大位數。

float(size,d)    帶有浮動小數點的小數字。在括號中規定最大位數。在 d 引數中規定小數點右側的最大位數。

double(size,d)    帶有浮動小數點的大數字。在括號中規定最大位數。在 d 引數中規定小數點右側的最大位數。

decimal(size,d)    作為字串儲存的 double 型別,允許固定的小數點。

* 這些整數型別擁有額外的選項 unsigned。通常,整數可以是負數或正數。如果新增 unsigned 屬性,那麼範圍將從 0 開始,而不是某個負數。

date()日期。格式:yyyy-mm-dd

注釋:支援的範圍是從 '1000-01-01' 到 '9999-12-31'

datetime()

*日期和時間的組合。格式:yyyy-mm-dd hh:mm:ss

注釋:支援的範圍是從 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'

timestamp()

*時間戳。timestamp 值使用 unix 紀元('1970-01-01 00:00:00' utc) 至今的描述來儲存。格式:yyyy-mm-dd hh:mm:ss

注釋:支援的範圍是從 '1970-01-01 00:00:01' utc 到 '2038-01-09 03:14:07' utc

time()    時間。格式:hh:mm:ss 注釋:支援的範圍是從 '-838:59:59' 到 '838:59:59'

year()

2 位或 4 位格式的年。

注釋:4 位格式所允許的值:1901 到 2155。2 位格式所允許的值:70 到 69,表示從 1970 到 2069。

常見查詢

select * from table;
select id,name from table;
select distinct id from table;
select * from table where id=''/'' ''/   ;
select * from table

where id=1

and name='li'

select * from table

order by id (asc/desc);

insert into table (name, url, alexa, country)
update table

set id='5', country='cn'

where name='kaya';

delete from table

where name='kaya' and country='cn';

delete from table;
delete * from table;
清空表,不改變屬性

select id  from table

limit 2

——選取結果前2條

select top 2 * from table
select top 50 percent * from table
select * from table

where id like '[_m%]'

——萬用字元

select * from table

where id in(1,2)

select po.orderid, p.lastname, p.firstname

from persons as p, product_orders as po

where p.lastname='adams' and p.firstname='john'

主鍵(primary key)是乙個列,在這個列中的每一行的值都是唯一的。在表中,每個主鍵的值都是唯一的。

join: 如果表中有至少乙個匹配,則返回行

left join: 即使右表中沒有匹配,也從左表返回所有的行

right join: 即使左表中沒有匹配,也從右表返回所有的行

full join: 只要其中乙個表中存在匹配,就返回行

select s.name,c.name

from r_class_student r

join e_student s on r.s_id=s.id

join e_class c on r.c_id=c.id

order by c.name desc;

select s.name from e_student s

union/*預設選擇不同的值 有同名應該選擇union all*/

select t.name from e_teacher t;

create table persons(

id_p int not null,

lastname varchar(255) not null,

firstname varchar(255),

address varchar(255),

city varchar(255),

check (id_p>0)

)

default 約束用於向列中插入預設值。

如果沒有規定其他的值,那麼會將預設值新增到所有的新記錄。

create table persons

(id_p int not null,

lastname varchar(255) not null,

city varchar(255) default 'sandnes'

)create table orders

(id_o int not null,

orderno int not null,

id_p int,

orderdate date default getdate()

)alter table person

add kaya   int

alter table person

drop column city

sql函式

select id, aggregate_function(id)

from e_class

where id operator value

group by name

例如

select customer,sum(orderprice) from orders

group by customer

基礎SQL整理

一.mysql 表新增字段 1.alter table people add column name varchar 100 default null comment 姓名 修改表 people 增加字段 name 長度100 預設為null 備註 姓名 二.mysql 將一張表的結果插入到另一張表...

常用基礎sql整理

show databases 顯示所有資料庫 create database abc 建立資料庫abc useabc 使用資料庫abc create table aa id int name varchar 30 age int 建立表aa id,name,age desc aa 顯示表aa中的欄位...

sql注入整理

推薦 sql注入攻防入門 sql注入 工具 scott guthrie 就提到了5點來防範 1 在構造動態sql語句時,一定要使用類安全 type safe 的引數加碼機制。也就是引數化 2 在部署你的應用前,始終要做安全審評 security review 3 千萬別把敏感性資料在資料庫裡以明文存...