sql語言主要用於訪問資料、查詢資料、更新資料和管理關係資料庫系統,sql語言由ibm開發。sql語言分為3種型別:
#1、ddl語句 資料庫定義語言: 資料庫、表、檢視、索引、儲存過程,例如create drop alter
#2、dml語句 資料庫操縱語言: 插入資料insert、刪除資料delete、更新資料update、查詢資料select
#3、dcl語句 資料庫控制語言: 例如控制使用者的訪問許可權grant、revoke
關閉服務端 net stop mysql
啟動服務端 net start mysql
增 create database db1 charset utf8;
查 show databases;
show create database db1;
改 alter database db1 charset gbk;
刪 drop database db1
檢視所在庫 select database();
切換庫 use db1;
增 creat table t1(id int, name char);
查 show tables;
show create table t1;
desc t1; 檢視表結構
改 alter table t1 add *** char; 新增字段
alter table t1 drop ***; 刪除字段
alter table t1 modify name char(8); 修改字段型別
alter table t1 change name name char(16); 修改原欄位名及該字段型別
刪 drop table t1;
增 insert into db1.t1(id,name) values
(1,'xionger'),(2,'xiongda');
查 select id,name from db1.t1 查指定字段
select * from db1.t1 查所有(不推薦使用)
改 update t1 set name='dd' where id=2;
刪 delete from t1 where id=2; 刪除指定字段記錄
truncate t1; 清空表中記錄(重置整張表)
create table 表名(
欄位名1 型別[(寬度) 約束條件],
欄位名2 型別[(寬度) 約束條件],
欄位名3 型別[(寬度) 約束條件]
)
案例: create table t1(id int primary key auto_inrement, name char(32) not null, *** char(6) not null default "male");
修改表名
alter table 表名 rename 新錶名;
增加字段
alter table 表名
add 欄位名 資料型別 [完整性約束條件…],
add 欄位名 資料型別 [完整性約束條件…];
alter table 表名 add 欄位名 資料型別 [完整性約束條件…] first;
alter table 表名 add 欄位名 資料型別 [完整性約束條件…] after 欄位名;
刪除字段
alter table 表名 drop 欄位名;
修改字段
alter table 表名 modify 欄位名 資料型別 [完整性約束條件…];
alter table 表名 change 舊欄位名 新欄位名 舊資料型別 [完整性約束條件…];
alter table 表名 change 舊欄位名 新欄位名 新資料型別 [完整性約束條件…];
複製表結構+記錄 (key不會複製: 主鍵、外來鍵和索引)
create table t2 select * from t1;
只複製表結構
select * from service where 1=2; 條件為假,查不到任何記錄
reate table t4 like employees;
tinyint smallint mediumint int bigint
為該型別指定寬度時,僅僅只是指定查詢結果的顯示寬度,與儲存範圍無關
float[(m,d)] [unsigned] [zerofill]
定義:m是數字總個數,d是小數點後個數。m最大值為255,d最大值為30
精確度:隨著小數的增多,精度變得不準確
double[(m,d)] [unsigned] [zerofill]
定義:m是數字總個數,d是小數點後個數。m最大值為255,d最大值為30
精確度:隨著小數的增多,精度比float要高,但也會變得不準確
decimal[(m[,d])] [unsigned] [zerofill]
定義: 準確的小數值,m是數字總個數(負號不算),d是小數點後個數。 m最大值為65,d最大值為30。
精確度: 隨著小數的增多,精度始終準確,對於精確數值計算時需要用此型別,decaimal能夠儲存精確值的原因在於其內部按照字串儲存。
日期型別
year 年
date 年-月-日
time 時:分:秒
datetime 年-月-日 時:分:秒
char : 定長,資料超出預定長度報錯,不夠用空格補位
- 特點: 查詢速度快,單浪費空間
- 檢索:在檢索或者說查詢時,查出的結果會自動刪除尾部的空格,除非我們開啟pad_char_to_full_length sql模式(set sql_mode = 'pad_char_to_full_length';)
- 注意:精準查詢時(select * from user where name='xionger';),char型別補充的空格會自動去掉進行匹配,但是用like模糊查詢時(select * from user name like 'xionger';),char型別補充的空格也會進行匹配
varchar : 變長,資料超出預定長度報錯,不夠就是實際長度
- 特點: 精準,節省空間,查詢較慢
- 檢索:尾部有空格會儲存下來,在檢索或者說查詢時,也會正常顯示包含空格在內的內容
檢視字段長度 : char_length(字段)
select char_length(name) from user;
列舉enum: 多選一
集合set: 多選多
create table type_enum(
gender enum('male','remale','serect'),
);insert into type_enum values ('remale');
create table type_enum(
gender set('a','b','c'),
);insert into type_enum values ('a', 'b');
約束條件與資料型別的寬度一樣,都是可選引數
作用:用於保證資料的完整性和一致性
primary key (pk) 標識該字段為該錶的主鍵,可以唯一的標識記錄
foreign key (fk) 標識該字段為該錶的外來鍵
not null 標識該欄位不能為空
unique key (uk) 標識該字段的值是唯一的
auto_increment 標識該字段的值自動增長(整數型別,而且為主鍵)
default 為該字段設定預設值
unsigned 無符號
zerofill 使用0填充
not null - 不可空
null - 可空
default 預設值
建立列時可以指定預設值,當插入資料時如果未主動設定,則自動新增預設值
create table user(
id int,
name char(16) not null,
*** char(6) not null default "male"
);
單列唯一
create table user(
id int unique,
name char(16)
);聯合唯一
create table server(
id int unique,
ip char(15),
port int,
ip port,unique(ip,port)
)
從約束角度看: 主鍵等於not null + unique
1.一張表中有且有乙個主鍵
2.若沒有設定主鍵則會由上到下檢索非空且唯一的字段作為主鍵
3.若沒有主鍵也沒有非空且唯一的字段,就採用預設的隱藏字段作為主鍵(7個bytes),這樣喪失了查詢效率
innodb類要依據主鍵組織資料結構(idb檔案)
索引的目的是一步步縮小查詢範圍,減少io次數
1.auto_increment通常與primary key連用
2.auto_increment通常加給id欄位
3.auto_increment只能給被定義成key(unique key,primary key)的字段加
資料庫和表的基本操作
建立資料以dataname為名的資料庫 create database dataname 檢視當前所有的資料庫 show databases 檢視以dataname為名的資料的資訊 show create database dataname 修改資料庫的編碼方式 alter database dat...
資料庫表基本操作
資料庫表基本操作 1 建立資料庫表 create table 表名稱 欄位名稱1 字段型別 字段長度 欄位名稱2 字段型別 字段長度 欄位名稱3 字段型別 字段長度 2 刪除資料庫表 drop table 表名稱 3 向表中插入資料 insert into 表名稱 插入的欄位名稱列表 values ...
MySQL三 資料庫和表的基本操作
建立資料庫語法 create database 資料庫名稱示例 create database is 建立乙個名為is的資料庫 檢視所有已經存在的資料庫 show database 檢視乙個已經存在的資料庫的資訊 show create database is mysql一旦安裝完成,建立的資料庫編...