MySQL資料類型
- MySQL資料庫中支援多種資料類型:數值型、字元型、日期型
常用的資料類型: 1. 整型 int:整型,存儲整數 int(M):M表示預期值,與存儲大小和數值範圍無關 id int 10000 id int(3) zerofill 10000 zerofill 零填充 會在左側補零 2. 浮點數 flaot[(M, D)]: 浮點型,存儲小數 salary float(6, 2):表示最多6位,小數占2位,最大存儲數值為:9999.99 double: 浮點型,小數 3. 字元型 char(M):固定長度的字元串類型 varchar(M):可變長度的字元串類型(推薦) text:大的字元串類型,4G文字 blob:位元組類型 4. 日期 date:日期類型,年月日 YYYY-MM-DD time:事件類型,時分秒 HH:mm:ss year:年份 YYYY格式的年份值 timestamp:年月日 時分秒 時間戳2037年某一時刻 YYYYMMDDHHmmss datetime:年月日 時分秒 YY-MM-DD hh: mm: ss 5. 整型 tinyint 1 -128~127 smallint 2 32767/65535 int 4 21億 bigint 8 兆 mediumint 3 八百多萬/一千六百多萬 注意:選擇合适的資料類型,是資料庫優化的一部分,short it better原則
資料庫中資料的使用
如何操作:程式設計語言
- SQL概述
- 結構化查詢語言,可以用于查詢和修改關系資料庫的語言
- SQL語言,是資料庫的核心語言,被ISO采納為資料庫語言的國際标準,幾乎所有的資料庫都支援
- 組成
- 資料定義語言(Data Definition Language,DDL):用于管理和定義資料庫,包括資料庫,資料表等
- create:建立資料庫和表
- drop:删除表對象
- alter:修改表結果
- 資料操作語言(Data Manipulation Language,DML):用于操作資料庫中所包含的資料
- insert:添加資料
- delete:删除資料
- update:修改資料
- 資料查詢語言(Data Query Language,DQL):用于查詢資料庫對象中所包含的資料
- select:查詢資料
- 事務控制語言(Transaction Control Language,TCL):包括送出事務、事務復原
- commit:送出事物
- rollback:事務復原
- savepoint:事物節點
- 資料控制語言(Data Control Language,DCL):用來管理資料庫中,包括管理權限以及資料更改
- grant:授權
- revoke:收回權限
- 資料定義語言(Data Definition Language,DDL):用于管理和定義資料庫,包括資料庫,資料表等
資料定義語言(DDL)
資料庫的操作
建立資料庫
- 語言格式:
create database [if not exists] 資料庫名稱 [character set [=] 編碼名稱]; 例如 create database mk; create database if not exists mk; //忽視錯誤,顯示警告 show warnings //檢視警告 create database db character set gbk; //建立指定字元集的資料庫
查詢資料庫
- 語言格式:
show databases; //檢視所有的資料庫 show create database 資料庫名稱; // 查詢某一個已經建立的資料庫
修改資料庫
- 語言格式:
alter database [if not exists] 資料庫名稱 [character set 新的編碼名稱]; 例如 alter database db character set = utf8;
删除資料庫
- 文法格式:
drop database 資料庫名稱; 例如: drop database db;
資料表的操作
建立資料表
- 選擇一個資料庫
use 資料庫名稱; eg: use mk; select database(); //檢視目前正在使用的資料庫
- 建立資料表語言:
create table 表名( 字段名 字段類型 限制, 字段名 字段類型 限制, .... ); 例如:建立使用者表 create table user( uid int, username varchar(32), password varchar(32), birthday date, sex enum('男','女') );
查詢資料表
- 文法:
show tables; //顯示目前資料庫中所有的表 show columns from 表名; //查詢某一張表表結構 desc 表名; //查詢某張表表結構
修改資料表
- 修改表名
alter table 表名 rename [to | as] 新表名; eg: alter table user rename us; alter table 舊表名 to 新表名 [, 舊表名 to 新表名........]; eg: alter table us to user;
- 添加列
alter table 表名 add [columns] 列名 列定義 [first | after 列名]; 例如: alter table user add sal double after paasword; //在指定的列後面添加新的列 alter table user add phone varchar(32); //預設在列的最後面添加新的列 alter table user add hobby varchar(32) first; //在列的最前面添加新的列
- 修改列定義
alter table 表名 modify 列名 列定義 [first | after 列名]; 例如 alter table user madify sex varchar(32) first;
- 修改列名
alter table 表名 change 列名 新列名 新的列定義 [first | after 列名]; 例如 alter table user change hobby address varchar(20) after sal;
- 删除列
alter table 表名 drop [columns] 列名; 例如: alter table user drop phone;
删除資料表
- 文法
drop table 表名; 例如: drop table user;
資料操作語言(DML)
插入操作
- 文法格式
基本的額查詢語句:select * from 表名; insert [into] 表名 [(列名1, 列名2,.........)] values|value (數值1|表達式, 數值2|表達式,......); 例如: insert into teacher (id, note) values ('1', '先争它一個億'); insert into teacher value (2, 'wangjianlin', 'xian zheng ta yi ge yi');
删除操作
- 文法操作
delete from 表名 [where 條件]; 例如: delete from teacher where id=1; //指定條件删除記錄 delete from teacher; //不帶條件删除所有記錄 擴充: truncate table 表名; //清空表中所有資料 面試題: delete删除于truncate有什麼差別?? 删除方式: delete:一條一條的删除,不清空auto_increment 記錄數 truncate:直接将表中資料進行清空,auto_increment 自增 将被重置,重新開始
修改操作
- 文法:
update 表名 set 列名1=數值, 列名2=數值,........ where 條件; 例如: update teacher set name='xiaosan', note='ming nian zai lai yi ge' where id=1;//修改指定記錄 update teacher set name='xiaosi'; //不帶條件,修改表中所有資料