出錯記錄:
一、mysql服務啓動不了,進程意外終止 1067
錯誤顯示:can not connect to mysql server on local hosts(1061)
解決方法:原來是我傻逼把原來的MySQL數據庫給刪掉了
二、服務已經啓動,可是輸入密碼時 進不去
錯誤顯示:ERROR 1045 <28000>:Access denied for user'root'@'locahost'<using password:YES>
解決方法:http://blog.sina.com.cn/s/blog_759a5a7c01017dj0.html
三、
默認端口號:3306
把mysql的bin目錄添加到環境變量中就能夠在任意目錄下均可以打開bin目錄了。
以前看到的root@localhost這些是由於別人改了提示符:
mysql>prompt \u@ \h \d>
\u表示當前用戶 \h表示服務器名稱 \d表示當前數據庫
MySQL語句規範:html
關鍵字和函數名稱所有大寫;
數據庫名稱、表的名稱、字段的名稱所有小寫;
SQL語句必須以分好結尾。
加中括號表示能夠省略
顯示當前版本;
mysql>SELECT VERSION();
顯示當前時間;
mysql>SELECT NOW();
顯示當前用戶;
mysql>SELECT USER();
修改原始密碼:
打開命令提示符界面, 執行命令: mysqladmin -u root -p password 新密碼
執行後提示輸入舊密碼完成密碼修改, 當舊密碼爲空時直接按回車鍵確認便可。
開始:mysql
//建立數據庫:
MySQL>CREATE DATABASE (IF NOT EXISTS) case;
//顯示已經存在的數據庫;
MySQL>SH0W DATABASES;
//重命名數據庫名稱
先關閉數據庫,而後找到文件夾所在目錄,更改文件夾名稱。
//顯示某個數據庫;
MySQL>SHOW CREATE DATABASE case;
//更改數據庫編碼爲utf8;
MySQL>ALTER DATABASE case CHATACTER SET=utf8;
//刪除數據庫:
MySQL>DROP DATABASE case;
修改和刪除
修改默認值:
ALTER TABLE TB_NAME ALTER 字段名 SET DEFAULT 默認值;
ALTER TABLE TB_NAME ALTER 字段名 DROP DEFAULT ;
修改表名
ALTER TABLE 表名 RENAME TO 新名;
修改字段名
ALTER TABLE 表名 CHANGE 舊字段 新字段 新字段數據類型
修改字段數據類型
ALTER 表名 MODIFY 屬性名 數據類型
增長字段
ALTER TABLE 表名 ADD 字段1 字段1的條件 [FIRST | AFTER 字段2];
刪除字段
ALTER TABLE 表名 DROP 字段;
修改字段的排列位置:
ALTER TABLE 表名 MODIFY 字段1 字段1數據類型 FIRST|AFTER 字段2;
更改表的存儲引擎:
ALTER TABLE 表名 ENGINE=引擎名
添加主鍵約束:
ALTER TABLE 表名 ADD PRIMARY KEY (外鍵名)
刪除外鍵約束:
ALTER TABLE 表名 DROP FOREIGN KEY (外鍵別名)
修改數據表的名稱:
ALTER TABLE table_name RENAME TO new_table_name
刪除記錄:
delete from users where id=1;
修改記錄:
update 表名 set 字段=新值 where 條件;
update users set id=1 whers sex=1;
表字段的修改:
增長字段
ALTER table tb_name ADD column_name 屬性 位置; //增長一個字段,默認爲空
alter table user add COLUMN new2 VARCHAR(20) NOT NULL; //增長一個字段,默認不能爲空
刪除字段
alter table user DROP COLUMN new2; //刪除一個字段
alter table user DROP column1,column2; //刪除多列sql
修改一個字段
alter table user MODIFY new1 VARCHAR(10); //修改一個字段的類型
alter table user CHANGE new1 new4 int; //修改一個字段的名稱,此時必定要從新指定該字段的類型
第二章:
一、數據類型:
整型:
TINYINT -2^7->2^7-1
SMALLINT -2^15->2^15-1
MEDIUMINT -2^23->2^23-1
INT -2^31->2^31-1
BIGINT -2^63->2^63-1
浮點型:
FLOAT[(M,D)] m表明總位數,d表明小數點後位數
DOUBLE[(M,D)]
時間日期型:(瞭解)
YEAR 1個字節
TIME 3
DATE 3
DATETIME 8
TIMESTAMP 4
字符型:
CHAR(M) 0<=M<=255
VARCHAR(M)
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
ENUM('value1,'value2'...)
SET('value1','value2',,,)
2、數據表的操做
打開數據庫:
USE test(數據庫名稱)
建立數據表:
CREATE TABLE (IF NOT EXISTS) table_name<數據表名字>(column_name<根據項目大小肯定的列名>data_type<數據類型>,..)
mysql>USE TEST;
>CREATE TABLE tb1(
>username VARCHAR(20),
>age TINYINT UNSIGNED,<unsigned意思是不要負數>
>salary FLOAT(8,2) UNSIGNED <float(8,2)的意思是總共有8位數,其中小數點後有2位)>
>);
查看數據表列表
SHOW TABLES FROM test;
查看數據表結構
SHOW COLUMNS FROM TB1;
插入記錄INSERT
INSERT [INTO] tb1_name [(col_name,,,)] VALUES(val,,,)
INSERT TB1 (username ,salary) VALUES ('tom',26,919.3);
插入的也能夠是算式好比:33-2 或者函數式:MD5('342')
也能夠一次插入多條記錄,記錄間用,分開就行。
記錄查找SELECT
SELECT * FROM TB1_NAME
三、空值與非空數據庫
NULL 字段值能夠爲空 NOT NULL 字段禁止爲空
建立表,設定某些量空與非空
>CREATE TABLE TB2(
>username VARCHAR(20) NOT NULL,
>age TINYINT UNSIGNED NULL,
>);
>INSERT TB2 VALUES(NULL,20);
<將報錯說username不可爲空>
四、自動編號(AUTO_INCREMENT)不能用char類型服務器
自動編號,且需與主鍵組合使用
默認狀況下,起始值爲1,每次的增量爲1;
五、主鍵約束(PRIMARY KEY)函數
每張數據表只存在一個主鍵
主鍵保證記錄的惟一性
主鍵自動爲not null
多個字段聯合主鍵:
PRIMARY KEY(username,age);
>CREATE TABLE TB2(
>id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
AUTO_INCREMENT(自動遞增)必須和PRIMARY KRY一塊兒使用,而PRIMARY KEY則不必定要和AUTO_INCREMENT一塊兒使用
>username VARCHAR(20) NOT NULL,
>);
>SHOW COLUMNS FROM TB3;
六、惟一約束(UNIQUE KEY)編碼
惟一約束
惟一約束能夠保證記錄的惟一性
惟一約束的字段能夠爲NULL
每張數據表能夠存在多個惟一約束
與主鍵的區別:一張數據表只能有一個主鍵,而UNIQUE KEY能夠有多個能夠NULL
>CREATE TABLE TB4(
>id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,<自動編號字段>
>username VARCHAR(20) NOT NULL UNIQUE KEY,
>age TINYINT UNSIGNED
>);
插入記錄:INSERT TB4(username,age) VALUES('TOM',23);
當再次寫入一樣的記錄時,將提示錯誤,由於username用了unique約束。可想而知這個約束在數據表裏能夠有多個。
七、默認約束(DEFAULT)spa
默認值
當插入記錄時,若是沒有明確爲字段賦值,則自動賦予默認值。
>CREATE TABLE TB5(
>id SAMLLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
>username VARCHAR(20) NOT NULL UNIQUE KEY,
>sex ENUM('1','2','3') DEFAULT '3'
>);
驗證:
INSERT TB5(username)VALUES('TOM');
將發現自動給sex賦值3了。
八、外鍵約束server
要求:
表與表之間的連接
父表和子表必須使用相同的儲存引擎(InnoDB),而禁止使用臨時表:
外鍵列和參照列必須具備相識的數據類型。其中數字的長度或是否有符號位必須相同;而字符 的長度則能夠不一樣
外鍵列和參照列必須建立索引。若是外鍵列不存在索引的話,MySQL將自動建立索引。
CREATE TABLE provinces(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
pname VARCHAR(20) NOT NULL
);
查看數據表的引擎:show create table provinces;
CREATE TABLE users(
id SMALLINT UNSIGNED PRIMARU KEY AUTO_INCREMENT,
username VARCHAR(10) NOT NULL,
//添加省份的話能夠不用添加字段,只要添加關係表省份的編號就行
pid SMALLINT UNSIGNED,
FOREIGN KEY(pid)REFERENCES provinces(id)
);
查看索引:SHOW INDEXES FROM provinces\G;
SHOW INDEXES FROM users\G;
外鍵約束的參數:
CASCADE:從父表刪除或更新且自動刪除或更新字表中匹配的行
SET NULL:從父表刪除或更新行,並設置子表中的外鍵列爲NULL,若是使用該選項,必須保證 子表列沒有指定NOT NULL
TESTRICT(約束、限制):拒絕對父表的刪除或更新操做
NO ACTION:標準的SQL的關鍵字,在MySQL中RESTRICT相同。
爲自動編號的字段賦值
能夠書寫成default 或者null
建立表:
CREATE TABLE users(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20) NOT NULL,
password VARCHAR(32) NOT NULL DEFAULT 123,
age TINYINT UNSIGNED NOT NULL,
sex BOOLEAN
);
插入記錄:
INSERT users VALUES(NULL,'Jack',159357,20,1);
九、htm