mysql

来源:互联网 发布:笨马网络 编辑:程序博客网 时间:2024/06/08 11:15
1.mysql概述
数据库的定义:数据库是一种文件系统,且只能通过sql语句访问
关系型数据库:关系型数据库存储的是实体的信息与实体与实体之间的联系

常用的关系型数据库有:
mysql 小型数据库,oracle
oracle 大型数据库,oracle
SQLServer 中型数据库,微软
DB2 大型数据库,IBM
SyBase 已被淘汰
SqLite 小型数据库,嵌入式

2.Sql
定义:结构化查询语言
特点:非过程性语言:一条语句就会有一个运行结果
分类:
DDL:数据定义语言
create Database ** character set ** collate
create table ** (
sname int,
sage varchar(32)
)

alter database olddatabase newdatabase character set *** collate

DML:数据操纵语言
insert into tableName(*,*,*) Values(*,*,*)
update tableName set columnName=* where
delete from tableName where

DCL:数据控制语言
grant,if

DQL:数据查询语言
select

3.操作数据库语法

创建数据库
create database db3 character set utf8 collate utf8_bin;

查看数据库
show databases();

查看当前数据库的使用信息;
select();

查看数据库的创建信息
show create database ***;

删除数据库
DROP DATABASE **;

修改数据库的属性
ALTER DATABASE stdb CHARACTER SET utf8 COLLATE utf8_bin;

使用数据库
use ***;

4.操作表
创建表:
create table *** (
name varchar(32),
age int
)

修改表名:
RENAME TABLE student TO sstudent

查看所有表:
show tables;

查看表结构:
desc ***;
表的删除:
drop table ***;
删除表,又重新建
trancate table ***;

修改表的列名:
ALTER TABLE student CHANGE sid ssid INT(11); ;

修改表的列的数据类型
ALTER TABLE student MODIFY ssid VARCHAR(11);

删除表的列
ALTER TABLE student DELETE ssid VARCHAR(11);
添加外键:
ALTER TABLE sstudent ADD FOREIGN KEY(uid) REFERENCES userinfo(uid)

约束:
primary key 主键(默认唯一,非空)

unique 唯一

not null 非空

5.操作表数据
插入数据:
insert into *** (**,**) values (**,**)

删除数据:
delete from ** where **

更新数据
update *** set **=** where

查询表数据
select * from **
6.其它标识符
条件关键字
= , > , >= , < , <= , <>

like中可以使用占位符:
_ :匹配一个字符
% :匹配多个字符

in的使用:
**.cid in (select cid from **)

条件关键词
and or not

not in
not null
排序关键词
order by :
默认升序
desc 降序
asc 升序

聚合函数
count() 一般配合group by 使用,查询的分组后的每个组的记录数
sum()

max()

min()

avg()

group by 分组

7.数据库的多表设计
一对多
多的一方持有单一的一方的主键作为外键
多对多
建立一张第三方的表,分别持有两张表的主键作为外键
一对一
有两种方式进行关联
主键对应:主键一一相对应
唯一外键对应:一方持有另一方的主键作为外键,且设置为唯一
8.多表查询sql
交叉连接:
select * from A,B 获取的是两个集合的笛卡尔集

内连接: 获取的是两个表之间满足查询条件的交集

显示内连接: inner join inner可以省略
select * from A inner join B on A.cid = B.cid

隐式内连接:
select * from A,B where A.cid = B.cid

外连接:
左外连接: 获取的是左边表的全部和满足查询条件的两张表的交集
left outer join
select * from A left outer join B on A.cid = B.cid

右外连接: 获取的是右表的全部与满足查询条件的两张表的交集
SELECT * FROM department RIGHT OUTER JOIN class ON department.did = class.did

子查询
select * from student where cid in (select cid from class)