1、数据库语句
1.1、创建数据库
create database 数据库名称 character set 字符集名称 ;
create database 数据库名称 character set 字符集名称 collate collate名称(具体查询API)
例:create database mydb1 character set utf8 collate utf8_general_ci;
1.2、显示数据库
show database; //显示所有数据库
show create database 数据库名称;//显示创建数据库的语句
所有数据库语句 都要以分号结束;
1.3、删除数据库语句
drop database [if exists] db_name
例:drop database mydb1;
1.4、修改数据库
alter database 数据库名称 要求改的值
例:alter database mydb1 character set gbk;
1.5、切换要使用的数据库
use db_name;//切换到要使用的数据库
1.6、查看当前选中或使用的数据库
select database();//注意要加括号
2、表语句
2.1、创建表
create table table-name(); //建表语句用圆括号, 中间的参数定义用逗号隔开
create table my_table(
id int primary key auto_increment,
name varchar(30) not null,
age int,
resume varchar(100),
birthday date
);
- primary key 主键定义约束,唯一且非空
- auto_increment 自增长
- not null 非空
- unique 唯一
2.2、显示表
- 显示当前数据库所有表: show tables;
- 显示当前表的定义:desc 表名
- 显示当前表的具体数据: select * from 表名
2.3、修改表
alter table 表名 具体功能的关键字(增加、修改、删除列、修改字符集)
alter table mytable add gender varchar(30);
alter table mytable modify gender varchar(55);
alter table mytable drop gender;
alter table mytable set character utf8;
alter table mytable change name username varchar(60);修改列名, 旧名后面直接跟上新名
rename table mytable to all_table;//修改表名
-----以上是DDL语句, 用来定义数据库的表------
-----以下是DML语句, 用来对修改数据库的表,主要是增删改-----
2.4、增加数据
insert into 表名
例: insert into mytable (id, name, birthday,resume,salary) values(1,'lisi','1989-1-1','my resume',10000);
或: insert into mytable values(1,'lisi','1989-1-1','my resume',10000);
或: insert into mytable (id, salary) values(1, 10000);//只添入部分必填项
2.5、修改数据
update 表名 set 列名=,列名= [where 从句]
update employee set salary=20000;//将所有员工薪水修改为20000
update employee set salary=18000 where id=1; //将id=1的员工的薪水修改为18000
2.6、删除数据
delete from 表名 [where 从句]
delete from employee where='lisi';删除李四的所有数据
delete from employee; //删除整个表的数据
trunate employee; //删除整个iao的数据, 先摧毁表, 再重新创建
----以下是DCM语句, 操控数据库的表-----
2.7、查询数据
1、select 只负责查询数据库并显示结果, 并不会修改数据库
select * from table where ....
select name as 姓名,math as 数学,chinese as 语文 from exams where math>=90 and chinese>=90;//as可以省略掉
select * from exams where math between 80 and 90;
2.统计数据 count()
select count(*) from where math>90; //统计数学成绩大于90的数量
3、sum() 求和运算
select sum(math+chinese) as 总分 from exams;
4、avg()平均分 max/min最大最小值
5、group by 对某一类进行归类
select product, sum(price) from users where sum(price)>100 group by product;
6、对分类 筛选出的结果 继续筛选 having
select product,sum(price) from orders group by product having sum(price)>100;
7、where筛选和having筛选的区别
where筛选是在分组前筛选, having筛选是在分组后筛选
where筛选后不可接聚合函数, having后可以接聚合函数
8、书写顺序
s..f..w..g...h...o
9、多表设计
使两张表发生关系, 添加外键约束
alter table 表1 add foreigh key(dept_id) reference 表2(id); //在表一中增加外键约束 dept_id, 其中dept_id的值来自于表二的id
多表设计的原则
一张张的表设计时,为了保证数据的有效性和完整性, 该如何去建表
现实生活中, 实体之间的关系:
一对多:
为了准确描述这种关系, 那么会在 建表时, 在 多方 建一个 外键约束,
这个外键约束的值来自于 一方的 主键
多对多:
需要引入第三张关系表,将两张表的主键拿过来当作外键约束,这样关系表就有了
多个外键 了.
一对一:通常完全可以将两张表的数据合并到一起…
笛卡尔乘积:表一三个数, 表二4个数, 那么存在的可能组合就是 3*4 = 12种结果
select * from 表1,表2 where 表1.id=表二.id; //筛选出 两个id相等的结果