数据的存储仓库
net stop mysql //停止mysql服务
net start mysql //启动mysql服务
//方式一
mysql -u用户名 -p密码
//方式二
mysql -u用户名 -p
再输入密码
mysql -u用户名 -p密码 -h地址
create database 数据库名 [character set 码表]; //创建数据库,如果已存在会报错
create database if not exists 数据库名 [character set 码表]; //创建数据库,如果存在就不创建
show databases; //查看数据库
show create database 数据库名; //显示数据库创建的详情
select database(); // 查看正在使用的数据库
drop database 数据库名; //删除数据库,如果不存在会报错
drop database if exists 数据库名; //删除数据库,如果存在就删除
alter database 数据库 character set 码表; //修改指定数据库的码表
use 数据库名;
注意:SQL 语句要以”;”结束
use 数据库名; //选择使用的指定数据库
show tables [in 数据库名]; //列出所有的表
//创建数据库的表
create table 表名(
字段1 数据类型1,
字段2 数据类型2,
...
);
create table student( id int, name varchar(7), brithday datetime );
insert into student values(1,'gouwa','1990-12-12 12:12:12');
select * from student;
show create table 表名; //查看创建表的语句
desc student; //查看表的结构
drop table 表名; //删除一个表
alter table 表名 character set 码表; //修改表使用的字符集
alter table 表名 add 新字段 数据类型; //添加一个字段
alter table 表名 modify 字段 新数据类型; //修改字段的数据类型
alter table 表名 drop 字段; //删除指定的字段
alter table 表名 rename to 新表名;//修改表名
//修改字段名?
show variables like 'charac%';//查看数据库中与字符相关的变量
set character_set_client=gbk;//告知服务器,客户端使用的码表
set character_set_results=gbk;//告知服务器,发给客户端数据时使用的码表
set命令设置的变量都是临时的,窗口关闭即失效
要想长久,应修改配置文件(/安装目录/my.ini)里的
default-character-set=gbk;
这相当于
insert into 表名(字段1,字段2) values(值1,值2);//nullable的数据可以不插入
insert into 表名 values(值1,值2,值3);//所有字段都要插入
delete from 表名; //删除表中所有数据,逐行删除记录
truncate 表名; //清除表的所有数据,复制表结构->销毁表->重建表结构
delete from 表名 where 条件; //删除表中指定的数据
update 表名 set 列名=新值 [, 列名2=新值] where 条件;
查询数据不会改变表中数据。
普通查询
select [distinct] * | [字段1|表达式1 [[as] 别名],字段2 | 表达式2 [[as] 别名],...] from 表名;
例子:
select name 姓名,english 英语成绩 from students;
select distinct english 英语成绩 from students;
select name 姓名,(english+math+chinese) 总分 from students;
条件查询where
//查询总分大于200分的学生
select name 学生,(english+math+chinese) 总分 from students where (english+math+chinese)>200;
//查询数学有成绩的学生
select * from students where math is not null;
//查出所有李姓的学生
select * from where name like '李%';
排序
select * from 表名where xxx order by 字段1 [desc|asc] [,字段2 [desc|asc]];
//desc 降序,asc 升序
//order by语句要位于select语句末尾
//可以多条件组合排序
//可以使用别名排序
//按数学成绩倒序输出
select name 姓名,math 数学 from students order by math desc;
//组合排序
select * from students order by chinese desc,math desc;
//别名排序
select name 姓名,(english+math+chinese) 总分 from students order by 总分 desc;
聚合函数(针对列的操作)
用聚合函数查询结果只有一个。
//统计一个班的三门成绩的总和
select (sum(math)+sum(english)+sum(chinese)) from students;
//统计一个班的语文成绩平均分
select sum(chinese)/count(chinese) from students;
或
select avg(chinese) from students;
如果条件数据是分组之前就知道的,那么条件筛选使用where语句即可
否则使用having语句,因为having可以使用聚合函数!
//查询每个工种的人数
select job,count(job) from emp group by job;
//统计工作岗位人数大于等于3人部门
select job,count(job) from emp group by job having count(job)>=3;
limit(MySQL方言)
作用:限定查询结果的起始页以及总行数
格式:LIMIT 开始查询的索引,查询的个数
alter table emp add primary key(id);//添加主键
alter table emp drop primary key;//删除主键
alter table emp change id id int auto_increment;//设置主键自动增长
alter table emp change id id int;//删除主键自动增长
alter table emp change id id int not null;//设置主键非空
alter table emp change id id int;//删除主键非空
//创建外键
constraint 外键名称 foreign key(要约束的字段) references 引用表(字段);
//删除外键
alter table 表名 drop foreign key 外键名称;
//添加外键
alter table 表名 add constraint 外键名称 foreign key(要约束的字段) references 引用表(字段);