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相等的结果