MySql基础一

来源:互联网 发布:制作电子文档软件 编辑:程序博客网 时间:2024/06/11 10:23

数据库管理

增加: create database 数据库 default character utf8;
删除: drop database 数据库;
修改: alter database 数据库 default character gbk;
查询: show databases / show create database 数据库;

表管理

选择数据库:use 数据库;
增加: create table 表(字段名1 字段类型,字段名2 字段类型……);
删除: drop table 表;
修改:

  1. 添加字段: alter table 表 add [column] 字段名 字段类型;
  2. 删除字段: alter table 表 drop [column] 字段名;
  3. 修改字段类型: alter table 表 modify 字段名 新的字段类型;
  4. 修改字段名称 : alter table 表 change 旧字段名 新字段名 字段类型;
  5. 修改表名称: alter table 表 rename [to] 新表名;

查询: show tables / desc student;

数据管理

增加: insert into 表(字段1,字段2,。。。) values(值1,值2.。。。。);
删除: delete from 表 where 条件;
修改: update 表 set 字段1=值1,字段2=值2…… where 条件;
查询:
所有字段: select * from 表;
指定字段: select 字段1,字段2…. from 表;
指定别名: select 字段1 as 别名 from 表;
合并列: select (字段1+字段2) from 表;
去重: select distinct 字段 from 表;
条件查询
a)逻辑条件 :and(与) or(或)
select * from 表 where 条件1 and/or 条件2
比较条件: > < >= <= = <> between and(在。。。之间)
select * from 表 where servlet>=90;
判断null: is null / is not null判断空字符串: =” / <>”
模糊条件: like
分页查询
limit 起始行,查询行数 起始行从0开始
排序: order by 字段 asc/desc asc: 正序,顺序 desc:反序,倒序
分组查询:group by 字段 分组后筛选: having 条件

MYSQL数据类型

Mysql 主要有数值类型,日期/时间类型和字符串类型

数据约束

什么是数据约束
对用户操作表 的数据进行约束

数据约束类型
非空
作用: 限制字段必须赋值
注意:
1)非空字符必须赋值
2)非空字符不能赋null

Create table student (
Id int,
Name varchar(20),
Gender varchar(20) not null

非空字段必须赋值
唯一
作用: 对字段的值不能重复
注意:
1)唯一字段可以插入null
2)唯一字段可以插入多个null
Create table student(
ID int unique, –唯一
Name varchar(20)

主键
作用: 非空+唯一
注意:
1)通常情况下,每张表都会设置一个主键字段。用于标记表中的每条记录的唯一性。
2)建议不要选择表的包含业务含义的字段作为主键,建议给每张表独立设计一个非业务含义的 id字段。

Create table student (
Id int primary key ,
Name varchar(20)

自增长
Create table student (
ID int(4) zerofill primary key auto——increment, 自增长,从0开始 ZEROFILL 零填充
Name varchar(20)

自增字段可以不赋值,自动增长

外键
作用:约束两种表的数据

    出现两种表的情况:        解决数据冗余高问题: 独立出一张表               例如: 员工表  和  部门表问题出现:在插入员工表数据的时候,员工表的部门ID字段可以随便插入!!!!!使用外键约束:约束插入员工表的部门ID字段值解决办法: 在员工表的部门ID字段添加一个外键约束

部门表
Create table dept(
Id int primary key,
Deptname varchar(20)

员工表
Create table employee(
Id int primary key,
Empname varchar(20),
depId int,
外键约束
Constraint foreignkey references
CONSTRAINT emlyee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id)
– 外键名称 外键 参考表(参考字段)
FOREIGN KEY(deptId) REFERENCES dept(id)  可以外键名称省略

1)被约束的表称为副表,约束别人的表称为主表,外键设置在副表上的!!!
2)主表的参考字段通用为主键!
3)添加数据: 先添加主表,再添加副表
4)修改数据: 先修改副表,再修改主表
5)删除数据: 先删除副表,再删除主表

添加外键
如果表已经存在。通过修改表来添加外键
Alter table 表名 add constraint fk_id (这是外键名称) foreign key (外键字段名) references 外表表名(主键字段名)
删除外键
Alter table 表名 drop foreign key 外键名 ;
级联操作
在有外键约束时,如果希望直接修改或删除主表数据,而不影响副表 ,可以使用级联操作

级联修改: ON UPDATE CASCADE
级联删除: ON DELETE CASCADE

关联查询

交叉链接查询(一般不推荐,产生笛卡尔乘积现象有很多重复的数据)
需求:查询员工及其所在部门(显示员工姓名,部门名称)
Select empname,deptname from employee,dept;

多表查询规则:1)确定查询哪些表 2)确定哪些哪些字段 3)表与表之间连接条件 (规律:连接条件数量是表数量-1)\

内连接查询 只有满足条件的结果才会显示(使用最频繁)
需求: 查询员工及其所在部门(显示员工姓名,部门名称)

Select empname,deptname 确定那些字段
From employee, dept 确定查询的表
Where employee.deptid=dept.id 表与表之间的链接条件

内连接的另外一种语法 (别名)
Select e.empname ,d.deptname
From employee e
Inner join dept d
On e.deptid=d.id

如果需要显示一些不满足的结果需要使用外链接

外链接
左外链接查询
使用左边表的数据去匹配右边表的数据,如果符合连接条件的结果则显示,如果不符合连接条件则显示null
左外连接:左表的数据一定会完成显示,右边的表 ,如果不符合就会显示null
Select d.deptname,e.empname
From dept d
Left outer join emploee e
On d.id=e.deptid ;
右外连接
使用右边表的数据去匹配左边表的数据,如果符合连接条件的结果则显示,如果不符合连接条件则显示null
右外连接:右表的数据一定会完成显示!

Select d.deptname,e.empname
From emploee e
Right outer join dept d
On d.id=e.deptid ;

自连查询
SELECT e.empName,b.empName
FROM employee e
LEFT OUTER JOIN employee b
ON e.bossId=b.id;
带in关键字的子查询
使用in 进行自查询时,内层返回的仅仅是一个数据列。这个数据列的值将工外层查询进行比较操作
Select deptname from dept d where d.id in (select d.id from employee where age =20)

带exist 关键字的子查询
Exist 关键字后面可以是任意子查询,这个子查询相当于一个测试,不产生任何数据,只返回TRUE和FALSE,当为TRUE 时 ,前面的查询才继续下去

带all 关键字的子查询
子查询返回的结果需要同时满足所以内层查询结果
带or 的多条件查询
只需要满足其中一条操作就可以返回

原创粉丝点击