MySQL使用(一)

使用SQL


⒈ SQL对数据库进行操作
⑴ 创建数据库
create database 数据库名称 [character set 字符集 collate 字符集校对规则];


⑵ 查看数据库
查看数据库服务器中所有的数据库:show databases;


查看某个数据库的定义信息: show create database 数据库名称;


⑶ 修改数据库
alter database 数据库名称 character set 字符集 collate 校对规则;


⑷ 删除数据库
drop database 数据库名称;


⑸ 其他数据库操作
切换数据库:use 数据库名称;


查看当前正在使用的数据库:

⒉ SQL对数据库表进行操作
⑴ SQL创建表
① 语法:create table 表名称(字段名称 字段类型(长度) 约束,字段名称 字段类型(长度) 约束…);
② 字段类型:一个实体对应一个表,一个实体属性对应表的一个字段。

② char和varchar的区别
* char代表是固定长度的字符或字符串。定义类型char(8),向这个字段存入字符串hello,那么数据库使用三个空格将其补全。
* varchar代表的是可变长度的字符串。定义类型varchar(8), 向这个字段存入字符串hello,那么存入到数据库的就是hello。

④ datetime和timestamp区别
* datetime就是既有日期又有时间的日期类型,如果没有向这个字段中存值,数据库使用null存入到数据库中
* timestamp也是既有日期又有时间的日期类型,如果没有向这个字段中存值,数据库使用当前的系统时间存入到数据库中。

⑤ 约束

⑥ 建表语句示例:

create database web_test1;
use web_test1;
create table user(
	id int primary key auto_increment,
	username varchar(20) unique,
	password varchar(20) not null,
	age int,
	birthday date
);

⑵ SQL查看表
① 查看某个数据库下的所有的表
语法:show tables;


② 查看某个表的结构信息
语法:desc 表名;


⑶ SQL删除表
drop table 表名;


⑷ SQL修改表
① 修改表:添加列
alter table 表名 add 列名 类型(长度) 约束;


② 修改表:修改列类型,长度和约束
alter table 表名 modify 列名 类型(长度) 约束;


③ 修改表:删除列
alter table 表名 drop 列名;


④ 修改表:修改列名称
alter table 表名 change 旧列名 新列名 类型(长度) 约束;

⑤ 修改表:修改表名
rename table 表名 to 新的表名;


⑥ 修改表:修改表的字符集
alter table 表名 character set 字符集;

⒊ SQL对数据库表的记录进行操作
⑴ SQL添加表的记录
① 语法:

② 注意事项
值的类型与数据库中表列的类型一致。
值的顺序与数据库中表列的顺序一致。
值的最大长度不能超过列设置最大长度。
值的类型是字符串或者是日期类型,使用单引号引起来。
③ 添加记录
添加某几列:insert into user (id,username,password) values (null,'aaa','123');


添加所有列:insert into user values (null,'bbb','123',23,'1993-09-01');


④ 添加中文记录


备注:直接向数据库中插入中文记录会出现错误!!!
解决方法:
    show variables like '%character%';  --查看数据库中与字符集相关参数:
    需要将MySQL数据库服务器中的客户端部分的字符集改为gbk。
    找到MySQL的安装路径:my.ini文件,修改文件中[client]下的字符集


重新启动MySQL的服务器:services.msc
⑵ SQL修改表的记录
① 语法: update 表名 set 列名=值,列名=值 [where 条件];
② 注意事项
值的类型与列的类型一致。
值的最大长度不能超过列设置的最大长度。
字符串类型和日期类型添加单引号。
③ 修改某一列的所有值


④ 按条件修改数据


⑤ 按条件修改多个列


⑶ SQL删除表的记录
① 语法:
    delete from 表名 [where 条件];
② 注意事项
删除表的记录,指的是删除表中的一行记录。
删除如果没有条件,默认是删除表中的所有记录。
③  删除某一条记录


④ 删除表中的所有记录


备注:删除表中的记录有两种做法!!!
方法一:delete from user;
删除所有记录,属于DML语句,一条记录一条记录删除。事务可以作用在DML语句上的
方法二:truncate table user;
删除所有记录,属于DDL语句,将表删除,然后重新创建一个结构一样的表。事务不能控制DDL的

⑷ SQL查看表的记录
① 基本查询
语法:select [distinct] *|列名 from 表 [条件];
环境的准备:

create table exam(
	id int primary key auto_increment,
	name varchar(20),
	english int,
	chinese int,
	math	int
);

insert into exam values (null,'张三',85,74,91);
insert into exam values (null,'李四',95,90,83);
insert into exam values (null,'王五',85,84,59);
insert into exam values (null,'赵六',75,79,76);
insert into exam values (null,'田七',69,63,98);
insert into exam values (null,'李老八',89,90,83);

查询所有学生考试成绩信息


查询所有学生的姓名和英语成绩


查询英语成绩信息(不显示重复的值)


查看学生姓名和学生的总成绩


别名查询


② 条件查询


查询李四学生的成绩:


查询名称叫李四学生并且英文大于90分


查询姓李的学生的信息

like可以进行模糊查询,在like子句中可以使用_或者%作为占位符。_只能代表一个字符,而%可以代表任意个字符。
	* like ‘李_’		:名字中必须是两个字,而且是姓李的。
	* like ‘李%’		:名字中姓李的学生,李子后可以是1个或任意个字符。
	* like ‘%四’		:名字中以四结尾的。
	* like ‘%王%’	:只要名称中包含这个字就可以。


查询英语成绩是69,75,89学生的信息


③ 排序查询(使用order by 字段名称 asc/desc;)

查询学生信息,并且按照语文成绩进行排序:


查询学生信息,并且按照语文成绩倒序排序:


查询学生信息,先按照语文成绩进行倒序排序,如果成绩相同再按照英语成绩升序排序


查询姓李的学生的信息,按照英语成绩降序排序


④分组统计查询(聚合函数使用)
sum();
获取所有学生的英语成绩的总和:


获取所有学生的英语成绩和数学成绩总和:


查询姓李的学生的英语成绩的总和


查询所有学生各科的总成绩:


count();
获得学生的总数


获得姓李的学生的个数


max();
获得数学成绩的最高分:


min();
获得语文成绩的最小值


avg();
获取语文成绩的平均值


⑤分组查询
语法:使用group by 字段名称;
环境准备

create table orderitem(
	id int primary key auto_increment,
	product varchar(20),
	price double
);
insert into orderitem values (null,'电视机',2999);
insert into orderitem values (null,'电视机',2999);
insert into orderitem values (null,'洗衣机',1000);
insert into orderitem values (null,'洗衣机',1000);
insert into orderitem values (null,'洗衣机',1000);
insert into orderitem values (null,'冰箱',3999);
insert into orderitem values (null,'冰箱',3999);
insert into orderitem values (null,'空调',1999);

按商品名称统计,每类商品所购买的个数:


按商品名称统计,每类商品所花费的总金额:


按商品名称统计,统计每类商品花费的总金额在5000元以上的商品


按商品名称统计,统计每类商品花费的总金额在5000元以上的商品,并且按照总金额升序排序


总结:S(select)… F(from)…W(where)…G(group by)…H(having)…O(order by);


 

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