mysql是一個開源的關係型數據庫管理系統,現在是oracle公司旗下的一款產品,由C和C++語言編寫,可移植性高。支援
在多種操作系統上安裝,最常見有AIX,linux,window。mysql因爲開源免費,所以受到了目前網際網路行業的歡迎
以mysql作爲數據庫,linux系統作爲操作系統,apache或者nginx作爲web伺服器,perl/php/python作爲伺服器端的腳
本直譯器,就可以搭建起一個免費的網站。被業界稱爲LNMP或者LAMP
- DDL: 數據定義語言 (Data Defifinition Language) 例如:建庫,建表
- DML: 數據操縱語言(Data Manipulation Language) 例如:對錶中的數據進行增刪改操作
- DQL: 數據查詢語言(Data Query Language) 例如:對數據進行查詢
- DCL: 數據控制語言(Data Control Language) 例如:對使用者的許可權進行設定
建立數據庫 sql:
create database + db_name; # create database test;
進入數據庫:
use + db_name; # use test;
檢視當前所在數據庫:
select database(); # 注意此處是一個函數, 需要加()呼叫
判斷數據庫是否存在, 如果不存在則建立:
create databses if not exists db_name; # create database if not exists test1;
指定數據庫編碼爲 gbk
:
create database db_name character set 'gbk'; # CREATE DATABASE test character SET 'utf8';
檢視數據庫的編碼:
show create database db_name; # show create database test;
檢視當前mysql
使用的字元集:
show variables like 'character%';
整數型別
型別 | 大小 | 範圍(有符號) | 範圍(無符號) |
---|---|---|---|
TINYINT | 1 B | (-128, 127) | (0, 255) |
SMALLINT | 2 B | (-32768, 32767) | (0, 65535) |
MEDIUMIT | 3 B | (-8388608,8388607) | (0,16777215) |
INT | 4 B | 很大 | 很大 |
BIGINT | 8 B | 很大 | 很大 |
浮點型
型別 | 大小 | 說明 |
---|---|---|
FLOAT(m, d) | 4位元組 | m代表總個數, d表示小數位個數 |
DOUBLE(m, d) | 8位元組 | m代表總個數, d表示小數位個數 |
定點型別
型別 | 大小 | 說明 |
---|---|---|
DECIMAL(m,d) | 依賴m,d | m代表總個數, d表示小數位個數 |
字串型別
型別 | 大小(實測大小爲寬度, mysql:5.7) | 用途 |
---|---|---|
CHAR | 0-255 | |
VARCHAR | 0-65535 | |
TINYTEXT | 0-255 | |
TEXT | 0-65535 | |
MEDIUMTEXT | 0-16777215 | |
LOGTEXT | 0-4294967295 |
char 和 varchar 對比: char 儲存記憶體固定, 所佔空間會大些, 但是存取速度會快一些;
時間型別
型別 | 位元組數 | 格式 | 備註 |
---|---|---|---|
data | 3 | yyy-mm-dd | 日期 |
time | 3 | HH:mm:ss | 時分秒 |
year | 1 | yyyyy | 年 |
datetime | 8 | yyyy-MM-dd HH:mm:ss | 日期+時間 |
timestamp | 4 | yyyy-MM-dd HH:mm:ss | 時間戳 |
建立表
create table table_name (
欄位一 欄位型別1 約束1 說明1,
欄位二 欄位型別2 約束2 說明2,
欄位三 欄位型別3 約束3 說明3,
欄位四 欄位型別4 約束4 說明4
)
CREATE table teacher (
id int auto_increment PRIMARY KEY,
name VARCHAR(5) NOT NULL DEFAULT "" COMMENT "老師姓名",
age TINYINT NOT null COMMENT "老師年齡",
identify VARCHAR(64) not null
)
約束條件
comment ----說明解釋
not null ----不爲空
default ----預設值
unsigned ----無符號(即正數)
auto_increment ----自增
zerofill ----自動填充
unique key ----唯一值
檢視錶基本結構資訊
show tables; -- 檢視當前數據庫所有的表
desc teacher; -- 檢視錶結構
show CREATE TABLE teacher; -- 檢視建立表的 SQL 語句
修改表名
RENAME TABLE old_table_name to new_table_name;
# RENAME TABLE teacher to tea;
增加一列
alter table table_name add column_name 型別 限定條件 說明;
# ALTER TABLE tea add gender ENUM("m", 'w', 'unknown') not null DEFAULT 'unknown';
修改列型別
alter table table_name modify column_name 新型別
# alter table tea MODIFY age int;
修改列名
alter table table_name change old_column_name new_column_name 型別 限制條件;
# ALTER TABLE tea CHANGE name nickname CHAR(50) DEFAULT 'haha';
刪除列
alter table table_name drop column_name;
# ALTER table tea DROP nickname;
刪除表
drop table table_name;
# drop table stu1;
# drop table if exists stu1;