数据库2
2016-05-23 22:45
337 查看
创建数据库:
PRIMARY KEY
定义当前列为
主键。主键有两个特点,非空,不能重复
AUTO_INCREMENT设置当前列为自动增长列,由DBMS为该列分配值,确保该列的值不重复。
关键代码如下
--
创建数据库
CREATE DATABASEbook;
--
删除数据库
DROP DATABASE book;
--
创建表
CREATE TABLEt_student(
id INTPRIMARY KEY AUTO_INCREMENT,--
编号
studentName VARCHAR(20),--
学生姓名
sex VARCHAR(20),--
性别
birthday DATE, --
生日
telVARCHAR(20)
);
--
删除表
DROP TABLEt_student;
--
查询表中所有的数据 *表示查询所有的列
SELECT * FROMt_student;
--
添加记录
INSERT INTOt_student(studentName,sex,birthday,tel)
VALUES('张三','男','1993-9-20','18200192671');
INSERT INTOt_student(studentName,sex,birthday,tel)
VALUES('猪八戒','男','1990-01-01','12345678909');
INSERT INTOt_student(studentName,sex,birthday,tel)
VALUES('孙悟空','男','1993-01-02','11111111111');
INSERT INTOt_student(studentName,sex,birthday,tel)
VALUES('沙和尚','女','1998-01-03','22222222222');
--
添加多条记录
INSERT INTOt_student(studentName,sex,birthday,tel)
VALUES('周杰伦','男','1979-8-29','88888888888'),
('李宇春','男','1999-8-29','13843756843'),
('屎户狗','男','1980-4-30','13790976754'),
('狗屎户','男','1980-4-30','15690976754'),
('户狗蛋','男','2000-3-15','15883948756');
--
删除姓户的学生
只能删除第一个字是户的名字
DELETE FROM t_student WHERE studentName LIKE '户%';
--
删除所有带户字的名字
DELETE FROM t_student WHERE studentName LIKE '%户%';
--
删除id=1的学生
DELETE FROMt_student WHERE id=1;
--
删除周杰伦
DELETE FROM t_student WHERE studentName='周杰伦';
--
修改周杰伦的电话
UPDATE t_student SET tel='15909235646' WHERE studentName='周杰伦';
--
同时修改周杰伦的电话和生日
UPDATE t_student SET tel='18200186756',birthday='1993-09-16' WHEREstudentName='周杰伦';
--
修改孙悟空的性别
UPDATE t_student SET sex='女' WHEREstudentName='孙悟空';
--
查询所有的男生
SELECT * FROM t_student WHERE sex='男';
--
查询所有名字里有户的学生
SELECT * FROM t_student WHERE studentName LIKE '%户%';
--
查询姓张的两个字的学生
SELECT * FROM t_student WHERE studentName LIKE '张_';
--
查询所有电信用户的学生
SELECT * FROMt_student WHERE tel LIKE '18%';
--
查询姓户的男生
SELECT * FROM t_student WHERE studentName LIKE '户%' AND sex='男';
--
查询90后的学生
SELECT * FROMt_student WHERE birthday >='1990-01-01' AND birthday<'2000-01-01';
--
查询所有的移动用户
SELECT * FROMt_student WHERE tel LIKE '13%' OR tel LIKE '15%';
--
查询第三条到第五条记录
第一个表示从第几条开始,第一条是0
--
第二个参数表示显示几条
SELECT * FROMt_student LIMIT 3,3;
--
按年龄排序 asc升序 desc降序
默认是升序
SELECT * FROMt_student ORDER BY birthday;
--
查询年龄最小的学生
SELECT * FROMt_student ORDER BY birthday LIMIT 0,1;
INSERT INTO t_student(studentName,sex,birthday) VALUES('猪刚鬣','男','1972-01-9'),
('天蓬元帅','女','1995-06-30');
--
查询没有手机的学生
SELECT * FROMt_student WHERE tel IS NULL;
--
查询id为3和5、8的学生
SELECT * FROMt_student WHERE id IN(3,5,8);
--
查询所有学生的性别 DISTINCT表示去除重复记录
SELECT DISTINCT sexFROM t_student ;
数据分组
HAVING和WHERE区别:
二者都是过滤条件,WHERE运行在分组前,因此不能执行任何聚合函数。HAVING是运行在分组后,只能用做聚合函数的过滤。
SQL执行顺序:
第一步:执行FROM
第二步:WHERE条件过滤
第三步:GROUP BY分组
第四步:执行SELECT投影列
第五步:HAVING条件过滤
第六步:执行ORDER BY排序
在分组查询中,能够查询的字段,只能是分组字段和聚合函数。
PRIMARY KEY
定义当前列为
主键。主键有两个特点,非空,不能重复
AUTO_INCREMENT设置当前列为自动增长列,由DBMS为该列分配值,确保该列的值不重复。
关键代码如下
--
创建数据库
CREATE DATABASEbook;
--
删除数据库
DROP DATABASE book;
--
创建表
CREATE TABLEt_student(
id INTPRIMARY KEY AUTO_INCREMENT,--
编号
studentName VARCHAR(20),--
学生姓名
sex VARCHAR(20),--
性别
birthday DATE, --
生日
telVARCHAR(20)
);
--
删除表
DROP TABLEt_student;
--
查询表中所有的数据 *表示查询所有的列
SELECT * FROMt_student;
--
添加记录
INSERT INTOt_student(studentName,sex,birthday,tel)
VALUES('张三','男','1993-9-20','18200192671');
INSERT INTOt_student(studentName,sex,birthday,tel)
VALUES('猪八戒','男','1990-01-01','12345678909');
INSERT INTOt_student(studentName,sex,birthday,tel)
VALUES('孙悟空','男','1993-01-02','11111111111');
INSERT INTOt_student(studentName,sex,birthday,tel)
VALUES('沙和尚','女','1998-01-03','22222222222');
--
添加多条记录
INSERT INTOt_student(studentName,sex,birthday,tel)
VALUES('周杰伦','男','1979-8-29','88888888888'),
('李宇春','男','1999-8-29','13843756843'),
('屎户狗','男','1980-4-30','13790976754'),
('狗屎户','男','1980-4-30','15690976754'),
('户狗蛋','男','2000-3-15','15883948756');
--
删除姓户的学生
只能删除第一个字是户的名字
DELETE FROM t_student WHERE studentName LIKE '户%';
--
删除所有带户字的名字
DELETE FROM t_student WHERE studentName LIKE '%户%';
--
删除id=1的学生
DELETE FROMt_student WHERE id=1;
--
删除周杰伦
DELETE FROM t_student WHERE studentName='周杰伦';
--
修改周杰伦的电话
UPDATE t_student SET tel='15909235646' WHERE studentName='周杰伦';
--
同时修改周杰伦的电话和生日
UPDATE t_student SET tel='18200186756',birthday='1993-09-16' WHEREstudentName='周杰伦';
--
修改孙悟空的性别
UPDATE t_student SET sex='女' WHEREstudentName='孙悟空';
--
查询所有的男生
SELECT * FROM t_student WHERE sex='男';
--
查询所有名字里有户的学生
SELECT * FROM t_student WHERE studentName LIKE '%户%';
--
查询姓张的两个字的学生
SELECT * FROM t_student WHERE studentName LIKE '张_';
--
查询所有电信用户的学生
SELECT * FROMt_student WHERE tel LIKE '18%';
--
查询姓户的男生
SELECT * FROM t_student WHERE studentName LIKE '户%' AND sex='男';
--
查询90后的学生
SELECT * FROMt_student WHERE birthday >='1990-01-01' AND birthday<'2000-01-01';
--
查询所有的移动用户
SELECT * FROMt_student WHERE tel LIKE '13%' OR tel LIKE '15%';
--
查询第三条到第五条记录
第一个表示从第几条开始,第一条是0
--
第二个参数表示显示几条
SELECT * FROMt_student LIMIT 3,3;
--
按年龄排序 asc升序 desc降序
默认是升序
SELECT * FROMt_student ORDER BY birthday;
--
查询年龄最小的学生
SELECT * FROMt_student ORDER BY birthday LIMIT 0,1;
INSERT INTO t_student(studentName,sex,birthday) VALUES('猪刚鬣','男','1972-01-9'),
('天蓬元帅','女','1995-06-30');
--
查询没有手机的学生
SELECT * FROMt_student WHERE tel IS NULL;
--
查询id为3和5、8的学生
SELECT * FROMt_student WHERE id IN(3,5,8);
--
查询所有学生的性别 DISTINCT表示去除重复记录
SELECT DISTINCT sexFROM t_student ;
数据分组
HAVING和WHERE区别:
二者都是过滤条件,WHERE运行在分组前,因此不能执行任何聚合函数。HAVING是运行在分组后,只能用做聚合函数的过滤。
SQL执行顺序:
第一步:执行FROM
第二步:WHERE条件过滤
第三步:GROUP BY分组
第四步:执行SELECT投影列
第五步:HAVING条件过滤
第六步:执行ORDER BY排序
在分组查询中,能够查询的字段,只能是分组字段和聚合函数。
相关文章推荐
- 数据库
- Oracle的存储过程编程总结
- Redis基础教程第1节 Ubuntu Linux 上安装Redis
- mysql优化20条
- 使用navicat for mysql导出数据表结构及表数据
- MySQL入门01-MySQL源码安装
- NOSQL《一》之MongoDB的理解
- SQL Server 2008 完全卸载
- SQL数据库设计(二) -- 物理设计
- MySql数据库第一天
- MySQL中optimize优化表
- Sqlyog 8.32企业版注册码
- group by 与 distinct 的那些事
- 数据库系统概念笔记-引言
- 完整java开发中JDBC连接数据库代码和步骤
- SQL SERVER 动态查询
- azure云上 在线将oracle单实例扩展成oracle dataguard高可用集群的详细过程
- MySQL学习
- redis实现mybatis二级缓存
- 在同一台机器上源码安装第二个mysql