MySQL基本語法



-- 創建數據庫
CREATE DATABASE theUser;
-- 刪除數據庫
DROP DATABASE class;
-- 刪除表
DROP TABLE t_student;
-- 創建表
CREATE TABLE t_student(
Id INT PRIMARY KEY AUTO_INCREMENT,-- 編號
studentName VARCHAR(20),-- 學生姓名
sex VARCHAR(20),-- 性別
birthday DATE,-- 生日
tel VARCHAR(20)-- 電話
);
-- 查詢表中所有的數據
SELECT * FROM t_student;-- *表示查詢所有的列
-- 查詢所有的男生
SELECT * FROM t_student WHERE sex='男';
-- 查詢姓戚的
SELECT * FROM t_student WHERE studentName LIKE'%戚%';
-- 查詢姓戚的兩個字的學生
SELECT * FROM t_student WHERE studentName LIKE '戚_' ;
-- 查詢所有的電信用戶
SELECT * FROM t_student WHERE tel LIKE '18%';
-- and 兩個條件都滿足才滿足
SELECT * FROM t_student WHERE studentName LIKE '戚%' AND sex = '女';
-- 查詢90後女生
SELECT * FROM t_student WHERE birthday >= '1990-01-01' AND
birthday<'2000-01-01' AND sex ='女';
-- 查詢移動用戶
SELECT * FROM t_student WHERE tel LIKE '13%' OR tel LIKE '15%';
-- 查詢第三條到第五條記錄,第一個表示從第幾條開始,第一條是0,
-- 第二個參數表示顯示幾條
SELECT * FROM t_student LIMIT 2,4;
-- 按年齡排序 asc升序 desc降序 默認是升序
SELECT * FROM t_student ORDER BY birthday DESC;
-- 找出表中年齡最小的那一頭
SELECT * FROM t_student ORDER BY birthday DESC LIMIT 0,1;
 
INSERT INTO t_student(studentName,sex,birthday)
VALUES('劉軍','男','1990-10-04');

SELECT * FROM t_student WHERE tel IS NULL;
-- 查詢id爲3或者5,8的
SELECT * FROM t_student WHERE Id IN (3,5,8);
-- 查詢所有的姓名 distinct 表示去除重複記錄
SELECT DISTINCT sex FROM t_student ;

-- 添加數據
INSERT INTO t_student(studentName,sex,birthday,tel)
VALUES('母國平','男','1950-03-28','110');
INSERT INTO t_student(studentName,sex,birthday,tel)
VALUES('戚薇','女','1984-03-25','13990728765');
-- 添加多條記錄
INSERT INTO t_student(studentName,sex,birthday,tel)
VALUES('劉德華','男','1965-08-27','12938420'),
('張學友','男','1966-08-27','212239');
-- 刪除id = 4的學生
DELETE FROM t_student WHERE Id = 4;
-- 刪除姓李的學生
DELETE FROM t_student WHERE studentName LIKE '什%';
-- 刪除姓名
DELETE FROM t_student WHERE studentName = '母國平';
-- 刪除帶這個字的名字
DELETE FROM t_student WHERE studentName LIKE '%戶%';
-- 修改
UPDATE t_student SET tel='110',birthday='1999-09-09' WHERE studentName = '戚薇';
UPDATE t_student SET tel='007',sex='女',birthday='1000-01-01' WHERE studentName = '黃茂全';

-- 查詢最高學生信息 子查詢...
SELECT * FROM t_student WHERE s_grade=(SELECT MAX(s_grade) FROM t_student);
-- 查詢誰的成績比唐伯虎好
SELECT * FROM t_student WHERE s_grade>(SELECT s_grade FROM t_student WHERE s_studentName='唐伯虎');
-- 查詢每個班最高分的學生
SELECT s_class,(SELECT MAX(s_grade) FROM t_student) FROM t_student  GROUP BY s_class;

SELECT * FROM t_student WHERE s_grade IN (SELECT MAX(s_grade) FROM t_student GROUP BY s_classm)

-- 創建表
CREATE TABLE t_civics(
Id INT PRIMARY KEY AUTO_INCREMENT,-- 編號
c_name VARCHAR(20),-- 學生姓名
c_birthday DATE,-- 生日
c_occ VARCHAR(20)--
);
INSERT INTO t_civics(c_name,c_birthday,c_occ)
VALUES('張譯','1994-03-24','JAVA工程師'),
('張體','1983-4-28','c++工程師'),
('張思','1979-03-21','建築工程師'),
('蘭蔭','1987-3-19','文員');
INSERT INTO t_civics(c_name,c_birthday,c_occ)
VALUES('杜爵','1993-12-14','教師');
CREATE TABLE room(
Id INT PRIMARY KEY AUTO_INCREMENT,
c_adress VARCHAR(20),
c_price INT,
c_id INT(20)
);
-- 約束id
ALTER TABLE room ADD CONSTRAINT fk_2 FOREIGN KEY(c_id)
REFERENCES t_civics(Id);
INSERT INTO room(c_adress,c_price,c_id) VALUES('百草路10號',3000,1),
('百花路19號',4000,2),('陝西街39號',4000,3),('人民北路10號',5000,4);
INSERT INTO room(c_adress,c_price,c_id) VALUES('香草路10號',3000,2);
-- 內連接JOIN ON ,查詢兩個表共有的值匹配,只會顯示共有的
-- 查詢所有房間,並顯示房間主人
SELECT r.* , c.c_name FROM room r JOIN t_civics c ON r.c_id=c.Id;-- 鏈表
SELECT r.*,c.c_name FROM room r,t_civics c WHERE r.c_id=c.Id;
-- 查詢張體所有的房間
SELECT r.* ,c.c_name FROM room r JOIN t_civics c ON r.c_id=c.Id WHERE c.c_name='張體';
SELECT r.*,c.c_name FROM room r,t_civics c WHERE r.c_id=c.Id AND c.c_name='張體';
-- 查詢張體有幾套房子
SELECT COUNT(*) FROM room r ,t_civics c WHERE r.c_id=c.Id AND c.c_name='張體' GROUP BY c.c_name;
-- 查詢每個用戶有幾套房間
SELECT c.c_name,COUNT(*)FROM room r, t_civics c WHERE r.c_id=c.Id GROUP BY c.c_name;
-- 左外聯結 不管有沒有匹配,被定義的外聯結的表數據都要出現在結果中
-- 查詢所有用戶擁有房間的情況
SELECT c.*,r.c_adress FROM t_civics c LEFT JOIN room r ON c.Id=r.c_id;
-- 查詢哪些用戶沒有房間
SELECT c.* FROM t_civics c LEFT JOIN room r ON c.Id=r.c_id WHERE r.c_adress IS NULL;
SELECT c.* FROM t_civics C LEFT JOIN room r ON c.Id=r.c_id WHERE r.c_adress IS NULL;
SELECT c.* FROM t_civics c LEFT JOIN room r ON c.Id=r.c_id GROUP BY c.c_name HAVING COUNT( r.c_adress)=0;
-- 顯示所有用戶擁有幾套房間
SELECT c.c_name,COUNT(r.c_adress)FROM t_civics c LEFT JOIN room r ON c.Id= r.c_id GROUP BY c.c_name;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章