MySQL數據庫——表操做

I、表操做java

1、建立表mysql

  基本語法以下:sql

create table 表名(
    列名    類型    是否能夠爲空,
    列名    類型    是否能夠爲空
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

下面這兩個變量是:
ENGINE :存儲引擎
charset:字符集

  一、是否可空,null表示空,非字符串session

not null    - 不可空
null           - 可空

  二、默認值,建立列時能夠指定默認值,當插入數據時若是未主動設置,則自動添加默認值函數

create table tb1(
  nid int not null defalut 2,
  num int not nul
)

  三、自增,若是爲某列設置自增列,插入數據時無需設置此列,默認將自增(表中只能有一個自增列ui

create table tb1(
    nid int not null auto_increment primary key,
    num int null
)
或
create table tb1(
    nid int not null auto_increment,
    num int null,
    index(nid)
)

  注意:3d

  (1)對於自增列,必須是索引(含主鍵)code

  (2)對於自增能夠設置步長和起始值blog

show session variables like 'auto_inc%';
set session auto_increment_increment=2;
set session auto_increment_offset=10;

shwo global  variables like 'auto_inc%';
set global auto_increment_increment=2;
set global auto_increment_offset=10;

  四、主鍵,一種特殊的惟一索引,不容許有空值,若是主鍵使用單個列,則它的值必須惟一,若是是多列,則其組合必須惟一。排序

create table tb1(
    nid int not null auto_increment primary key,
    num int null
)
或
create table tb1(
    nid int not null,
    num int not null,
    primary key(nid,num)
)

  五、外鍵,一個特殊的索引,只能是指定內容

creat table color(
    nid int not null primary key,
    name char(16) not null
)

create table fruit(
    nid int not null primary key,
    smt char(32) null ,
    color_id int not null,
    constraint fk_cc foreign key (color_id) references color(nid)
)

  

2、刪除表

drop table 表名

 

3、清空表

  表還存在,表內容清空

delete from 表名   速度慢,能回滾。
truncate table 表名 速度快,不能回滾。

 

4、修改表

  一、添加列

  (1)添加新的一列,默認添加到最後面

alter table 表名 add 列名 類型

  (2)添加新的一列,位於指定列的後面/前面

alter table 表名 add 列名 類型 after/before 指定列列名;

  (3)添加新的一列,位於第一列

alter table 表名 add 列名 類型 first;

  二、刪除列

alter table 表名 drop column 列名

  三、修改列

  (1)只修改列的類型

alter table 表名 modify column 列名 類型;  -- 類型

  (2)既修改列名也修改類型

alter table 表名 change 原列名 新列名 類型; -- 列名,類型

  四、添加主鍵

alter table 表名 add primary key(列名);

  五、刪除主鍵

alter table 表名 drop primary key;
alter table 表名  modify  列名 int, drop primary key;

  六、添加外鍵

alter table 從表 add constraint 外鍵名稱(形如:FK_從表_主表) foreign key 從表(外鍵字段) references 主表(主鍵字段);

  七、刪除主鍵

alter table 表名 drop foreign key 外鍵名稱

  八、修改默認值

ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;

  九、刪除默認值

ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;

  實例:

show tables; #展現當前庫下的全部表名
SELECT * from user_info; #查看錶的信息
alter table user_info add class int(4) #爲表添加一新的一列,默認添加到最後面。

  

  十、修改表名字,rename法

--語法: rename table 原表名 to 新表名;
--更改user_infor表爲user。
mysql> rename table user_info to user;

  

 

II、表內容操做

1、增

  語法:insert into 表 (列名,列名...) values (值,值,值...)

  一、插入單條數據

insert into 表 (列名,列名...) values (值,值,值...)

  二、插入多條數據

insert into 表 (列名,列名...) values (值,值,值...),(值,值,值...)

  三、插入另外一條語句的查詢結果

insert into 表 (列名,列名...) select 列名,列名... from 表

  

2、刪

  語法:delete from 表

delete from 表;
delete from 表 where id=1;

  

3、改

  語法:update 表 set 列名 = '更改數值' where id>1 (where後攜帶條件)

update 表 set name = 'nick' where id>1

 

4、查

  語法:select * from 表

select * from 表
select * from 表 where id > 1
select nid,name,gender as gg from 表 where id > 1

  注:as用作別名,可省略

 

5、條件

  語法:select * from 表 where id > 1

  一、多個條件(and)

select * from 表 where id > 1 and name != 'nick' and num = 12;    # 多個條件

  二、id在5到16之間(between ... and)

select * from 表 where id between 5 and 16;                       # id在5到16之間

  三、id在元祖中(in)

select * from 表 where id in (11,22,33);                          # id在元祖中

  四、id不在元祖中(not in)

select * from 表 where id not in (11,22,33);                      # id不在元祖中

  五、id在查詢結果中

select * from 表 where id in (select nid from 表);                # id在查詢結果中

  

6、通配符

  語法:select * from 表 where name like '_n%'

  一、ni開頭的全部(多個字符串)

select * from 表 where name like 'ni%'  # ni開頭的全部(多個字符串)

  二、s開頭的全部(一個字符)

select * from 表 where name like 's_'

  

7、限制

  語法:select * from 表 limit 9,5;

  一、前n行

select * from 表 limit 5; # 前5行

  二、從第n行開始的m行

select * from 表 limit 9,5;          # 從第9行開始的5行
select * from 表 limit 5 offset 9    # 從第9行開始的5行

 

8、排序

  語法:select * from 表 order by 列1 desc,列2 asc

  注:asc(升序)、desc(降序),默認升序

  一、根據 「列」 從小到大排列

 select * from 表 order by 列 asc

  二、根據 「列」 從大到小排列

select * from 表 order by 列 desc

  三、根據 「列1」 從大到小排列,若是相同則按列2從小到大排序

select * from 表 order by 列1 desc,列2 asc

  

9、分組

  語法:select num from 表 group by num

select num from 表 group by num           # 根據num分組
select num,nid from 表 group by num,nid   # 根據num和nid分組
select num,nid from 表  where nid > 10 group by num,nid order nid desc
select num,nid,count(*),sum(score),max(score),min(score) from 表 group by num,nid  # 內置函數
select num from 表 group by num having max(id) > 10    # 前面計算的結果交由後面處理

  注:

  (1)group by必須在where以後,order by以前

 

10、連表

  語法:inner join . on(內鏈接)left join . on(左鏈接)right join . on(右鏈接)

  一、無對應關係則不顯示(where)

select A.num, A.name, B.name
from A,B
Where A.nid = B.nid

  二、無對應關係則不顯示(inner join ... on)

select A.num, A.name, B.name
from A inner join B
on A.nid = B.nid

  三、A表全部顯示,若是B中無對應關係,則值爲null(left join ... on)

select A.num, A.name, B.name
from A left join B
on A.nid = B.nid

  四、B表中全部顯示,若是B中無對應關係,則值爲null(right join ... on)

select A.num, A.name, B.name
from A right join B
on A.nid = B.nid

  

11、組合

  語法:unionunion all

  一、組合,自動處理重合

select nickname
    from A
    union
    select name
    from B

  二、組合,不處理重合

select nickname
    from A
    union all
    select name
    from B
相關文章
相關標籤/搜索