分类: 数据库开发技术
2015-06-22 15:01:30
1.控制台基本操作:
show databases ; 查看所有的数据库
use 数据库名称; 使用某数据库
select databas(); 查看当前使用数据库名称
show tablses; 查看数据库下所有的表
desc 表名; 查询表的结构
2.数据库的定义:
DDL , 数据定义语言,(结构有关) : create 创建 , alter 修改 , drop 删除
DML , 数据操作语言,(数据有关) : insert 录入,update 修改 , delete 删除
DQL , 数据查询语言, select 查询
set names gbk; ----- 快速设置客户端相关三个编码集 (临时 )
修改mysql 配置文件,永久改变客户端编码集 ----- mysql/my.ini
2.1,DDL数据库的结构定义:
数据库:
create datebase 数据库名称; 创建数据库
dorp database 数据库名称; 删除数据库
数据表:
char(n); 固定长度字符串; 如果长度不够用空格替补
varchar(n); 可变长度
int 整型
doule(m,d)
numeric(m,d)
create table 表名( 字段1 字段描述,
字段2 字段描述
); 创建数据表
添加字段 alter table 表名 add column 字段 字段描述
修改字段 alter table 表名 change column 修改的字段名称 新的字段描述
删除字段 alter table 表名 drop column 字段名称
truncate 表名; 删除表里面全部数据
2.2.DML数据操作语句:
录入数据:
这种方法可以指定录入数据的字段,不用全部录入
insert into 表名(字段1,字段2....)values (值1,值2......)
这种方法默认录入全部数据,按照对应的字段录入
insert into 表名 values(值1,值2.....)
跟新数据:
update 表名 set 字段=值,字段=值.....where 条件
删除数据:
delete from 表名 where 条件
2.3.DQL 数据库查询语句
基本查询
查询全部:select表示查询,* 表示 全部,from表示来自哪里
查询 所有字段 来自 某个表
select * from 表名
查询指定字段的数据:
select 字段1,字段2.... from 表名
查询指定字段的数据并添加条件:
select 字段1,字段2.... from 表名 where 条件
查询数据,排除重复的数据:
select distinct 字段1,字段2.... from 表名 where 条件
select 列名运算表达式 from 表名 (如在查询的列进行运算)
select 列名 as 列别名 from 表名 (as 在查询的时候可以省略)
区间查询(小值在前,大值在后,数据类型)
select * from 表名 where between 字段<值 and 字段<值;
固定值查询in(set),
select * from 表名 where 字段 in(值,值,值....)
模糊查询:like %表示所有,下划线表示占位符,一个下划线表示一个字
如下,表示张的前面有一个字张的后面没有字数长度限制
select * from 表名 where 字段 like "%_张%"
判断一列是否为空 is null
select * from 表名 where 字段 is null
判断一列是否不为空 is not null
select * from 表名 where 字段 is not null
逻辑运算中 and 、or (and优先执行,缩小查询的范围)
select * from 表名 where 字段判断 and 字段判断 or 字段判断
order by排序查询(默认是asc(升),desc降,多个排序,按照最后一个排序)
select * from 表名 where 查询条件 order by 列名 --升序默认可以不写
聚集函数(分组函数)
count返回查询结果记录条数
select count(字段) from 表;
sum 对一列的数据求和,sum求和时 null不运算
select sum(字段) from 表;
avg对一列数据求平均值
select avg(字段) from 表;
max和min 对一列数据 计算最大值和最小值
select max(字段) from 表;
select min(字段) from 表;
3.数据库的高级查询;
3.1约束,完整的约束有五种
1,主键约束 primary key 原来表示数据表记录的唯一标识,唯一和非空
2,唯一约束 unique 表示该字段取值唯一,数据不能重复
3,非空约束 not null 表示该数据的字段数据不能为空
4,外键约束 foreign key 两张表关联时使用,外键约束引用另一表主键
mysql不支持 5,条件约束 check chwck age < 100表里面数据不能大于100 mysql
3.2数据表与数据表之间关系三种:实体之间关系 多对多、一对多、一对一
建表原则:多对多关系,必须引入第三张数据表,同时引入另两张实体表主键作为外键
建表原则:一对多关系,在多的一方添加一方 主键作为外键
建表原则:一对一关系,可以在任何一方添加 另一方主键作为外键
3.4笛卡尔积
select * from 表1,表2。当两个表数据进行关联查询的时,第一张表的数据会去匹配第二张表的每一条数据,如:两张表各有十条数据,那么查询出来就是10x10=100
解决笛卡尔积的方法:链接查询(内链接,外连接)
3.4.1内连接查询:
语法:select * from a inner join b on A.A_ID = B.A_ID
简化:select * from a,b where A.A_ID = B.A_ID (返回两个表的id相同的数据,如果两张表的id不相等就不显示)
3.4.2外连接查询:(左外连接、右外连接、全外连接)
左外连接:select * from a left outer join b on A.A_ID = B.A_ID ;
右外链接:select * from a right outer join b on A.A_ID = B.A_ID ;
mysql不支持 全外链接:select * from a full outer join b on A.A_ID = B.A_ID ;
mysql支持 全外链接:select * from A left outer join B on A.A_ID = B.A_ID
union
select * from A right outer join B on A.A_ID = B.A_ID;