MySQL學習(3)

一 SQL語句

  1. 數據庫級別(*)

  •     顯示全部數據庫:show databases;
  •     創建數據庫:create database '數據庫名字’;
  •     使用數據庫:use '數據庫名字';
  •     刪除數據庫:drop database 's數據庫名字‘;
  •     導出數據庫:mysqldump -uroot -p 數據庫名 > 導出文件名
  •     導入數據庫:mysql -uroot -p 數據庫名 < 文件路徑.數據表

  2.數據表級別(*)

  •     顯示全部數據表:show tables;
  •     顯示數據表列:desc '數據表名';
  •     創建表:create table '數據表名'(nid 類型,name 類型);
  •     刪除表:drop table '數據表名';
  •     清空表內容:elete from '數據表名';
  •     清空表內容:truncate table '數據表明'; 速度快,自增回到原點
  •     添加列:lter table '表名' add ‘列名’ 類型;
  •     刪除列:alter table '表名' drop column '列名';
  •     修改列類型:alter table '表名' modify column '列名' 類型;
  •     修改列名和類型:alter table '表名' change '原列名' '新列名' 類型;
  •     添加主鍵:alter table '表名' add primary key;
  •     刪除主鍵:alter table '表名' drop primary key;
  •     添加外鍵:alter table '主表名' add constraint '外鍵名' foreign key '從表名'('外鍵字段') references '主表'(字段');
  •     刪除外鍵:alter table '表名' drop foreign key '外鍵名';

    create table '表名'('Field名' 'Field類型' '是否爲空' 默認值,'Field名' 'Field類型' '是否爲空' 默認值)engine=innodb charset=utf8;

    例:

      

    創建表tb2成功。

    create table '表名'('Field名' 'Field類型' '是否爲空' 默認值 auto_increment primary key,'Field名' 'Field類型' '是否爲空' 默認值)engine=innodb charset=utf8; auto_increment代表自增(只能數值類型,所引,主鍵,一張表只能由一個自增列),加它時後面一定要由primary key(一張表只能由一個主鍵,不能爲NULL,一般情況下把自增列設爲主鍵,可以兩列一起作爲主鍵,查找速度非常快

    例:

      

       

       可以看到,我只查了num的值,但是id的value是隨着遞增的。

    a. delete from '數據表'與truncate table '數據表'的區別

      (1) 用delete from tb2;清空數據表tb2後,然後重新插入兩行數據,結果:

      

       可以看到id是在原來的基礎上遞增的。

      (2) truncate table tb2; 然後再重新插入數據,結果:

       

       可以看到表中id列是從1開始遞增了。

    b. 外鍵

      把兩個表中的兩列進行了關聯,加了約束。

      (1) 創建friInfo的表:

      

        創建department的表:

      

      向department表中插入數據,顯示:

      

       將friInfo表中的departmentId和department表中的id建立關聯:

      

       fk_f_d是外鍵的名字;外鍵建立成功。

      我們看看能否在friInfo表中的departmentId中插入在department表id列中沒有的數字,結果:

      

       提示我們不可以插入數據,那我們插入符合要求的,結果:

      

       可以看到插入成功。

      friInfo表中的departmentId列的數據只能從department中的id列選取。

      (2)可以在創建表的時候直接添加約束

      例: 

        create table department(
            id int not null auto_increment primary key,
            name varchar(20))engine=innodb default charset=utf8;

        create table friInfo(
            id int not null auto_increment primary key,
            name varchar(20),
            departmentId int,
            constraint fk_f_d foreign key(departmentId) referneces department(id))engine=innodb default charset=utf8;

 

  3.數據行級別(****)

    增:a. insert into '表名'('列名','列名') values('值','值'),('值','值'), ('值','值'); 一次插入多條數據;

      b. insert into '表名'('列名','列名') select '列名','列名' from '表名'; 把另一個表的兩列中的數據插入到表的列中;

    刪:delete from  '表名' where '列名'='值'; 將某一列中某一值的一行數據刪掉; '列名'>'值',  '列名'<值',  '列名'!='值' 都可以;

    改:update '表名' set '列名1'='值1' where '列名2'='值2' and ...; 把'列名2'='值2的'列名1'的值改爲'值1';

    查:select  '列名1', '列名2' from '數據表名' where '列名'='值'; 顯示錶中'列名'='值'的那行中 '列名1'和'列名2'數據;

    其他:條件,通配符,限制,排序,分組,連表,組合。參考https://www.cnblogs.com/wupeiqi/articles/5713315.html

二 SQL基本數據類型

  1. 數字

   (1) bit(m) 二進制位,m表示二進制位的長度,範圍1~64,默認m=1

   (2) tinyint 相當於c++中的int8類型,默認是有符號的,創建無符號:tinyint unsigned;注意:布爾類型用 tinyint(1)表示

   (3) smallint 相當於c++中的int16類型;

   (4) int 相當於c++中的int32類型;

   (5) bigint 相當於c++中的int64類型;

   (6) decimal(m[,d]) 精確的小數,m是數字總個數(負號不算),最大值65,d是小數點後個數,最大值30;

   (7) float(m,d) 單浮點數,m是數字總個數,d是小數點後數字個數;數值越大越不準確;

   (8) double(m,d) 雙浮點數,m是數字總個數,d是小數點後數字個數;數值越大越不準確;

  2.字符串

   (1) char(m) 固定長度的字符串,最大長度255字符,m代表字符串長度,即使數據小於m,也會佔用m個字符;

   (2) varchar(m) 可變長度的字符串,最大長度255字符,m代表字符串長度,只要小於m長度的字符串都可以保存在數據類型中;相比於char類型效率較低;

   (3) text 保存變長的大字符串,最大長度65535個字符;

   (4) mediumtext 保存變長的大字符串,最大長度16777215個字符;

   (5) longtext 保存變長的大字符串,最大長度4294967295個字符;

   (6) TinyBlog、Blog、MediumBlog、LongBlog 二進制數據;

  3.時間

   (1) date: YYYY-MM-DD;

   (2) time: HH:MM:SS;

   (3) datetime:  YYYY-MM-DD HH:MM:SS;

   (4) year: YYYY;

   (5) timestamp: YYYYMMDD HHMMSS;

  4.枚舉

   相當於c++中的枚舉。

   用法:

      create table studentInfo(
          name varchar(20),
          age int,
          class ENUM('class1', 'class2', 'class3')
      )engine=innodb default charset=utf8;
      
      insert into studentInfo(name,age,class) values('a',19,'class1'),(
'b',20,'class2'),('c',21,'class3');

  5.集合

   可以設置多個值。

   用法:

      create table teacher(
          name varchar(20),
          course SET('math', 'sports', 'english')
      )engine=innodb default charset=utf8;

      insert into teacher(name,course) values('a', ('math', 'sports')), ('b', ('english', 'sports')), ('c', ('math', 'english'));

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章