MySQL基本语法

来源:互联网 发布:佛山保险网络继续教育 编辑:程序博客网 时间:2024/06/06 07:05


-- 创建数据库
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;


0 0
原创粉丝点击