1. 程式人生 > 資料庫 >mysql_複習

mysql_複習

文章目錄

資料庫跟表的增刪改查

資料庫包含 表\函式\儲存過程

建立資料庫
CREATE DATABASE[ IF NOT EXISTS] 資料庫名 資料庫選項
    資料庫選項:
        CHARACTER SET charset_name
        COLLATE collation_name
create database d1 default character set gbk;

# 建立表
create table t1(age int,name varchar(10));
# 給上表增加列
alter table t1 add column addr varchar(50);
# 刪除表
drop table t1;

# 表的增刪改查
create table t1(age int,name varchar(10));
insert into t1(age,name)  values(10,"丁丁"),(11,"泥濘"); # 插入資料
select * from t1; # 查資料
# 修改丁丁的age
update t1 set age=12 where name="丁丁"; 
select * from t1; 
# 查詢泥濘資料
select * from t1 where name="泥濘"; 
# 刪除
delete from t1 where name="丁丁";


create table t1(age int,"泥濘"); # 插入資料
select * from t1; # 查資料

# 修改丁丁的age
update t1 set age=12 where name="丁丁"; 

select * from t1; 

# 查詢泥濘資料
select * from t1 where name="泥濘"; 

# 刪除
delete from t1 where name="丁丁";


show databases;

create table boy(name varchar(10),age int,addr varchar(50));
create table girl(name varchar(10),addr varchar(50));

insert into boy(name,age,addr) 
values
("張飛",32,"北京"),("謝霆鋒",30,"南京"),("李四",25,"天井"),("甲流",33,"酒精"),("魯北",24,"南海");

select * from boy;


insert into girl(name,addr) 
values
("瀉立停",("佳美","府東"),("盼盼",23,"背黑鍋"),("欣欣",34,"安防"),("玲玲","安慰人");

select * from boy;
select * from girl;


# 單表查詢
use d1; 

# 去重查詢
select distinct age from boy; 

# 查詢age在25-30之間的
insert into boy values("彪子",28,"韓國");
insert into boy values("鬼小四",26,"幾盆");
select * from boy where age between 25 and 30; 

# 查詢age 25和30的資料 固定範圍
select * from boy where age in (25,30);

# 查詢name中,有四的列出來,%萬用字元,select * from boy where name like "%四%";
select * from boy where name like "%四";
select * from boy where name like "彪%";

# 排序輸出
select * from boy order by age;
# 降序
select * from boy order by age desc;


# 顯示前兩個
select * from boy limit 2;

# 查看錶中欄位
desc t1;

# 統計age數量,count(1)是表頭
insert into boy values("王八那","as");
insert into boy values("阿斯鋼","阿三哥");
select 
age,count(1) 
from boy 
group by age;


# 多表查詢 

# 內連線   as後面跟的是查詢出來的表頭,on 後面是查詢的條件
# 兩張表的交集
select
a.`name` as "男名字",b.`name`as "女名字"
from
d1.boy a 
inner join d1.girl b on a.age=b.age;

# 左連線,以左邊的a.age查詢為主,# 這裡就不得不說下我們玩的DNF了,建立一個賬號,但是裡面有很多角色,# 左表為基礎,右表有就好了
insert into girl values("阿美美","阿哥");
insert into girl values("慧海","筆記");
select
a.`name` as "男名字",a.age as "男年齡",b.`name`as "女名字",b.age as "女年齡"
from
d1.boy a 
left join d1.girl b on a.age=b.age;

# 右連線
insert into girl values("阿美美",b.age as "女年齡"
from
d1.boy a 
right join d1.girl b on a.age=b.age;


# 系統函式
# 聚合函式
# 求表的sum,max min avg
select 
sum(age),max(age),min(age),avg(age)
from boy;

# 字串匯合
select 
name,CONCAT("角色名",name,addr) as concat
from boy;
 
-- 將name欄位的四換成一
select 
name,replace(name,'四','一')
from boy;

# 日期函式
select
now();

# 加兩天
select
DATE_ADD("2019-1-26",interval 2 DAY);

select
DATE_SUB("2019-1-26",interval 2 DAY);

自定義函式

show function status;
delimiter $$
drop FUNCTION if EXISTS myAddFunc $$
create function myAddFunc(a int,b int)
returns int
begin 
    return a+b
end $$
delimiter;