天天看點

基本的SQL語句

一:SQL:

    1、定義:結構化查詢語言,是一種特殊目的的程式設計語言,是一種資料庫查詢和程式設計語言

  2、用途:用于存取、查詢、更新、管理關系資料庫系統

  3、分類:

    (1)DDL語句:資料庫定義語言,資料庫、表、視圖、索引、存儲過程,例如CREATE DROP ALTER

    (2)DML語句:資料庫操縱語言,插入資料INSERT、删除資料DELETE、更新資料UPDATE、查詢資料SELECT

    (3)DCL語句:資料庫控制語言,如控制使用者的通路權限GRANT、REVOKE

  4、常用的關系資料庫:mysql 、SQL Server、Oracle、Sybase、DB2等

    常用的非關系資料庫:NoSql、Cloudant、MongoDb、redis、HBase 

二:SQL語句

1、操作庫:

(1)增:create database db1 charset utf8;

(2)删:drop database db1;

(3)改:alter database db1 charset latin1;

(4)查:show databases;      

2、操作表

(1)進入庫中:use db1;

(2)增:create table t1(id int,name char);

(3)删:drop table t1;

(4)查:show tables;

(5)檢視表結構:desc t1;    //可以檢視表的結構定義

              show create table t1; //除了能看到表定義外,還可以看到engine(存儲引擎)和charset(字元集)等資訊

3、操作字段:

(1)增加字段:alter table t1 add column age int ;

(2)删除字段:alter table t1 drop column  age;

(3)修改字段:alter table t1 modify name char(3); //修改字段屬性

             alter table t1 change name name1 char(2);//修改字段名稱和屬性      

4、操作表中的記錄

(1)增:insert into t1 values(1,"zhang"),(2,"wang"),(3,"zhao");

(2)删:delete from t1 where id=1;

(3)改:update t1 set name="liu" where id=2;

(4)查:select * from t1;

(5)清空表:delete *from t1;       #如果有自增id,新增的資料,仍然是以删除前的最後一樣作為起始
          truncate table t1;     #資料量大,删除速度比上一條快,且直接從零開始
      

 三:MySQL表的完整性限制

NOT NULL        //非空限制,指定某列不能為空;

UNIQUE          //唯一限制,指定某列或者幾列組合不能重複

PRIMARY KEY     //主鍵,指該列的值可以唯一辨別該記錄

FOREIGN KEY     //外鍵,指定該行記錄從屬于主表中的一條記錄,主要用于參照完整性      

1、NOT NULL:

create table t1(id int not null);        //規定id字段不能為空

create table t1(id int not null default 1);    //規定id字段不能為空且預設值為1


default:當某一列有許多重複值出現時,不需要一次次添加,隻需設定預設值即可

添加預設值:alter table t1 alter id set default 1;

删除預設值:alter table t1 alter id drop default;      

2、UNIQUE:

方法1:

create table t1(id int unique);

方法2:

create table t1(id int,unique(id));


方法2還可用于多個字段聯合唯一:

create table t1(id int,name char(10),age int,uniq(id,name));

添加唯一限制:alter table t1 add unique(id);      

3、PRIMARY KEY

表示主鍵的方法如下:

方法一:

create table t1(id int not null unique);

方法二:

create table t1(id int primary key);

方法三:

create table t1(id int,primary key(id));

方法三還可以多字段聯合主鍵:

create table t1(id int ,name char(10),age int ,primary key(id,name));

删除主鍵:alter table t1 drop primary key;

添加主鍵:alter table t1 add primary key(id);      

擴充:

AUTO_INCREMENT      //表示自增      
create table t1(id int primary key auto_increment,name char(10),sex enum('male','female') default 'male');   //id 為主鍵自增,sex單選,預設"male"

修改自增長值:alter table t1  auto_increment=10;

删除自增長:alter table t1 modify id int primary key;   //modify 不能删除主鍵,删除主鍵用drop

      

4、FOREIKEY

create table t1(
    id_1 int primary key,
    name char(10)
    )engine=innodb; //父表被關聯的字段必須唯一,表類型必須是innodb存儲引擎

create table t2(
    id_2 int,name char(10),
    id_1 int ,
    foreign key(id_1)
    references t1(id_1) 
    on delete cascade   //級聯删除
    on update cascade  //級聯更新
    )engine=innodb;

注意:外鍵關聯父表的主鍵 同步更新、同步删除

修改表的存儲引擎:alter table t1 engine=INNODB;  //支援外鍵,行鎖,查表總行數時,全表掃描
          alter table t1 engine=MYISAM;  //不支援外鍵,表鎖,查表總行數時,不需要全表掃描

檢視表的存儲引擎:show create table t1;