將現有欄位中的資料內容,拆兩個字元,填入新的欄位
基本
UPDATE table_name SET column_name = newvalue;
ex:
UPDATE table_name SET new_column_name=RIGHT(original_column_name,2);
從目前的 original_column_name欄中的值,從右邊挑兩個位元出來,放數
new_column_name 中
利用 Python,R,Excel VBA,multicharts 自造決策中心,取得量化交易能力, 再利用資訊不對稱,站在對你有利的這邊。
2016年3月20日 星期日
[MySQL] MySQL 常用 String function for CHAR ,VARCHAR
從某欄的值當中右邊數來2個字元所得到的資料
SELECT RIGHT(欄位名稱 , 2) FROM my_table;
SELECT LEFT(欄位名稱 , 2) FROM my_table;
選取第一個逗號前的所有內容
SELECT SUBSTRIJG_INDEX(欄位名稱, ',' , 1) From my_table;
選取一段字串,起始位置5,往後找3
SELECT SUBSTRING (your_string, 5 ,3) FROM table;
整組字串大小寫轉換
SELECT UPPER('string')
SELECT LOWER('string')
從左邊移除空白
SELECT LTRIM(' dog');
SELECT RTRIM('xxxx ');
回報字串長度
SELECT LENGTH('xxxxxx');
******
String Function 修改的是字串的copy, 原始資料不變。
SELECT RIGHT(欄位名稱 , 2) FROM my_table;
SELECT LEFT(欄位名稱 , 2) FROM my_table;
選取第一個逗號前的所有內容
SELECT SUBSTRIJG_INDEX(欄位名稱, ',' , 1) From my_table;
選取一段字串,起始位置5,往後找3
SELECT SUBSTRING (your_string, 5 ,3) FROM table;
整組字串大小寫轉換
SELECT UPPER('string')
SELECT LOWER('string')
從左邊移除空白
SELECT LTRIM(' dog');
SELECT RTRIM('xxxx ');
回報字串長度
SELECT LENGTH('xxxxxx');
******
String Function 修改的是字串的copy, 原始資料不變。
2016年3月19日 星期六
[MySQL] 1NF 資料正規化守則。
Rule1:
具單元性ATOMIC, 同一個欄位中,不會儲存好幾個類型相同的資料。
Ex: 有個欄位叫做興趣: 裡面有 游泳,看電影,打球。
除非這就是你想使用資料的最小單位,否則
全部放在一個欄位裡面,將無法準確搜尋。
Rule2:
需要具有單元性,且不會用好幾個欄位,儲存相同類型的資料。
ex: 你不該設計兩個不同名子的欄位而放類似的內容,像是
一個欄位叫做學生1,另一個叫做學生2,即便兩個學生的姓名是不同的,
但這違反了Rule2.
[MySQL] MySQL 常用方法(2) ALTER + MODIFY / CHANGE
新增primary key
ALTER TABLE my_table
ADD COLUMN contact_id INT NOT NULL AUTO_INCREMENT FIRST,
ADD PRIMARY KEY (contact_id);
將舊有的某欄位 改成primary key 來用,且將原本欄位名稱 name 改成 contact_id
ALTER TABLE my_table
CHANGE COLUMN name contact_id INT NOT NULL AUTO_INCREMENT FIRST,
ADD PRIMARY KEY (contact_id);
改table name
ALTER TABLE oldname RENAME TO new_table_name;
改變某一欄位的名稱 和資料型別
ALTER TABLE my_table
CHANGE COLUMU oldname new_name VARCHAR(100);
如果要連續改很多欄位 只要用, 接著就可以。
ALTER TABLE my_table
CHANGE COLUMU oldname new_name VARCHAR(100),
CHANGE COLUMU oldnameb new_nameb VARCHAR(30),
CHANGE COLUMU oldnamec new_namec VARCHAR(100);
NOTE: 如果資料型別改小,原本資料會被截斷。 varchar 100 -> 10 , 則裡面的string 可能會被截斷。造成資料遺失。
只想改動資料型別。不想換名稱時。
ALTER TABLE my_table
MODIFY COLUMN old)name VARCHAR(100);
想刪除某欄位
ALTER TABLE my_table
DROP COLUMN xxxx;
移除主鍵 primary key
ALTER TABLE your_table DROP PRIMARY KEY;
設定某欄為AUTO_INCREMENT
ALTER TABLE your_table CHANGE your_id your_id INT(11) NOT NULL AUTO_INCREMENT;
反之,刪除某欄的AUTO_INCREMENT
ALTER TABLE your_table CHANGE your_od your_id INT(11) NOT NULL;
*一個table 只能有一欄可以加上AUTO_INCREMENT,且為整數型別,不含NULL.
#######ALTER 小結
ALTER TABLE
以保持現有資料表內容為前提,修改資料表名稱或整體結構
ALTER ADD
把資料欄安插到表中指定的順序
ALTER DROP
從資料表中刪除資料欄
ALTER CHANGE
同時修改現有資料欄位名稱與型別
ALTER MODIFY
只修改型別
ALTER TABLE my_table
ADD COLUMN contact_id INT NOT NULL AUTO_INCREMENT FIRST,
ADD PRIMARY KEY (contact_id);
將舊有的某欄位 改成primary key 來用,且將原本欄位名稱 name 改成 contact_id
ALTER TABLE my_table
CHANGE COLUMN name contact_id INT NOT NULL AUTO_INCREMENT FIRST,
ADD PRIMARY KEY (contact_id);
改table name
ALTER TABLE oldname RENAME TO new_table_name;
改變某一欄位的名稱 和資料型別
ALTER TABLE my_table
CHANGE COLUMU oldname new_name VARCHAR(100);
如果要連續改很多欄位 只要用, 接著就可以。
ALTER TABLE my_table
CHANGE COLUMU oldname new_name VARCHAR(100),
CHANGE COLUMU oldnameb new_nameb VARCHAR(30),
CHANGE COLUMU oldnamec new_namec VARCHAR(100);
NOTE: 如果資料型別改小,原本資料會被截斷。 varchar 100 -> 10 , 則裡面的string 可能會被截斷。造成資料遺失。
只想改動資料型別。不想換名稱時。
ALTER TABLE my_table
MODIFY COLUMN old)name VARCHAR(100);
想刪除某欄位
ALTER TABLE my_table
DROP COLUMN xxxx;
移除主鍵 primary key
ALTER TABLE your_table DROP PRIMARY KEY;
設定某欄為AUTO_INCREMENT
ALTER TABLE your_table CHANGE your_id your_id INT(11) NOT NULL AUTO_INCREMENT;
反之,刪除某欄的AUTO_INCREMENT
ALTER TABLE your_table CHANGE your_od your_id INT(11) NOT NULL;
*一個table 只能有一欄可以加上AUTO_INCREMENT,且為整數型別,不含NULL.
#######ALTER 小結
ALTER TABLE
以保持現有資料表內容為前提,修改資料表名稱或整體結構
ALTER ADD
把資料欄安插到表中指定的順序
ALTER DROP
從資料表中刪除資料欄
ALTER CHANGE
同時修改現有資料欄位名稱與型別
ALTER MODIFY
只修改型別
[MySQL] 如何登入Ubuntu MySQL client.
MySQL server will be started automatically after the installation. You CANNOT start another instance! To check the mysqld process:
$ ps aux | grep mysqld
mysql 1113 0.0 0.3 484432 50024 ? Ssl 18:33 0:08 /usr/sbin/mysqld
To start a MySQL client:
$ mysql -u root -p
// Enter the password for the root user you have set when you install the server.
Once you loging your client, you can start CREATE DATABASE xxxx , and use others SQL commadn.
[MySQL] Ubuntu 14.04 刪除所有舊的MySQL, 並重新安裝。
[Delete old mysql, and reinstall the new one.]
delete old mysql
sudo apt-get autoremove --purge mysql-server-5.0
sudo apt-get remove mysql-server
sudo apt-get autoremove mysql-server
sudo apt-get remove mysql-common
clear the package.
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
Reinstall new server.
sudo apt-get install mysql-server
sudo apt-get install mysql-client
在剛才重新安裝的途中,他就會叫你設定root 密碼了。之後登入時會用到。
delete old mysql
sudo apt-get autoremove --purge mysql-server-5.0
sudo apt-get remove mysql-server
sudo apt-get autoremove mysql-server
sudo apt-get remove mysql-common
clear the package.
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
Reinstall new server.
sudo apt-get install mysql-server
sudo apt-get install mysql-client
在剛才重新安裝的途中,他就會叫你設定root 密碼了。之後登入時會用到。
[MySQL] MySQL 常用方法(1) CREATE, SHOW, INSERT INTO, WHERE, NOT, AND OR,SELECT,UPDATE
MySQL 常用方法。 Some quick tips.
CREATE, SHOW, INSERT INTO, WHERE, NOT, AND OR,SELECT,UPDATE
[Database 建立刪除相關]====
建立database
mysql>CREATE DATABASE database_name;
看看目前有哪些database了
mysql>show databases;
進去準備使用這個database
mysql>USE database_name;
[Table 建立刪除相關]====
建立table,
mysql>CREATE TABLE `table_info` (
`name` varchar(50) default NULL,
`last_seen` varchar(50) default NULL,
`appearance` varchar(50) default NULL,
`activities` varchar(50) DEFAULT 1.00 NOTNULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
ps.可以指定接受不接受NULL, 還有設定default值
show出目前所有database_name 下有的table 有哪些?
mysql>show tables;
show 出目前table_info的樣子
mysql>SELECT * FROM table_info;
刪除整個table
mysql> DROP TABLE table_info;
看看某個table 當初怎麼建立的
SHOW CREATE TABLE xxx_table;
[Table 操作]====
新增值(照著原本順序,直接用VALUES即可,不用再打欄位名稱。)
mysql>INSERT INTO table_info VALUES ('Pickles', 'Jack Green\'s party', 'M, orange hair, blue suit, huge feet','mime');
如果只要新增部分資料欄,那就要打出要新增的是哪一欄位。
INSERT INTO table_info
( name,last_seen)
VALUES
('Pickles', 'Jack Green\'s party');
選出你要的特定資料
挑出table內名子叫Paul的人,列出他在table中所以的欄位資訊。
SELECT * FROM my_table
WHERE name='Paul';
挑出table內名子叫Paul的人且體重要大於80,列出他在table中address, years 的欄位資訊。
SELECT address, years FROM my_table
WHERE name='Paul' AND weight>80;
LIKE 配合 % 和 _
找first_name 中,前面不管有多少字,結尾是ul 的。
SELECT first_name FROM my_table
WHERE first_name LIKE '%ul';
找first_name 中,前面只能有一個字,結尾是ul 的。
SELECT first_name FROM my_table
WHERE first_name LIKE '_ul';
挑出有含a , b, c ,d 的
挑出在my_table中,jobs 欄位是a, b, c, d 的人,並列出他的first_name.
SELECT first_name FROM my_table
WHERE jobs IN (a,b,c,d);
挑出在my_table中,jobs 欄位不是a, b, c, d 的人,並列出他的first_name.
SELECT first_name FROM my_table
WHERE jobs NOT IN (a,b,c,d);
IS NULL 可以用來檢查是否為NULL
SELECT * FROM my_tables
WHERE NOT main IS NULL.
或者,兩個用法都可。
SELECT * FROM my_tables
WHERE main NOT IS NULL.
AND / OR + NOT
WHERE +NOT
區間用 WHERE xxxx BETWEEN 小 AND 大
UPDATE + SET
把my_table 中,type欄位裡面的舊值改成新值
UPDATE my_table SET type='newvalue' WHERE type='oldvalue';
把my_table 中 name 叫做a, 或 b的商品 cost 都累加一。
UPDATE my_table SET cost=cost+1 WHERE name='a' OR drink_name='b';
CREATE, SHOW, INSERT INTO, WHERE, NOT, AND OR,SELECT,UPDATE
[Database 建立刪除相關]====
建立database
mysql>CREATE DATABASE database_name;
看看目前有哪些database了
mysql>show databases;
進去準備使用這個database
mysql>USE database_name;
[Table 建立刪除相關]====
建立table,
mysql>CREATE TABLE `table_info` (
`name` varchar(50) default NULL,
`last_seen` varchar(50) default NULL,
`appearance` varchar(50) default NULL,
`activities` varchar(50) DEFAULT 1.00 NOTNULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
ps.可以指定接受不接受NULL, 還有設定default值
show出目前所有database_name 下有的table 有哪些?
mysql>show tables;
show 出目前table_info的樣子
mysql>SELECT * FROM table_info;
刪除整個table
mysql> DROP TABLE table_info;
SHOW CREATE TABLE xxx_table;
[Table 操作]====
新增值(照著原本順序,直接用VALUES即可,不用再打欄位名稱。)
mysql>INSERT INTO table_info VALUES ('Pickles', 'Jack Green\'s party', 'M, orange hair, blue suit, huge feet','mime');
如果只要新增部分資料欄,那就要打出要新增的是哪一欄位。
INSERT INTO table_info
( name,last_seen)
VALUES
('Pickles', 'Jack Green\'s party');
選出你要的特定資料
挑出table內名子叫Paul的人,列出他在table中所以的欄位資訊。
SELECT * FROM my_table
WHERE name='Paul';
挑出table內名子叫Paul的人且體重要大於80,列出他在table中address, years 的欄位資訊。
SELECT address, years FROM my_table
WHERE name='Paul' AND weight>80;
LIKE 配合 % 和 _
找first_name 中,前面不管有多少字,結尾是ul 的。
SELECT first_name FROM my_table
WHERE first_name LIKE '%ul';
找first_name 中,前面只能有一個字,結尾是ul 的。
SELECT first_name FROM my_table
WHERE first_name LIKE '_ul';
挑出有含a , b, c ,d 的
挑出在my_table中,jobs 欄位是a, b, c, d 的人,並列出他的first_name.
SELECT first_name FROM my_table
WHERE jobs IN (a,b,c,d);
挑出在my_table中,jobs 欄位不是a, b, c, d 的人,並列出他的first_name.
SELECT first_name FROM my_table
WHERE jobs NOT IN (a,b,c,d);
IS NULL 可以用來檢查是否為NULL
SELECT * FROM my_tables
WHERE NOT main IS NULL.
或者,兩個用法都可。
SELECT * FROM my_tables
WHERE main NOT IS NULL.
AND / OR + NOT
WHERE +NOT
區間用 WHERE xxxx BETWEEN 小 AND 大
UPDATE + SET
把my_table 中,type欄位裡面的舊值改成新值
UPDATE my_table SET type='newvalue' WHERE type='oldvalue';
把my_table 中 name 叫做a, 或 b的商品 cost 都累加一。
UPDATE my_table SET cost=cost+1 WHERE name='a' OR drink_name='b';
訂閱:
文章 (Atom)