表的介紹
數據庫是有組織可共享的,持久存儲和管理數據的容器。
數據表是由表名、表中的字段和表的記錄三個部分組成的表。
數據存放在表裏,表存放於庫裏.
表的創建用到的數據類型:
1.整形:
1.tinyint(1字節) 有符號值:-128到127(-2^7~2^-1)
無符號值:0到255(0到2^8-1)
2.smallint(2字節) 有符號值:-32768到32767(-2^15到2^15-1)
無符號值:0到65535(0到2^24-1)
3.mediumint(3字節) 有符號值:-8388608到8388607(-2^23到2^23-1)
無符號值:0到16777215(0到2^24-1)
4.int(4字節) 有符號值:-2147483648到2147483647(-2^31到2^31-1)
無符號值:0到16777215(0到2^32-1)
5.bigint(8字節) 有符號值:-9223372036854775808到9223372036854775807(-2^63到2^63-1)
無符號值:0到18446744073709551615(0到2^64-1)
2.浮點數(小數):
1.float[(M,D)] -3.402823466E+38到-1.175494351E-38,0和1.175494351E-38到3.402823466E+38
M是數字總位數,D是小數點後面的位數,如果M和D被忽略,
根據硬件允許的限制來保存值。
精度浮點數精確到大約7位小數位。
2.double[(M,D)] -1.7976931348623157+308到-2.2250738585072014E-308,0和2.2250738585072014E-308到1.7976931348623157+308
3.real[(M,D)]
4.decimal[(M,D)]
3.時間日期型:
year 1字節 '2017'
time 3字節 '12:29:59'
date 3字節 '2020-01-01'
datetime 8字節 '2020-01-01 12:29:59'
timestamp 4字節 '1970-01-01 00:00:01' UTC ~ '2038-01-01 00:00:01' UTC
4.字符竄類型:
char 固定長度字符串,如char(3),如果填充'ab'時會補一個空格爲'ab '
varchar 可變長度字符串,如varchar(3),填充'ab'時就會存儲'ab'
文本:
tinytext 佔L+1個字節,L<2^8
text 佔L+1個字節,L<2^16
mediumtext 佔L+1個字節,L<2^24
longtext 佔L+1個字節,L<2^32
enum('value1', 'value2', ...) 1或2個字節,取決於枚舉值的個數(最多65535個值)
set('value1', 'value2', ...) 1,2,3,4或8個字節,取決於set成員的數目(最多64個成員)
5.二進制:
(blob可以用來保存數據量很大的二進制數據,如圖片等)
tinyblob,blob,mediumblob,longblob
(以下也是二進制類型)
binary,varbinary,bit
常用7種約束:
unsigned: 無符號約束,指定數字不能爲負數
-- 數字(整數,小數)
not null: 非空約束,指定某列不爲空 必須做數據插入
auto_increment: 自動增長約束,序號自動加一
-- 注意:必須與主鍵組合使用
-- 默認情況下,初始值爲1,每次增量爲1
unique: 唯一約束,指定某列和幾列組合的數據不能重複
-- 唯一約束可以保證記錄的唯一性
-- 唯一約束的字段可以爲空值(NULL)
-- 每張數據表可以存儲多個唯一約束
primary key: 主鍵約束,指定某列的數據不能重複、唯一
-- 每張數據表只能存在一個主鍵
-- 主鍵保證記錄的唯一性
-- 主鍵自動爲NOT NULL
foreign key: 外鍵,指定該列記錄屬於主表中的一條記錄,參照另一條數據
default 0: 當插入數據的時候,如果字段沒有數據,則自動插入默認值 set和enum不允許設置默認值
表的操作
create table 1706a_class(
num int auto_increment primary key,
name varchar(20) unique not null,
gender enum(“男”,“女”,“保密”),
age tinyint unsigned,
hobby char(30),
high decimal(5,2)
);
create table +表名(
列名 數據類型 約束,
列名 數據類型 約束,
列名 數據類型 約束,
列名 數據類型 約束 最後一列不加,
);
select * from 表名 查看錶中數據 *表示選區全部的列
插入數據 insert into +表名(表中的字段,,)value(字段所對應的記錄,,);
insert into 1706a_class (num,name,gender,age,hobby,high)value(2,‘呵呵’,1,19,‘呵呵’,166.50);
insert 表名 values();
刪除表內數據,用 delete。格式爲:
delete from 表名 where 刪除條件;
delete from 表名 刪除表中所有數據
alter table 表名 drop 列名 刪除一列
drop table 表明 刪除表
清除表內數據,保存表結構,用 truncate。格式爲:
truncate table 表名;
show tables; 查看數據庫中存在什麼表
describe(desc) 表名; 顯示錶的結構
update 表名 set 字段名=‘新內容’ + where條件 修改添加表中數據
alter table 表明 add column 列名 varchar(45) not null(類型和約束); 添加一列(默認最後一列)
alter table 表名 add (column) 要添加的列名 varchar(45) not null(類型和約束) after 指定列名; 添加在指定的一列後面
alter table 表名 add column 添加的列明 varchar(45) not null first; 添加到第一列
rename table 原表名 to 新名; 修改表名
show create table 表名 查看創表語句(結構)
alert table 表名 change 列名 新列名 數據類型及約束; 修改列名
alter table 表名 modify 列名 類型
select 要列出的列名 from 列所在的表名 order by 排序的列名; 排序 正序
select 要列出的列名 from 列所在的表名 order by 排序的列名 desc; 排序 倒敘 limit 幾到幾 顯示前幾個
avg(列名) 求平均值
select * from 表名 where 列名 where like ‘%’; 查找匹配字符串所在記錄