1. 甲骨文--oracle 和mysql( 免費,開源) 2. sqlserver 3. IBM--DB2 關係型資料庫database 資料庫 , 數據表table , 數據: 記錄-- 增刪改查結構化查詢語言 非關係型資料庫: redis, mongodb 資料庫優化: 數據類型: 創建表的語 ...
1. 甲骨文--oracle 和mysql( 免費,開源) 2. sqlserver 3. IBM--DB2 關係型資料庫
database 資料庫 , 數據表table , 數據: 記錄-- 增刪改查
結構化查詢語言
非關係型資料庫: redis, mongodb
資料庫優化:
數據類型:
創建表的語法:
create table 表名(
列名1 數據類型 [約束] [預設值],
列名2 數據類型 [約束] [預設值],
列名3 數據類型 [約束] [預設值],
。。。
列名n 數據類型 [約束] [預設值]
);
數據類型:
1.整型---整數
int ,tinyint ,smallint ,bigint
int(5) int
2. 浮點型 ---實數---小數
float ,dounle , decimal
必須加上()
float(m,n) m表示占用的符號長度,n表示小數位的個數
3. 字元串類型 ‘abc’ “ghjj”
varchar(20): 可變長度 "abc" -- 3位元組
char( 30): 不可變長度 "abc" --30位元組
text : 文本型
4. 日期類型
date ,time,datetime
5. 其他 : 集合類型 set
枚舉型: enum
二進位:blob
x的y次方法--冪 2^3= 2*2*2=8
對數: log2 8
一、 數學函數
1. 冪
2. 對數
3.絕對值
4. 三角函數
5. 上限,下限,四捨五入
1. ceil(x)和ceiling(x)意義相同,返回不小於x的最小整數數值 : 向上取整
2. floor函數返回最大整數: 向下取整3 3.5 4
3.四捨五入函數-round(x[,y])
round(x): 取最接近x的整數
select round(-1.14),round(-1.67), round(1.14),round(1.66);
+--------------+--------------+-------------+-------------+
| round(-1.14) | round(-1.67) | round(1.14) | round(1.66) |
+--------------+--------------+-------------+-------------+
| -1 | -2 | 1 | 2 |
+--------------+--------------+-------------+-------------+
1 row in set (0.00 sec)
round(x,y):
y是大於0的整數,表示保留小數點的位數, y是一個負數,表示整數位的後y位,歸零,含有四捨五入現象
select round(3741.5926,-3);
+---------------------+
| round(3741.5926,-3) |
+---------------------+
| 4000 |
+---------------------+
4. truncate()截取數字
TRUNCATE(x,y)函數對操作數進行操作,結果保留小數點後面指定y位
mysql> select truncate(3.5678,2) ,round(3.5678,2);
+--------------------+-----------------+
| truncate(3.5678,2) | round(3.5678,2) |
+--------------------+-----------------+
| 3.56 | 3.57 |
+--------------------+-----------------+
5. power(x,y)求一個數的y次冪
6. sign(x)-返回數字的符號,正數為1,負數為-1,零為0
mysql> select sign(-9.2),sign(89.8),sign(0.0);
+------------+------------+-----------+
| sign(-9.2) | sign(89.8) | sign(0.0) |
+------------+------------+-----------+
| -1 | 1 | 0 |
+------------+------------+-----------+
二、字元串函數
1. 求字元串長度
char_length(), length() 區別
mysql> select char_length("a12你好哈"),length("a12你好哈");
+--------------------------+---------------------+
| char_length("a12你好哈") | length("a12你好哈") |
+--------------------------+---------------------+
| 6 | 9 |
+--------------------------+---------------------+
char_length("a12你好哈"): 統計裡面有多少個字元 (不區分漢字還是英文)
length("a12你好哈"): 統計的是占用的位元組數()
漢字字元集: gbk: 一個漢字占用記憶體2位元組 ,utf8一個漢字占用記憶體3位元組
2. (1)使用CONCAT函數連接字元串
SELECT CONCAT('My SQL', '5.5'),CONCAT('My',NULL, 'SQL');
+-------------------------+--------------------------+
| CONCAT('My SQL', '5.5') | CONCAT('My',NULL, 'SQL') |
+-------------------------+--------------------------+
| My SQL5.5 | NULL |
+-------------------------+--------------------------+
CONCAT 可以一次拼接2個以上的字元串,當其中一個是null值時,結果是NULL
(2)CONCAT_WS函數連接帶分隔符的字元串concat_ws(x,s1,s2) x代表分割符,分割符為null返回null
mysql> select concat_ws("-","x","y","z"), concat_ws("-","x",null,"z"),concat_ws(null,"x","y","z");
+----------------------------+-----------------------------+-----------------------------+
| concat_ws("-","x","y","z") | concat_ws("-","x",null,"z") | concat_ws(null,"x","y","z") |
+----------------------------+-----------------------------+-----------------------------+
| x-y-z | x-z | NULL |
+----------------------------+-----------------------------+-----------------------------+
3. lower函數或者lcase函數將字元串中所有字母字元轉換為小寫
mysql> select LOWER("vfrvGRHG"),lcase("feGRHT");
+-------------------+-----------------+
| LOWER("vfrvGRHG") | lcase("feGRHT") |
+-------------------+-----------------+
| vfrvgrhg | fegrht |
+-------------------+-----------------+
1 row in set (0.00 sec)
upper函數或者ucase函數將字元串中所有字母字元轉換為大寫
4. 位元組的截取:
(1) left(str,n): 截取str 左邊n個字元
(2)right(str,n): 截取str 右邊n個字元
(3) substring(str,start,length);
mysql> select left("abcdefg",3),right("abcdefg",3) ,substring("abcdefg",3,4);
+-------------------+--------------------+--------------------------+
| left("abcdefg",3) | right("abcdefg",3) | substring("abcdefg",3,4) |
+-------------------+--------------------+--------------------------+
| abc | efg | cdef |
+-------------------+--------------------+--------------------------+
5. 刪除空格的函數
ltrim左邊去空格, rtrim 右邊去空格,trim兩端去空格
SELECT '* book *',CONCAT('***',LTRIM(' book '),'***') l1,CONCAT('***',RTRIM(' book '),'***') l2 ,CONCAT('***',TRIM(' book '),'***') l3;
+-----------+------------------+------------------+------------+
| * book * | l1 | l2 | l3 |
+-----------+------------------+------------------+------------+
| * book * | ***book *** | *** book*** | ***book*** |
+-----------+------------------+------------------+------------+
6. 使用REVERSE函數反轉字元串
7. 字元串替換replace(str,s1,s2)
mysql> select replace("abcdefgef","ef","***");
+---------------------------------+
| replace("abcdefgef","ef","***") |
+---------------------------------+
| abcd***g*** |
+---------------------------------+
任意的電話號碼中間四位被替換為****
select replace("13718820432",substring("13718820432",3,4),"****");
mysql> select * from person1;
+------+-------------+
| id | phone |
+------+-------------+
| 1 | 13245677777 |
| 1 | 13269879012 |
| 3 | 13287901256 |
| 3 | 13789001256 |
mysql> select replace(phone,substring(phone,4,4),"****") from person1;
+--------------------------------------------+
| replace(phone,substring(phone,4,4),"****") |
+--------------------------------------------+
| 132****7777 |
| 132****9012 |
| 132****1256 |
| 137****1256 |
+--------------------------------------------+
三 、日期函數
select current_timestamp(),localtime(),now(),sysdate();
四、系統信息函數
五、條件判斷函數
1. if(expr,v1,v2) 函數
mysql> select if(5>41,1,0);
+--------------+
| if(5>41,1,0) |
+--------------+
| 0 |
+--------------+
mysql> select if(comm is null,0,comm)+sal 總錢數 from emp;
+--------+
| 總錢數 |
+--------+
| 880 |
| 2060 |
| 1875 |
| 3273 |
| 2775 |
| 3135 |
| 2695 |
| 3300 |
| 5500 |
| 1650 |
| 1210 |
| 1045 |
| 3300 |
| 1430 |
| 3556 |
+--------+
15 rows in set (0.00 sec)
mysql> select if(comm is null,sal,comm+sal) 總錢數 from emp;
+--------+
| 總錢數 |
+--------+
| 880 |
| 2060 |
| 1875 |
| 3273 |
| 2775 |
| 3135 |
| 2695 |
| 3300 |
| 5500 |
| 1650 |
| 1210 |
| 1045 |
| 3300 |
| 1430 |
| 3556 |
+--------+
15 rows in set (0.00 sec)
2. case函數
case 條件 when 值1 then 結果1 [when 值2 then 結果2][else 結果n] end
mysql> select case 31*5%4 when 0 then "整除" when 1 then "餘數為1" when 2 then "餘數為2" else "餘數為3" end;
+--------------------------------------------------------------------------------------------------------+
| case 31*5%4 when 0 then "整除" when 1 then "餘數為1" when 2 then "餘數為2" else "餘數為3" end |
+--------------------------------------------------------------------------------------------------------+
| 餘數為3 |
+--------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)