mysql 增刪改整理

建立數據庫

Create  database ‘database_name’;數據庫

查看數據庫

show database_name;spa

查看數據庫建立語句

show create database db_name;blog

刪除數據庫

drop database db_name;索引

修改數據庫

Alter database db_name new options;io

For exampletable

aleter database db1 default charset GBK;class

建立表

create table student(效率

name varchar(20),date

gender enum(‘male’, ‘female’, ’secret’),select

age tinyint,

height float

);

查看錶

show tables;

模糊匹配查詢

關鍵字: like

%:能夠表明任意字符

_:下劃線,能夠表明任意的當個字符

表名模糊匹配

show tables like ‘class_%’;(全部以class開頭的表面)

內容模糊匹配

select * from student where name like ‘周%’;(全部以周開頭的名字)

select * from student where name like ‘%國%’;(全部包含國自的名字)

select * from student where name like ‘%%軍’;(全部軍字結尾的名字)

刪除表

drop table table_name;

Drop table if exists table_name;(若是表存在則刪除)

修改數據表

更名關鍵字:rename

增長:add

刪除:drop

重命名:change

修改:modify

關鍵字alter

alter table 表名 子命令語句

修改表名

alter table table_name rename to new_table_name;

新方法

rename table table_name to new_table_name;

新增長一列

alter table table_name add 新字段名 字段類型

alter table student add score tinyint;

刪除一列

alter table table name drop field_name

修改字段類型

alter table table_name modify field_name 新的字段類型

alter table student modify name varchar(50);

修改字段的枚舉值

alter table student  change gender sex enum(‘male’, ‘female’) after score;

修改表選項

alter table 表名 新的表選項

alter table mg_teacher default charset utf8;

數據操做

插入數據

Insert into 表名(字段列表) values(值列表) #當插入所有值的時候字段列表能夠省略

一次插入多條數據

insert into student(field1, field2, field3) values

(value1, value2, value3),

(value1, value2, value3),

(value1, value2, value3);

刪除數據

delete from 表名[刪除條件]

delete from student where score<=90;

修改數據

update table_name set 字段1=新值1,字段2=值2…[修改條件];

Update student set age. = age + 1;

特殊查詢

什麼是索引?

先來看一條select語句:

select * from student where score >= 97.5;

此時,若是數據庫從第1條記錄開始遍歷查詢,直到一個一個的找到分數爲97.5分的學生,效率很顯然很低下!可是,此時若是在score字段上加上一個索引,此時就能夠極大的加快數據表的查詢速度!

索引分類:

普通索引

語法爲:

key(字段名1,字段名2……)或index(字段名1,字段名2……)

惟一鍵索引

其實就是惟一鍵

unique key(字段名1,字段名2……)

主鍵索引

其實就是主鍵

primary key(字段名1,字段名2……)

例子

create table suoyin(

a int,

b int,

c int,

key(a),  — 普通索引

unique key(b), —惟一索引

primary key(c) — 主鍵索引

);

缺點?

  1. 佔用必定的磁盤空間
  2. 索引在提升查詢速度的同時,也下降了增刪改的速度

聯合查詢

union

select 語句1

union[union選項]

select 語句2

所謂的聯合查詢就是將多個查詢結果縱向上拼接,全部查詢語句的字段數量應該是一致,好比,不能一個3列,一個5列!

用於相同的兩個表相同的字段進行拼接查詢

交叉鏈接查詢

cross join

交叉鏈接是最容易理解的,就是從一張表的每一條記錄去鏈接另一張表的每一條記錄,而且全部的記錄都會被保存下來,就是對兩張表作笛卡爾積!

假如表A有m條記錄,表B有n條記錄,它們作笛卡爾積(交叉鏈接)的結果一共就有m*n條記錄!

Select * from A cross join B;

內鏈接查詢

inner join

內鏈接的含義就是:

數據在左表存在,同時在右表又有相對應的匹配的結果纔會被保存,若是沒有匹配上,咱們就認爲該條記錄沒有意義,就不會被保存![若是有一方的字段的值是空的時候會忽略]

上面叫匹配?就是存在某種關係可以使得兩張表彼此識別本身,體如今語法上,每每就是兩張表中具備相同的某個字段值!

select * from 左表 [inner] join 右表 on 左表名.字段 = 右表名.字段名

左外鏈接

left join

跟內鏈接同樣,一樣是拿左表的每個記錄按照on後面的條件去匹配右表的每一條記錄,若是匹配成功,就保存兩個表的全部的記錄,若是匹配失敗(這裏的匹配失敗是指左表的某條記錄跟右表的全部記錄進行匹配的時候,沒有一條是成功的!),此時,依然保留左表的這條記錄,右表的記錄所有爲NULL,此時左表也叫作主表!

右外鏈接

right outer join,其中這裏的outer能夠省略!因此,右外鏈接也一般簡稱右鏈接

跟內鏈接同樣,一樣是拿左表的每個記錄按照on後面的條件去匹配右表的每一條記錄,若是匹配成功,就保存兩個表的全部的記錄,若是匹配失敗(這裏的匹配失敗是指左表的某條記錄跟右表的全部記錄進行匹配的時候,沒有一條是成功的!),此時,依然保留右表的這條記錄,左表的記錄所有爲NULL,此時右表也叫作主表!

子查詢

select * from student where score = (select max(score) from student);

select * from student where home in (select name from home_in_sky);

select * from student where (age, score) = (select max(age), max(score) from student);

exists 子查詢

exists子查詢主要是用來判斷,返回一個布爾值:true或false!

若是exists後面的查詢語句有結果集返回(查詢到了記錄),返回真,不然就返回假!

因此,exists子查詢的目的不是爲了獲得結果集,而是爲了判斷後面的查詢語句是否查詢到了記錄!

select exists(select * from user where name= ‘abc’ and password = ‘123456’)

相關文章
相關標籤/搜索