MySQL初學者的一些筆記

2020-09-21 19:00:24
		             			**MySQL學習過程的一點小筆記**
	最近一段時間作為一個學生,我開始了對MySQL的學習,一下就是我學習過程中的一些筆記,歡迎大佬過來指正,我接下來也會繼續自己筆記的上傳。在這裡謝謝大家的瀏覽。

– 尋找該表
SELECT * FROM goods_car;
– primary key 主鍵,不能空且唯一
– auto_increment 此列資料是自增長
CREATE TABLE goods_car(
id INT(4) PRIMARY KEY AUTO_INCREMENT,
uid INT(10),
good_id INT(10),
nums INT(10),
STATUS TINYINT(4),
creat_time INT(10),
update_time INT(10)
);
– 刪除資料庫
DROP TABLE test.people;

– 獨立建立主鍵
– 當表已經生成以後,然後再獨立新增主鍵
CREATE TABLE people(
people_id INT(4),
people_name VARCHAR(10)
);
– 新增主鍵
ALTER TABLE people ADD CONSTRAINT people_pk PRIMARY KEY (people_id);
– 非空約束
DROP TABLE people;

CREATE TABLE people(
people_id INT(4) PRIMARY KEY AUTO_INCREMENT,
people_name VARCHAR(10) NOT NULL
);
– 預設約束
DROP TABLE people;

– default預設值如果為空那麼就使用預設值
CREATE TABLE people(
people_id INT(4) PRIMARY KEY,
people_name VARCHAR(10) NOT NULL DEFAULT ‘zhangsan’,
people_age INT(4) NOT NULL DEFAULT ‘22’
);

– 唯一約束unique
– 要不然為空要不然值必須不同
DROP TABLE people;

CREATE TABLE people(
people_id INT(4) PRIMARY KEY AUTO_INCREMENT,
people_name VARCHAR(10) UNIQUE
);

– 外來鍵約束
DROP TABLE country;
– 父表
CREATE TABLE country(
country_id INT(4) PRIMARY KEY AUTO_INCREMENT,
country_name VARCHAR(10) UNIQUE
);
– 子表
CREATE TABLE people(
people_id INT(4) PRIMARY KEY AUTO_INCREMENT,
people_name VARCHAR(10) UNIQUE,
country_id INT(4),
– 建立外來鍵約束
CONSTRAINT pk_people FOREIGN KEY (country_id) REFERENCES country(country_id)
);
– 基本查詢
SELECT * FROM people,country;

– 新增列的操作
CREATE TABLE people(
people_id INT(4) PRIMARY KEY AUTO_INCREMENT,
people_name VARCHAR(10) UNIQUE
);
– ALTER TABLE 表名 ADD 列名 資料型別 操作
ALTER TABLE people ADD people_age INT(4) NOT NULL;

– 刪除列的操作
– ALTER TABLE 表名 DROP COLUMN 列名
ALTER TABLE people DROP COLUMN people_age;

– 修改列的資料型別
– ALTER TABLE 表名 MODIFY COLUMN 列名 資料型別
ALTER TABLE people MODIFY COLUMN people_age VARCHAR(10);

– 建立兩張表country.people
CREATE TABLE country(
country_id INT(4),
country_name VARCHAR(10) NOT NULL
);
CREATE TABLE people(
people_id INT(4),
people_name VARCHAR(10) NOT NULL,
country_id INT(4) NOT NULL
);
– 新增約束條件
– ALTER TABLE 表名 ADD CONSTRAINT 約束名稱 約束型別
– 新增主鍵約束
ALTER TABLE people ADD CONSTRAINT pk_people PRIMARY KEY(people_id);
ALTER TABLE country ADD CONSTRAINT pk_country PRIMARY KEY(country_id);

– 新增外來鍵約束
ALTER TABLE people ADD CONSTRAINT fk_people FOREIGN KEY (country_id) REFERENCES country(country_id);

– 刪除約束
– 如果有外來鍵,應先刪除子表外來鍵才能再刪父表主鍵
– ALTER TABLE 表名 DROP 約束型別 [約束名稱]
ALTER TABLE people DROP FOREIGN KEY fk_people;
ALTER TABLE country DROP PRIMARY KEY;

– 全查詢 SELECT * FROM 表名1,表名2;
– 查詢列 SELECT 列名1,列名2 FROM 表面1,表名2;
SELECT *FROM people,country;
SELECT country_id FROM people;

– 條件查詢
– SELECT TABLE *|列名 FROM 表名 WHRER 條件表示式
– = <> <= >= and or not
SELECT * FROM people WHERE people_name=‘張三’ AND country_id=2;

– 排序查詢
– SELECT *|列名 FROM 表名 ORDER BY 列名 DESC|ASC
– DESC是降序排序 ASC是升序排序
SELECT * FROM people ORDER BY people_name DESC;

– 模糊查詢
– SELECT *|列名 FROM 表名 WHERE 列名 LIKE ‘’;
SELECT * FROM people WHERE people_name LIKE ‘張%’;-- 查詢姓張的
SELECT * FROM people WHERE people_name LIKE ‘張_’;-- 查詢姓張的且名字只有兩個字

CREATE TABLE country(
country_id INT(4) PRIMARY KEY AUTO_INCREMENT,
country_name VARCHAR(10) NOT NULL
);
CREATE TABLE people(
people_id INT(4) PRIMARY KEY AUTO_INCREMENT,
people_name VARCHAR(10) NOT NULL,
people_age INT(4) NOT NULL

);
ALTER TABLE people ADD country_id INT(4) NOT NULL;
ALTER TABLE people ADD CONSTRAINT fk_people FOREIGN KEY (country_id) REFERENCES country(country_id);
SELECT * FROM people WHERE country_id=1;

– 兩張表的連線查詢
SELECT people_name,people_age,country_name FROM people a JOIN country b ON a.country_id=b.country_id WHERE country_name LIKE ‘中國%’;

– 左外連線
SELECT people_name,people_age,country_name FROM people a LEFT OUTER JOIN country b ON a.country_id=b.country_id WHERE country_name;

– 字元函數
– ascii函數
SELECT ASCII(‘a’),ASCII(‘A’),ASCII(’#’);
– 字元轉二進位制,八進位制,十六進位制
SELECT BIN(‘10’),OCT(‘10’),HEX(‘10’);
– 將兩個字元合併
SELECT CONCAT('hello ',‘world’);
– 字元的位元組數
SELECT LENGTH(‘hello’),LENGTH(‘高勝祥’);
– 字元的長度,常用中文字元
SELECT CHAR_LENGTH(「高勝祥」);
– 返回字串第一次出現的位置
SELECT INSTR(‘hello’,‘h’);
– substring(str,pos,len) 返回str從pos位置開始的len字元
SELECT SUBSTRING(‘helloworld’,2,5);
– replace(str,from_str,to_str) 將str的from_str用to_str替換
SELECT REPLACE(‘helloworld’,‘world’,‘hape’);

– 數學函數
– 求絕對值
SELECT ABS(-10.1);
– 求餘
SELECT MOD(10,4);
– floor(n) 返回不大於n的最大整數
SELECT FLOOR(-2.1),FLOOR(2.1);
– ceiling(n) 返回不小於n的最小整數
SELECT CEILING(2.1),CEILING(-2.1);
– round(n,d) 返回n的四捨五入值,保留d位小數,d預設0
SELECT ROUND(2.4),ROUND(2.45,1),ROUND(2.1,-1);
– pow(x,y) x的y次冪
SELECT POW(2,4);
– sqrt(n) 返回非負數n的平方根
SELECT SQRT(4);
– rand() 返回值再0到1.0的隨機浮點數的值
SELECT RAND();
– truncate(n,d) 擷取數位n的d位小數並返回,不會四捨五入
SELECT TRUNCATE(RAND(),2),TRUNCATE(1.88,1);

– 日期函數
– 返回當前的系統時間,以’yyyy-mm-dd hh:mm:ss’格式
SELECT SYSDATE(),NOW();
– 以’yyyy-mm-dd’格式返回當前日期
SELECT CURRENT_DATE();
– year(date)返回date的年
SELECT YEAR(NOW());
– month(date) 返回date的月
SELECT MONTH(NOW());
– dayofyear(date) 返回date是這年的第幾天
SELECT DAYOFYEAR(NOW());
– dayofmonth(date) 返回date是這月的第幾天
SELECT DAYOFMONTH(NOW());
– weekday(date) dayofweek(date) 返回date是星期幾 0=星期一…6=星期天
SELECT WEEKDAY(NOW());
– dayofweek(date) 返回date是星期幾 1=星期一…7=星期天
SELECT DAYOFWEEK(NOW());
– 求時間的差值
SELECT DATEDIFF(CURRENT_DATE(),‘2018-09-12’);

再見。。。