SQL
庫結構操作SQL
1、查看所有資料庫
show databases;
2、切換使用資料庫
use 資料庫名;
3、創建資料庫
create database 資料庫名; create database 資料庫名 charset 'utf8';
4、洗掉資料庫
drop database 資料庫名;
表結構操作SQL
1、在某資料庫中查看所有表格
show tables;
2、查看表結構
desc 表名稱;
3、洗掉表結構
drop table 表名稱;
4、修改表名稱
rename table 舊名稱 to 新名稱;
5、修改表欄位
(1)增加一個欄位
alter table 表名稱 add 欄位名稱 資料型別; #默認在最后 alter table 表名稱 add 欄位名稱 資料型別 after 另一個欄位名; alter table 表名稱 add 欄位名稱 資料型別 first;
(2)洗掉一個欄位
alter table 表名稱 drop 欄位名稱;
(3)修改欄位的名稱
alter table 表名稱 change 舊欄位名稱 新欄位名稱 資料型別;
(4)修改欄位的資料型別
alter table 表名稱 modify 欄位名稱 資料型別;
(5)修改欄位的位置
alter table 表名稱 modify 欄位名稱 資料型別 after 另一個欄位名; #指定特定位置 alter table 表名稱 modify 欄位名稱 資料型別 first;
6、創建表格
create table 表名稱( 欄位名 資料型別 primary key auto_increment, #(自增)必須是整數列、必須是鍵列、只能有一列 欄位名 資料型別 unique key not null, #(非空)值是非空、可以有多列
欄位名 資料型別 default 默認值, #(默認值)設定默認值、可以有多列 primary key(欄位名...), #(主鍵)必須唯一、非空、只能有一個 unique key(欄位名...), #(唯一鍵)值唯一、不要求必須非空、可以有多個 foreign key(參考列名) references 主表名(被參考列名) 【on update xxx on delete yyy】 #從表上 #(外鍵)限定兩個表的兩個欄位之間的值或一個表的兩個欄位之間的值的約束關系 );
7、建表后修改表約束
(1)修改主鍵
alter table 表名稱 add primary key (欄位名...);
(2)洗掉主鍵
alter table 表名稱 drop primary key;
(3)修改唯一鍵
alter table 表名稱 add unique key(欄位串列);
(4)洗掉唯一鍵,是通過洗掉對應的索引來洗掉的
alter table 表名稱 drop index 索引名;
(5)修改表非空
alter table 表名稱 modify 欄位名 資料型別 not null;
(6)取消非空約束
alter table 表名稱 modify 欄位名 資料型別 【default 默認值】;
(7)修改默認值
alter table 表名稱 modify 欄位名 資料型別 default 默認值;
(8)取消默認值
alter table 表名稱 modify 欄位名 資料型別 【not null】;
注意:當通過修改陳述句,增加或取消默認值或非空,如果要保留默認值或非空約束,還得寫上,
(9)修改自增
alter table 表名稱 modify 欄位名 資料型別 auto_increment;
(10)洗掉自增
alter table 表名稱 modify 欄位名 資料型別;
(11)修改外鍵
alter table 主表名稱 add foreign key (主表列) references 被參考表名(被參考列名) 【on update xx on delete yy】;
(12)洗掉外鍵
alter table 主表名稱 drop foreign key 外鍵約束名; 約束英文名為(CONSTRAINT_NAME)
資料操作
增
1、為所有欄位賦值,一次添加多行或一行
insert into 表名稱 values(值1,值2...); insert into 表名稱 values(值1,值2...),(值1,值2...),...;
2、為指定欄位賦值,一次添加多行或一行
insert into 表名稱(欄位1,欄位2...) values(值1,值2...); insert into 表名稱(欄位1,欄位2...) values(值1,值2...),(值1,值2...),...;
#要求值的數量、順序與表結構的數量、順序一一對應
#默認值的位置可以寫default,自增的位置寫null
刪
1、洗掉整張表的資料
delete from 表名稱; truncate 表名稱;
2、洗掉滿足條件的行
delete from 表名稱 where 條件;
#delete是一條一條洗掉,truncate是把整張表drop掉,重新建一張,
#delete如果在事務中,可以回滾,truncate是無法回滾,
改
1、修改所有行的部分欄位
update 表名稱 set 欄位名 = 欄位值, 欄位名 = 欄位值...;
2、修改滿足條件的行
update 表名稱 set 欄位名 = 欄位值, 欄位名 = 欄位值... where 條件;
查
select * from 表名稱;
運算子
is null
is not null
與:&& and
或:|| or
between .. and ..
in(....)
not between .. and ..
not in(....)
like 配合 '%或_'
_代表一個字
%代表任意個字
條件查詢
只回傳不同的值
select distinct name from users;
回傳按照第1列的升序排序,desc降序,如果想在多個列上進行降序排序,必須對每一列指定DESC關鍵字,
select * from users order by 1 【desc】;
回傳從第1行起的5行資料,第一個被檢索的行是第0行
select * from users limit 0,5;
回傳 “xiaoming-小明” 拼接字樣的一列資料
select concat (username,'-',NAME) from users;
查看某個表的索引
show index from 表名稱;
查看某個表的所有約束
select * from information_schema.table_constraints where table_name = '表名稱';
完整陳述句
select distinct <select_list> from <left_table> <join_type> join <right_table> on <join_condition> where <where_condition> group by <group_by_list> having <having_condition> order by <order_by_condition> limit <limit_number>
1、外鍵約束的等級
(1)Restrict方式:嚴格模式,默認的模式
(2)No action方式:在mysql和Restrict方式一樣
(3)Set null方式:置空
(4)Cascade方式:級聯
可以分別設定on update xxx on delete yyy,
修改和洗掉的約束等級可以相同也可以不同,
2、外鍵約束的操作
(1)建表的順序:先建立主表,再建立從表
(2)添加和修改從表的記錄時,參考列的值必須在被參考列的值的范圍內選擇
例如:添加和修改員工表記錄時,員工所在的部門的選擇,要在部門表的編號范圍內
(3)修改和洗掉主表的記錄時,要看約束等級,
如果是Restrict方式,那么只要被參考列的某個值被參考了,就不能隨意刪或改,
如果是Set null方式方式,那么主表對應的值被修改和洗掉了,從表對應的記錄就設定為null
如果是Cascade方式,那么主表對應的值被修改或洗掉了,從表對應的記錄跟著修改或洗掉,
(4)洗掉表順序:先刪從表,再刪主表
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/3146.html
標籤:MySQL
上一篇:完全卸載MySQL完整圖文流程
