放开这颗白菜让我来

放开这颗白菜让我来

Structure Query Language
结构化		查询		语言

MySQL 软件解压使用
mysql5解压到D盘的根目录
【说明】如果计算机没有D盘,	(1)需要修改Mysql.bat(有两处需要修改)
					(2)需要修改my.ini(有两处需要修改)

【结果】:D:/mysql5/bin
(1)双击Mysql.bat文件,会弹出一个cmd(命令提示符界面)
(2)windows键 + R,输入cmd,点击回车
	出现了一个命令提示符界面
	【1】进入任意盘符的指令: 盘符+英文冒号(:)
		例如:去D盘
			D: 回车
	【2】进入任意子目录(子文件夹)
		例如:进入mysql5
			cd mysql5
			[说明]:cd == change directory(切换目录)
		再进入bin目录
			cd bin
			[说明]:bin == binary(二进制)
	【3】可以使用dir查看当前文件夹下都包含什么文件(和文件夹)
		dir 回车
	【4】进入mysql环境
		mysql -uroot -pmysql
		[说明]	-u 表示	user(用户)
			 	-p 表示 	password(密码)

	【5】创建我们自己的数据库(物理存在的文件)
		create database 库名称;
		[说明]在计算机上物理的创建一个文件夹(包含一个 db.opt)
		opt--词根:选择
		option	选项
		Adopt	选中;收养

	【6】进入我们创建的数据库(使用我们创建的数据库)
		use 库名称;

	【7】在库中创建表(表格)
		create table student (code int, name char(90));
		[说明]:在计算机的库文件夹中,物理的创建了一个student.frm
	【7.1】如果需要给表增加一个列
		alter table student add sex char(8);
						            增加	 性别	类型(长度)
	【7.2】需要删除一个表
		drop table student;
	【7.3】使用desc指令,查看表的结构
		desc student;

	【8】向表中存储数据
		insert into student (code,name) values (1001,'Alex');
		insert into student values (1002, 'Bomb');

	【9】查找表中的数据
		select code,name from student
		select * from student 表示查全部的列(字段 == column)

	【10】修改(如果已经插入的记录需要修改信息)
		update student set sex = '男' where code = 1002
		update student set sex = '男' where name = 'Bomb'
		update student set sex = '男' where code = 1002 and name = 'Bomb'

	【11】删除一个记录
		delete from student where sex = 'male';
		【**】如果删除时,依赖的是一个NULL
			delete from student where code is NULL;

	【12】我们可以对记录进行约束
		(1)unique可以对当前的列设置唯一值(这个列的数据不能重复)
		create table student (code int unique, name char(30), sex char(8));

		(2)not null 非空约束
		create table student (code int not null, name char(30), sex char(8));

		(3)既 not null 又 unique
		create table student (code int not null unique, name char(30), sex char(8));
		create table student (code int unique not null, name char(30), sex char(8));

		(4)如果一个表中有两个列是(非空 && 唯一)的
		create table student (code int unique not null, name char(30) not null unique, sex char(8));

		(5)主键:主要的索引(如果我们的查询条件是主键列,查询速度是非常快的)
		create table student (code int primary key, name char(30) not null unique, sex char(8));
			[说明]:如果没有认为的指定主键,则第一个not null 并且 unique的列,就是主键所在的列

		(6)指定一个默认值(default '值')
		create table student (code int primary key, name char(30) not null, sex char(8) default 'female');

	【13】带有条件的查询
		(1)如果只需要查询到male,需要在查询的时候指定条件
		select * from student where sex = 'male';

		(2)多个条件组合(and与 / or或)
		select * from student where sex = 'male' and name = 'mary';

		(3)按照年龄排序(默认是升序)
		select * from student order by age;
		select * from student order by age asc;
		select * from student order by age desc; 降序

		(4)在条件过滤的基础上去排序
		 select * from student where sex = 'male' order by age desc;

		 (5)可以进行分组
		 select sex,count(name) from student group by sex;
		 select sex,max(age) from student group by sex;
		 select sex,min(age) from student group by sex;
		 select sex,avg(age) from student group by sex;
		 select sex,sum(age) from student group by sex;
		 [说明]:count、max、min、avg、sum都叫做聚合函数(在整体里面求个体)
		 【结论】如果使用了分组(group by)。则只能查询被分组的列,及其他列的聚合函数

		(6)使用不等号: > >= <= < != <>
		select * from student where age > 20;

		(7)如果结果过多,可以只要一部分
		select * from student limit start, count
									从那开始	取出几个

-------------------------------------------------------
前条件:where		在整个表格(的数据)中过滤
后条件:having		表示分组之后的结果再过滤

列 like '%A%'

嵌套查询
select count(*) from (select distinct kind from goods where trademark = 'Apple') ss123

(1)子查询:select distinct kind from goods where trademark = 'Apple'


(2)嵌套
select sid from student where sname = '张三'; 查到学号是1
select * from achievements where course = '语文' and sid = 1
select * from achievements where course = '语文' and sid = (select sid from student where sname = '张三');

(3)连接
select * from student s, achievements a where s.sid = a.sid
select * from student s, achievements a where s.sid = a.sid and s.sname = '张三' and course = '语文';

08-07 06:41