MySql基礎知識總結

來源:互聯網
上載者:User

標籤:字元集   rem   左外串連   外串連   ima   max   avg   cte   and   

Mysql概述

MySql是一種關係型資料庫

串連到mysql資料庫:mysql -u root -p

什麼是SQL:結構化的查詢語句

SQL分類:

  DDL:資料定義語言 (Data Definition Language)

   * create,alter,drop...

  DML:資料操縱語言

    * update,insert,delete

  DCL:資料控制語言

    * grant,if..

  DQL:資料查詢語言

    * select

資料庫增刪查改

建立資料庫:文法:create database 資料庫 [character 字元集 collate 校對規則]

查看資料庫:

  查看所有資料庫:show databases;

  查看某個資料庫:show create database 資料庫名;

修改資料庫:文法:alter database 資料庫名 character 字元集 collate 校對規則

刪除資料庫:文法:drop database 資料庫名;

切換資料庫:use 資料庫名;

查看當前使用資料庫:select database();

資料庫表操作

建立表文法:

  create table 表名 (

      欄位名 類型(長度) 約束,

      欄位名 類型(長度) 約束,

      欄位名 類型(長度) 約束

  );

資料類型:

 Java類型:             MySQL:

  byte/short/int/long   tinyint/smallint/int/bigint

  String                char/varchar

                            * 區別?char是固定長度的字串,varchar可變長度的字串.

                            * char(8) 和 varchar(8)

                                * 如果插入一個字串hello 插入到char 那麼 插入hello   .插入到varchar中 插入hello

 float                  float

 double                 double

 boolean            bit

 Date                   date/time/datetime/timestamp

                        * datetime和timestamp都是既有日期又有時間的日期類型

                            * 區別? datetime需要使用外部傳入的日期.如果沒傳這個值就是Null. timestamp會使用系統當前的時間作為這個值的預設值.

 文字檔                Text

 二級制檔案               BLOB

***** Oralce使用CLOB/BLOB

***** MYSQL中除了字串類型需要設定長度其他的類型都有預設長度******

  • 約束:

單資料表條件約束:

* 主鍵約束:primary key (預設就是唯一非空的)

* 唯一約束:unique

* 非空約束:not null

 

  • 建立一個表:
  • ***** 建立表之前先選擇資料庫:use 某個資料庫;

create table employee(

    eid int primary key auto_increment,

    ename varchar(20) not null,

    email varchar(30) unique,

    birthday date,

    job varchar(20),

    resume text

);

【表的查看】

  • 查看資料庫中有哪些表:

* show tables;

  • 查看錶結構:

* desc 表名;

【表的刪除】

  • 表的刪除:

 drop table 表名;

【表的修改】

  • 修改表添加列:

* alter table 表名 add 列名 類型(長度) 約束;

    * alter table employee add image varchar(50);

  • 修改表刪除列:

* alter table 表名 drop 列名;

    * alter table employee drop job;

  • 修改表的列的類型長度及約束:

* alter table 表名 modify 列名 類型(長度) 約束;

    * alter table employee modify image varchar(80) not null;

  • 修改表的列名

* alter table 表名 change 舊列名 新列名 類型(長度) 約束;

    * alter table employee change image eimage varchar(60);

  • 修改表名

* rename table 舊錶名 to 新表名;

    * rename table employee to user;

  • 修改表的字元集:

* alter table 表名character set 字元集;

    * alter table user character set gbk;

*******使用SQL操作資料庫中的表的記錄(對錶的記錄的CRUD的操作)******

【插入記錄】

  • 文法

* insert into 表名 (列名,列名,...) values (值1,值2,...);     ---插入指定列的值

* insert into 表名 values (值1,值2,...);                    ---插入所有列的值

 

  • 注意事項:

* 列名的個數與值的個數對應.

* 列的類型與值的類型對應.位置也要對應.

* 列的類型如果是字串或者日期,寫值的時候使用單引號將值引起來.

* 插入的值的最大長度不能超過列的最大長度.

【修改記錄】

  • 文法:

* update 表 set 列名=值,列名=值 [where 條件];

  • 注意事項:

* 列名和實值型別也要一致.

* 值不能超過列的最大長度.

* 值是字串或日期,需要使用單引號.

  • 練習:

* 修改employee表中所有記錄的job為WORKER

    * update employee set job=‘WORKER‘;

* 修改employee表將name為aaa的郵箱改為[email protected]

    * update employee set email = ‘[email protected]‘ where ename = ‘aaa‘;

* 修改employee表將name為bbb的郵箱改為[email protected]同時修改jobHR

    * update employee set email = ‘[email protected]‘ , job=‘HR‘ where ename=‘bbb‘;

【刪除記錄】

  • 文法:

* delete from 表 [where 條件];

  • 注意事項:

* 刪除表中的一行記錄,不能刪除某列值

* 如果沒有條件刪除表中的所有列.

  • 練習:

* 刪除id為8的記錄:

    * delete from employee where eid = 8;

* 刪除所有記錄:

    * delete from employee;

  • 刪除表中的所有記錄truncate table 表名  和 delete from 表  區別?

* 區別:

    * truncate table 刪除表的記錄:將整個表刪除掉,重新建立一個新的表.truncate屬於DDL.

    * delete from 刪除表的記錄:一條一條進行刪除. delete屬於DML

        * 交易管理 只能作用在DML語句上.如果再一個事務中使用delete刪除所有記錄,可以找回.

【基本查詢】

  • 查詢語句:

* select [distinct] *|列名 from 表 [where 條件];

【條件查詢】

  • where語句後面可以加:

條件的關鍵字:

= , > , >= , <, <= , <>

like中可以使用預留位置: _ 和 %  :底線匹配一個字元, %:可以匹配任意多個字元.

【排序查詢】

`order by 對資料進行排序.預設升序. (asc升序,desc降序)

【彙總函式】

`sum()   求和

`count()  統計

`max()  最大值

`min()  最小值

`avg() 平均數

【分組】

  group by

* 交叉串連

    * select * from A,B;   --- 獲得的是兩個表的笛卡爾積.

* 內串連: inner join -- inner 可以省略

    * 顯式內串連:select * from A inner join B on 條件;

    * 隱式內串連:select * from A,B where 條件;

* 外串連:outer join -- outer 可以省略

    * 左外串連:left outer join  -- select * from A left outer join B on 條件;

    * 右外串連:right outer join -- select * from A right outer join B on 條件;

多表查詢的子查詢

  • 一個SQL語句查詢的過程中需要依賴另一個查詢語句.

SELECT * FROM customer c,orders o WHERE c.cid = o.cid AND  c.cid IN (SELECT cid FROM orders WHERE addr LIKE ‘海澱%‘);

 

MySql基礎知識總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.