Mysql數據庫筆記

出錯記錄:
一、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



相關文章
相關標籤/搜索