创建数据库
create database db1 ;
create database db1 character set utf8 ; #指定字符集
create database db1 character set utf8 collate utf8_bin; #指定字符集和校对规则
修改数据库
alter database db1 character set utf8 collate utf8_bin;# 修改数据库的字符集和校对规则
查看数据库
show databases ; #查看数据库服务器中有多少数据库
show create database db1 ; #查看创建库的语法
select database(); #查看正在使用哪个库
删除数据库
drop database db1; #删除数据库
数据库表的增删改查
Mysql中的数据类型
public class User{ user
priavte int id ; //int
private String username ; //varchar(20) char(20)
private String pwd; //varchar char
private String sex; //varchar char
private Date birthday; //Date
private Date regTime ; //timestamp datetime
private double account ; //double
}
创建表
建表的语法
create table 表名(字段名1 类型(长度) 约束,字段名2 类型(长度) 约束,....)
mysql中的单表约束:
主键:primary key
唯一:unique
非空:not null
例子:
use db2;
create table user(
id int primary key ,
username varchar(20) unique,
pwd varchar(20) not null ,
sex varchar(10),
birthday date ,
regTime timestamp,
account double(10,2)
);
注意:mysql 数据库中字符串在创建表的时候必须给长度,其他的类型如果不给,都有默认的长度
查看表
1.查看库中有哪些表
show tables ; #查看库中有哪些表
2.查看创建表的语法
show create table 表名;
3.查看表结构
desc 表名;
删除表
drop table 表名 ;
修改表
1.修改表添加列
alter table 表名 add 字段 类型(长度)约束
2.修改表修改列的类型长度约束
alter table 表名 modify 字段名 类型(长度) 约束;
3.修改表,修改列名
alter table 表名 change 旧字段名 新字段名 类型(长度) 约束;
4.修改表的字符集
alter table 表名 character set 字符集
5.重命名表
rename table 旧表名 to 新表名
数据库表数据的增删改查(****)
插入数据
语法
给某几列插入数据:insert into 表名(列1,列2,列3…) values(值1,值2,值3…);
给所有列插入数据:insert into 表名values(值1,值2,值3…);
一次性插入多行数据: insert into 表名values(值1,值2,值3…),(值1,值2,值3…),(值1,值2,值3…)…;
注意事项:
有值的类型要与数据库中列的类型一致。
值的顺序要与列的顺序保持一致。
插入值的长度不能超过列规定的长度。
对于字符串和时间的值,要使用引号括起来。
插入的数据要符合约束
修改数据
update 表名 set 列名1=值1,列名2=值2…[where条件];
注意:如果没有带条件,那么就是把这一列的值都修改了。
删除数据
语法:
delete from 表名 [where 条件]
delete from 表名 和truncate table 表名 两种方式的区别:
delete from 表名:是DML语句,一条一条的删除数据,事务可以作用在DML语句上。
truncate table 表名:是DDL语句,先删除表,再创建一个跟之前表一样结构的新表,事务不能作用在DDL语句上。
查询数据
1.基本查询语句
查询所有列
select * from 表名
查询指定列
select列1,列2…from 表名
2.条件查询 where
比较运算 > >= < <= <> !=
条件并列 and or not
模糊查询 like
in
between and
3.排序
select * from 表名 [where 条件] order by 列名 asc/desc,列名 asc/desc …
ASC : 升序
DESC : 降序
4.分组
group by 分组字段 having
**注意:where子句不能使用聚合函数,如果现在使用带有聚合函数的条件过滤或者分组后过滤,使用having关键字**
5.聚合函数
sum
avg
count
min
max
6.sql语句的基本顺序
select ... from 表名 where 条件 group by 分组字段 having 筛选后条件 order by 排序字段
多表关系与查询(****)
1. 外键约束 foreign key
创建表时如何添加外键
create table 表名(
字段名 类型(长度) 约束,
字段名 类型(长度) 约束,
foreign key (外键字段) reference 关联表(关联字段)
)
在表创建成功之后添加外键
alter table 表名 add foreign key (外键字段) reference 关联表(关联字段)
注意:
1.添加外键时外键指向的表必须存在
2.添加外键时外键指向的字段必须是主键
3.如果表中已经有数据,那么数据必须符合约束
2. 实体之间的关系及建表原则
* 一对多 : 在多的一方创建一个外键指向一的一方的主键
* 多对多 : 创建一个第三方表,这张表最少要有二个字段分别作为外键指向双方的主键
* 一对一
1. 唯一外键对应 : 假设是一个特殊的一对多的关系,在多的一方创建一个外键指向一的一方的主键,并且需要设置外键唯一
2. 主键对应 : 让二张表的主键对应
3. 多表联合查询(*****)
1.连接查询
交叉链接 cross join 二张表的笛卡尔积
SELECT * FROM A CROSS JOIN B
SELECT * FROM A,B
内链接 二张表的交集部分(满足连接条件的数据组合)
显式内连接 inner join
SELECT * FROM A INNER JOIN B ON A.ID = B.ID
隐式内连接
SELECT * FROM A ,B WHERE A.ID = B.ID
外连接 OUTER JOIN OUTER可以省略
左外链接 左表的所有数据,与二张表的交集(左表的所有数据与满足连接条件的数据组合)
SELECT * FROM A LEFT OUTER JOIN B ON A.ID = B.ID
右外链接 OUTER 可以省略 右表的所有数据,与二张表的交集(右表的所有数据与满足连接条件的数据组合)
SELECT * FROM A RIGHT OUTER JOIN B ON A.ID = B.ID
2.子查询 : SQL的嵌套 (一个查询语句,依赖于另一个查询语句的结果)