MySQL數據類型 日期類型 ·date date數據類型負責存儲日期信息(1000-01-01到9999-12-31)可以使用數字和字元串插入(20180809或"2018-08-09")非數字或字母使用分隔符 ·datetime datetime數據類型負責存儲日期和時間信息的組合(1000-0 ...
MySQL數據類型
- 日期類型
·date
date數據類型負責存儲日期信息(1000-01-01到9999-12-31)
可以使用數字和字元串插入(20180809或"2018-08-09")非數字或字母使用分隔符
·datetime
datetime數據類型負責存儲日期和時間信息的組合(1000-01-01 00:00:00到9999-12-31 23:59:59)
可以使用數字和字元串插入(20180809122556或"2018-08-09 12:25:56")
·time
time數據類型負責存儲時間信息(-838:59:59到838:59:59)
·timestame
timestame自動獲取當前的日期和時間
- 數值數據類型
·bool和boolean
bool和boolean只是tinyint(1)的別名
·tinyint
tinyint數據類型是MySQL排名第五的整數範圍(無符號值:0~255 有符號值:-128~127)
·smallint
smallint數據類型是MySQL排名第四的整數範圍(無符號值:0~65535 有符號值:-32768~32767)
·mediumint
mediumint數據類型是MySQL排名第三的整數範圍(無符號值:0~16777215 有符號值:-8388608~8388607)
·int
int數據類型是MySQL排名第二的整數範圍(無符號值:0~4294967295 有符號值:-2147483648~2147483647)
·bigint
bigint數據類型是MySQL排名第一的整數範圍(無符號值:0~18446744073709511615 有符號值:-9233372036854755808~9233372036854755807)
·decimal
decimal數據類型是存儲為字元串的浮點數(無符號值:2.2250738585072014E-308~1.7976931348623157E+308 有符號值:-1.7976931348623157E+308~2.2250738585072014E-308)
·double
double數據類型是雙精度浮點數(無符號值:2.2250738585072014E-308~1.7976931348623157E+308 有符號值:-1.7976931348623157E+308~2.2250738585072014E-308)
·float
float數據類型是單精度浮點數(無符號值:1.175494351E-38~3.402823466E+38 有符號值:-3.402823466E+38~-1.175494351E-38)
浮點型比如:double(M,D) M存儲數值的個數,D小數的位數
- 字元串數據類型
·char
char數據類型為MySQL提供了固定的長度,支持最大255個字元,如果插入的字元不足占用length指定的長度,剩餘部分用空格填充
·varchar
varchar數據類型是MySQL的可變長度,支持長度為65536個字元,會保留尾部的空白部分
·longblob(longtext非二進位)
longblob數據類型是MySQL以二進位字元串表示形式,支持長度4294967259個字元
·mediumblob(mediumtext非二進位)
mediumblob數據類型是MySQL二進位字元串表示形式,支持長度16777215個字元
·blob(text非二進位)
blob數據類型是MySQL二進位字元串表示形式,支持長度65535個字元
·tinyblob(tinytext非二進位)
tinyblob數據類型是MySQL二進位字元串表示形式,支持長度255個字元
MySQL屬性
- primary key
主鍵,只能出現一次
創建自動增加主鍵
create table xiu ( id smallint not null auto_increment )
創建單欄位主鍵
create table xiu ( id varchar(255), primary key(id) )
創建多欄位主鍵
create table xiu ( id varchar(255) not null, age varchar(255) not null, primary key(id,age) )
- not null
不能為空
- auto_increment
自動增長
- binary
區分大小寫
- unique
只能出現一次,null可以多次出現
- national
確保使用預設字元集
- default
確保沒有任何值可用的情況下,賦予某個常量值
- zerofill
前導,用0填充
- unsigned
設置負號
操作資料庫
- 查看資料庫
show databases;//查看所有資料庫
- 添加資料庫
create database xiu;//添加名為xiu的資料庫
- 刪除資料庫
drop database xiu;//刪除名為xiu的資料庫
- 預設資料庫
use xiu;//預設為xiu資料庫
操作資料庫表
- 添加表
create table xiu ( id tinyint primary key auto_increment,//主鍵,自增 name varchar(20) not null,//不能為空 age int not null//不能為空 )
- 查詢表
show create table xiu;//查詢xiu表
- 重命名
rename table xiu to kang;//將xiu表重命名為kang表
- 刪除表
drop table xiu;//刪除xiu表
操作資料庫欄位
- 添加一個列
alter table xiu add column kang varchar(10);
- 修改一個列
alter table xiu change kang kang varchar(10) not null;
- 刪除一個列
alter table xiu drop birdate;
- 重命名一個列
alter table kang change age sex varchar(10);
數據的操作
- 添加一條數據
insert into xiu values(1,"name","age");
- 指定欄位添加值
insert into xiu (name,age) values ("name","age");//因為主鍵是自增,所以可以不用添加id欄位
- 查看數據
select * from xiu;//*代表查詢所有欄位,也可以指定欄位查詢
- 修改數據
update xiu set name="user" where id=1;//將id=1的數據的name欄位的值修改為"user"
- 刪除數據
delete from xiu where id = 1;//刪除id為1的數據
添加查詢
(查詢xiu表的數據,條件為name="user")
select * from xiu where name = "user";
- 同時滿足兩個條件
and
(查詢xiu表的數據,同時滿足這兩個條件name="user",age=18)
select * from xiu where name="user" and age=18;
select * from xiu where name="user" or age=18;
select * from xiu where age in(24,18);
select * from xiu where age not in(24,18);
select * from xiu where age is null;
(查詢xiu表的數據,條件為age!=null)
select * from xiu where age is not null;
select * from xiu where name like("_s%");
select * from xiu where name not like("_s%");
- 範圍查詢
(查詢xiu表的數據,條件為age的值的範圍是10-30的數)
select * from xiu where age between 10 and 30;
select distinct name from xiu;
(查詢xiu表的數據,按照age從小到大排序)
select * from xiu order by age asc;
select * from xiu order by age desc;
select * from xiu limit 0,3;
select count(name) from xiu;
(將xiu表按欄位age進行分組,然後獲取每個組最大的id)
select max(id) from xiu group by age;
select * from xiu group by age having id != 2;
- where與having的區別
select xiu.id,kang.name from xiu,kang;
- as(臨時名)
as可以預設不寫
select x.id,k.name from xiu as x,kang as k;(查詢kang表成績有80分的姓名,然後根據姓名在xiu表中查詢id)
select id from xiu where name in(select name from kang where sum = 80);
select * from xiu inner join kang on xiu.name = kang.name;
select * from xiu inner join kang where xiu.name = kang.name;
select * from xiu inner join kang using (name);