1. 程式人生 > >六三、MySQL基本命令

六三、MySQL基本命令

一.基本命令

  1. 啟動服務: net start mysql
  2. 停止服務:net stop mysql
  3. 連結伺服器:
    • mysql -u root -p 輸入密碼
    • 退出 exit quit \q
  4. 檢視版本:select version();
  5. 顯示當前時間: select now();
  6. 遠端連線
    • mysql -h ip -u 使用者名稱 -p
    • 輸入對應的密碼

二.資料庫操作

  1. 建立資料庫

    • create database 資料庫名 charset=utf8;
  2. 刪除資料庫

    • drop database 資料庫名
  3. 切換資料庫

    • use 資料庫名
  4. 檢視當前選擇的資料庫

    • select database();
  5. 檢視mysql中所有的資料庫名:show databases; || show schemas;

三.表操作

  1. 檢視當前資料庫中所有的表

    • show tables;
  2. 建立表

    • cerate table 表名(列及型別);
    • 說明:auto_increment 自增 primary key 主鍵 not null 不為空
    • eg:create table student(id int auto_increment primary key,name varthar(20) not null,age int not null,gender bit default 1,address varchar(20),isDelete bit default 0);
  3. 刪除表

    • drop table 表名;
  4. 查看錶結構

    • desc 表名;
  5. 檢視建表語句

    • show create table 表名;
  6. 重命名錶

    • rename table 原表名 to 新表名
  7. 修改表

    • alter table 表名 add|change|drop 列名 型別;

四.資料操作


  1. a. 全列插入 :insert into 表名 values(值);
    - 說明: 主鍵自動增長,但是字啊全列插入式需要站位,通常使用0 ,插入成功以後以實際資料為準;
    -
    b. 預設插入:insert into 表名(列1,列2,。。。) values(值1,值2)
    - eg: insert into stu (name,age,address) values(‘小米’,20,’雲南’);

    C. 同時插入多條資料:insert into 表名 values(…),(),(),…
    - eg:insert into stu values(0,’tom1’,18,0,’深圳’,1,0),(0,’tom2’,18,0,’ 深圳’,1,0),(0,’tom3’,18,1,’深圳’,1,0)

    • delate from 表名 where 條件; (不寫條件全部刪除)
    • eg: delate form stu where id=3;
    • update 表名 set 列1=值1,列2=值2,… where 條件;(不寫條件全部修改)
    • eg:update stu set age=99, address=’昆明’ where id=3;
    • 查詢表中的全部資料:select * from 表名;

五.查

  1. 基本語法:select * from 表名;

  2. 消除重複行:select distinct 值 form 表名;

  3. 條件查詢
    a.語法: select * from 表名 where 條件;
    b.比較運算子: = < > >= <= !=
    c.邏輯運算子: and or not
    d.模糊查詢: like %:表示任意多個字元 _:表示一個任意字元
    eg:select * from stu where name like “tom%”;
    e.範圍查詢:
    in 表示在一個非連續的範圍內 eg:select * from stu where id in (1,3,4)
    between … and … 表示在一個連續的範圍內 eg:select * from stu where id between 1 and 5;
    f.空判斷:null 與 ‘’不同 判斷空:is null 判斷非空:is not null
    g.優先順序:()>not>比較運算子>邏輯運算子 and>or

  4. 聚合:為了快速得到統計資料,提供了5個聚合函式
    a. count() 表示聚酸總行數,/列名 eg:select count(*) from stu;
    b. max(列) 求此列的最大值 eg: select max(id) from stu where gender=0;
    c. min(列) 求此列的最小值
    d. sum(列) 求此列的和 eg: select sum(age) from stu where gender=1;
    e. svg(列) 求此列的平均值

  5. 分組:安照欄位分組,表示此欄位相同的資料會被放到一個聚合中
    分組後,只能查詢到相同的資料列,有差異的資料列無法顯示到結果中 可對分組後的資料統計

    • select 列1,列2,聚合。。。 from 表名 group by 列1,列2,… having 列1,列2,…,聚合。。。
    • 查詢男女各多少:select gender,count(*) from stu group by gender;
    • 查詢出的男女集中在查男生: select gender,count(*) from stu group by gender having gender;
  6. 排序: select * form 表名 order by 列1 asc|desc ,列2 asc|desc ,……;
    a. 將資料按照列1 進行排序,如果某些列1的值相同,則按照列2,進行排序
    b. 預設從小到大排序
    c. asc升序 desc降序
    eg:按年齡排序 select * from stu order by age , id desc;

  7. 分頁:select * from 表名 limit start,count;

    • select * from stu where age=18 limit 0,1;

六、關聯

  1. 建表語句;

    • a. create table class(id int auto_increment primary key,name varchar(20) not null,stuNum int not null);
    • b. create table stus (id int auto_increment primary key,name varchar(20) not null,gender bit default 1,classId int not null,foreign key(classId) references class(id));
    • 插入資料 insert into class values(0,”py1”,55),(0,”py2”,60),(0,”py3”,77);

        ,(1,"bbb",0,2);
      
    • 查詢stus 與 class 關聯 select stus.id,stus.name,class.name from class inner join stus on class.id=stus.classId;
  2. 分類
    a. 表a inner join 表b —表a與表b匹配的行會出現在結果中
    b. 表a left join 表b —表a與表b匹配的行會出現在結果中,外加表a中獨有的資料,未對應的資料使用null填充
    c. 表a right join 表b —表a與表b匹配的行會出現在結果中,外加表b中獨有的資料,未對應的資料使用null填充