1. 程式人生 > 實用技巧 >MySql 基礎操作

MySql 基礎操作

## 數值型分為倆種:

1. ### 整形

   1. 整數常用的五種型別
      1. (Tinyint) 非常小的整形 1位元組:-128~127;0~255
      2. (Smallint)較小的整形    2位元組:-32768~32767
      3. (Mediumint)中等大小整形  3位元組: 0~2 24方
      4. (int) 標準整形 4位元組:0~2 32方
      5. (bigint) 大整形  8位元組:0~2 64方

2. 浮點型

   1. float 4位元組
   2. double  8位元組
   3. decinal H+2位元組

3. ### 字串格式有哪些 1. 字元型分為4類 1. char(n) 255 最大長度 常用於長度不變的(如:姓名列)索引快,但浪費空間 2. varchar (n) 255(可變長度) 節省空間但索引慢 3. text 2 16方-1 文字資料(文章) 4. blog 二進位制圖片 4. ### 日期型 1. date(日期) YYY-MM-DD 2. TIME(時間) hh:mm:ss 3. DATATIME(日期和時間) YYY-MM-DD hh:mm:ss 4. TIMESTAMP(時間戳) YYYMMDDhhmmss
5. YEAR(年) YYYY
MySQL 資料型別

MySQL 資料型別

  • 數值型分為倆種:

    1. 整形

      1. 整數常用的五種型別

        1. (Tinyint) 非常小的整形 1位元組:-128~127;0~255

        2. (Smallint)較小的整形 2位元組:-32768~32767

        3. (Mediumint)中等大小整形 3位元組: 0~2 24方

        4. (int) 標準整形 4位元組:0~2 32方

        5. (bigint) 大整形 8位元組:0~2 64方

    2. 浮點型

      1. float 4位元組

      2. double 8位元組

      3. decinal H+2位元組

    3. 字串格式有哪些

      1. 字元型分為4類

        1. char(n) 255 最大長度 常用於長度不變的(如:姓名列)索引快,但浪費空間

        2. varchar (n) 255(可變長度) 節省空間但索引慢

        3. text 2 16方-1 文字資料(文章)

        4. blog 二進位制圖片

    4. 日期型

      1. date(日期) YYY-MM-DD

      2. TIME(時間) hh:mm:ss

      3. DATATIME(日期和時間) YYY-MM-DD hh:mm:ss

      4. TIMESTAMP(時間戳) YYYMMDDhhmmss

      5. YEAR(年) YYYY

    MySQL 常用增刪改查

    建立資料庫

    • show databases; # 檢視所有的資料庫;

    • create database xiaomo charset utf8; #建立資料庫

    • use xiaomo # 選擇使用xiaomo資料庫

    • show create database xiaomo; # 檢視建立資料庫語法

    建立表結構

    • show tables; # 檢視資料庫(xiaomo)中所有的表

    • ##建立一張xiaoxiaomo的表
      create table xiaoxiaomo(
      id int auto_increment,
      name char(32) not null,
      age int not null,
      register_data date not null,
      primary key (id));
      )

      # 解釋意思
      mysql> create table xiaoxiaomo( # 在xiaomo 資料庫中建立xiaoxiaomo的表
      -> id int auto_increment, # 在表中建立第一個欄位 id
      -> name char(32) not null, # 在表中建立第二個欄位 name
      -> age int not null,
      -> register_data date not null, # 日期
      -> primary key (id)); # 將表的主鍵設定為 id ## 一張表只有一個主鍵
      Query OK, 0 rows affected (0.01 sec) # 建立成功
    • desc xiaoxiaomo; ## 查看錶的資訊

    • drop table xiaoxiaomo; ## 刪除這張表

插入資料

  • # 指定欄位插入資料
    insert into xiaoxiaomo(name,age,register_data) values("zhangsan","100",'2020-07-15')
    # 所有欄位插入
    insert into [表名] values(2,"lisi",200,'2020-07-15')

    insert into xiaoxiaomo values(1,"lisi","11","2020-07-15");
    insert into xiaoxiaomo values(2,"wangwu","12","2020-07-15");
    insert into xiaoxiaomo values(3,"tom","13","2020-07-16");
    insert into xiaoxiaomo values(4,"nike","14","2020-07-16");
    insert into xiaoxiaomo values(5,"xiaoliu","19","2020-03-16");
    insert into xiaoxiaomo values(6,"xiaohua","55","2020-03-16");
    insert into xiaoxiaomo values(7,"zhangsan","88","2020-09-16");
    insert into xiaoxiaomo values(8,"zhangsan","88","2020-09-16");

查詢資料庫

# * 就是代表所有的資料
select * from xiaoxiaomo;
# 只查詢 name 那一列
select name from xiaoxiaomo;
# limit 擷取 檢視前2條資料
select * from xiaoxiaomo limit 2;
# 擷取 查詢 5 - 3 資料 # 從第三行開始 查取5條資料
select * from xiaoxiaomo limit 5 offset 3;
# where ; like; order by 使用;
# where 表民 後面是where where 後面試查詢條件
# 查詢 id > 3 並且(and) age>10 的所有的使用者;
select * from xiaoxiaomo where id > 3 and age >10;

# 查詢所有在2020-07的資料
# 寫法格式 select * from 表名 where 欄位名 like '模糊查詢資料';
select * from xiaoxiaomo where register_data like '2020-07%';

# 通過id降序 # order by 排序的意思 # desc 將資料從大到小排序
# 寫法格式 select * from 表名 order by (要排序的欄位民) desc;
select * from xiaoxiaomo order by id desc;

# 通過id正序 # 從小到大
# 和上面一樣 只需要將desc 改成 asc就可以了
select * from xiaoxiaomo order by id asc;

# 查詢名字為 "%si" 結尾的所有條目,並且按照id降序
select * from xiaoxiaomo where name like '%si' order by id desc;
# GROUP BY :指定以什麼分組(比如可以統計出遊多少同名的資料)
# 檢視xiaoxiaomo表中名字出現的次數 通過group by 分組 count(*) 就是計數的意思
# 寫法格式: select 欄位名,count(*) from 表名 group by 欄位名;
select name,count(*) from xiaoxiaomo group by name;

## coalesce # 新增一個欄位 對應 with rollup 如果不新增 則為null,with rollup 分組的基礎上統計資料
select coalesce(name,'Total age'),sum(age) from xiaoxiaomo group by name with rollup;

MySql 修改

  # update 修改 
# 將 id = 3 的這條資料 name 修改為 xiaohong age 修改為22
# 寫法格式: update 表名 set [想要修改的欄位名='修改的值'] where 條件;
update xiaoxiaomo set name='xiaohong',age=22 where id=3;


# 修改 id>5 的所有資訊
update xiaoxiaomo set name='nice',age=18 where id>5;

MySql 刪除

# 刪除 xiaoxiaomo表中所有name為lisi的
# 寫法格式 delete from 表名 where 條件
delete from xiaoxiaomo where name='lisi';

新增欄位

# 新增一個欄位
# 給xiaoxiaomo這張表新增一個sex欄位只能使用 enum 只能使用 B G 來代替 選項
# 寫法格式: alter table 表名 add [你要新增的欄位名稱] enum('','','') # 更具需求自定義
alter table xiaoxiaomo add sex enum('B','G');

# 插入資料 sex 欄位使用 B(boy) 或 G 來代替
insert into xiaoxiaomo(name,age,register_data,sex) values('xiha','520','2020-07-16','B');

修改欄位屬性 欄位名稱 修改表名

# 修改欄位屬性 # 修改的資料型別
# 寫法格式: alter table [表名] modify column varchar(50) default null;
alter table xiaoxiaomo modify column name varchar(50) default null;

# 修改欄位名稱
alter table xiaoxiaomo change name new_name char(32);

# 刪除一個欄位
# 寫法格式: alter table [表名] drop [要刪除的欄位名稱];
alter table xiaoxiaomo drop sex;

# 修改表名
alter table xiaoxiaomo rename to xxm;