日期:2014-05-16 浏览次数:20637 次
今天我把前四章的数据库操作总体写下来,总的概括就是建、查、改、删四个要点;
一、首先是创建数据库, create database 数据库名;
查看所有数据库 show databases;
显示创建数据库的定义信息:show create database 库名
其次修改数据库,但只能修改其参数
alter database 库名 character set gb2312 collate gb2312_chinese_ci;
最后删除数据库
drop database 库名;
如果不知道自己是否删除了某个库:drop database if exists 库名;
二、数据库下面是建表
首先注明是哪一个库:use 库名;
创建表
create table 表名 (
字段名 数据类型 not null(不能为空) primary key(主键);
。。。。。。
);
例:use mybusy;
create table xs(
学号 char(6),
姓名 varchar(8),
年龄 int(2),
性别 char(2)
index ind_name(name)
);
这个是新学的索引,在创建表的时候可以直接创建索引;
这就创建好了一个表,
如果文字不能识别,必须改一下默认的参数,由utf8 改为gb2312;
set character_set_client=gb2312;
set character_set_results=gb2312;
查看表 数据 : desc 表名;
修改表结构
alter table 表名;
add 字段名 类型(宽度) 增加字段
modify 旧字段 类型 修改旧字段
drop 字段名 删除字段
修改表名
Rename table 旧名 to 新名
复制表
create table 表名 like 表名1
删除表
drop table 表名;
三、插入表记录
insert into 表名 values (记录。。。。。);
例如:insert into xs values('0001','张三',20,'男');
查询表记录:select * from 表名;//查看表的所有数据;
也可以查询表的单个数据
select 学号,姓名 from xs;
还可以给列加标题
select 学号 as 新学号, 姓名 from xs;
case 语句: 替换查询中的结果;
select 学号,姓名,case
when 性别=1 then '男'
when 性别=0 then '女'
end as 性别
from xs;
还可以 计算 列
select 学号,姓名,成绩+10 as 新成绩 from xs;
(给xs表的成绩列加了10分,改成新成绩);
where子句
查看不是1990年出生的学生的姓名;
select 姓名 from xs
where 出生日期<'1990-01-01' or 出生日期>'1990-12-31';
select 姓名 from xs
where not(出生日期>='1990-01-01' and 出生日期<='1990-12-31');
select 姓名 from xs
where 成绩<80 and 成绩>60;
还有between子句 :select 姓名 from xs
where 成绩between 60 and 80;
还有not between,与刚才相反;
查看产地是广州,上海,北京的产品信息
一般形式:select * from product
where 产地='广州' or 产地='上海' or 产地='北京';
in子句: 产地 in ('广州','上海','北京')
查看关键字与列表中的任何一个值匹配,就返回true
not in: 产地 not in ('广州','上海','北京')
模糊查询 匹配符:% _
%:任意多个任意字符
_:任意单个字符
like运算符
查询姓李的学生
select 姓名 from xs
where 姓名 like '李%';
distinct去掉重复的行:select distinct 专业名 from xs;
order by 子句:
升序:asc (默认)
降序:desc
imit子句:限制结果集中的行数
一般limit子句放在select语句的最后
limit 3 :表示返回结果集的前面3条记录
limit 2,5:表示返回从第3行开始的5条记录
having 与where的区别:where是对原始记录进行挑选,跟在from后。
select * from 表名
where 条件(满足的条件)
group by 字段名(按字段名进行分组)
having 条件(对分组后的记录进行挑选)
order by 字段名(升序:asc (默认)降序:desc)//如果是按多个字段排序,先按第一个字段排,当第一个字段的值相同时,在按第二个排。
limit 数字(返回查看的前几行)
查询平均分是大于77的课程号,和相应的平均分。
select 课程号,avg(成绩) as 平均分
from xs_kc
group by 课程号
having avg(成绩)>77;
查询选修了2门课程以上的学生学号。
select 学号
from xs_kc
group by 学号
having count(*)>2;
聚合函数:
count(*):统计记录的条数
count(字段名):统计字段中有值的记录个数。(不考虑null)
count(distinct