MySQL学习笔记---基础概念和一些基础SQL语句(二)

MySQL

数据库

1.创建数据库 demo

create database demo default character 
set utf8 collate utf8_general_ci;

2.删除数据库 demo

drop database demo;

3.查看数据库

show databases;

4.选中数据库

use demo;

表:类
表的一行数据:对象

public class User{
    private int id;
    private String name;
    private int age;
}

1.创建一张表

create table user(
    id int auto_increment primary key,
    name varchar(10) not null default "张三",
    age int
);

2.删除一张表

drop table user;

3.查看表名

show tables;

4.查看表结构

desc user;

5.插入user表中 插入一条记录 name=”张三” age=22

insert into user(name,age) values("张三",22);

6.查询数据

select * from user;

7.修改 把张三的年纪改成3

update user set age=3 where name="张三";

8.删除

delete from user where id=6;

表结构

对表结构进行操作:
1.新增一个字段sex varchar(2)

alter table user add sex varchar(2);

2.删除一个字段sex

alter table user drop sex;

3.修改一个字段sex varchar(2) — gender varchar(5)

alter table user change sex gender varchar(5);

索引:
1.添加索引

alter table user add index in_name(name);
create index in_name on user(name);

2.删除索引

alter table user drop index in_name;
drop index in_name on user;

外键

将表中的一个字段设置为外键(从表),与其他表的主键建立
约束关系(主表),此外键被主表中的主键所约束

1.给表中的字段设置外键

alter table user add company_id int;
alter table user add foreign key(company_id) references company(id);

一旦两张表建立了主外键约束关系,那么他们就有了一对多关系
有外键的表是从表,约束此外键的主键所在的表是主表。
主表是一,从表是多。

多对多关系:
通过建立第三张表来实现两张表的多对多关系

事务:将多条SQL作为一个整体,要么全部执行,要么一条都不执行
1.原子性
2.一致性
3.隔离性
4.持久性

use house;
create table sys_user(
    uid int auto_increment primary key,
    uName varchar(20),
    uPassWord varchar(20)
);

create table hos_district(
    did int auto_increment primary key,
    dName varchar(20)
);

create table hos_street(
    sid int auto_increment primary key,
    sName varchar(20),
    sDid int
);

create table hos_type(
    hTid int auto_increment primary key,
    htName varchar(20)
);

create table hos_house(
    hMid int auto_increment primary key,
    udi int,
    sid int,
    hTid int,
    price decimal(10,3),
    topic varchar(20),
    contents varchar(60)
);

查询:连接:
1.内连接

select * from mess inner join user where mess.user_id = `user`.id;

2.外连接:
左连接:左表所有和右表满足条件的数据

select * from mess left join user on `user`.id = 1;

右连接:右表所有和左表满足条件的数据

select * from mess right join user on `user`.id = 1;

事务

事务:防止数据错误。

update zhangsan set count = count - 500;
update lisi set count = count + 500;

1.原子性 2.一致性 3.隔离性 4.持久性

针对不同的用户,选择性的显示一些数据
员工不能看到薪资,管理层可以看到

视图

为不同的用户创建不同的视图,视图允许不同的用户以不同的方式
查看同一张的数据,视图是一张虚拟的表,数据库中所占的空间是
很小

创建视图:

create view view_common as select name,age from info;
create view view_all as select * from info;

使用视图:和查询表是一样的

select * from view_common;
select * from view_all;

删除视图:和删除表是一样的

drop view view_common;
drop view view_all;

触发器的分类:
1.前触发器:在更新或者插入前进行操作
2.后触发器:在更新或者插入,删除运行后操作
3.删除前触发器:在删除之前进行操作
4.instedof触发器:对复杂的视图执行插入,更新或者删除操作

创建触发器:

create trigger t_afterinsert_on_tb1
after insert on tb1
for each row
begin
insert into tb2(id) values(new.id);
end;

create trigger t_afterdelete_on_tb1
after delete on tb1
for each row
begin 
delete from tb2 where tb2.id = old.id;
end;

如何使用存储过程:
1.创建存储过程

create procedure spl(in p int)
begin
declare v1 int;
set v1 = p;
insert into tb1(id) values(v1);
end;

2.调用存储过程

猜你喜欢

转载自blog.csdn.net/liuyi6/article/details/72860279