Mac 終端操作數據庫


名詞解釋:

 

事務:一個事務(transaction)中的所有操作,要么全部完成,要么全部不完成,不會結束在中間某個環節。事務在執行過程中發生錯誤,會被回滾(Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。簡稱:原子性

 

1.進入mysql命令: /usr/local/mysql/bin/mysql -u root -p

 

2.輸入你的密碼:xxxx

 

3. 連接遠程服務器 mysql -h 39.106.41.11 -utest -pgloryroad -p3306

 

 mysql 命令需要增加到path路徑下

 

4.展示數據庫:show databases;

 

5.切換數據庫: use 數據庫名稱;

 

6.查看你當前選中的數據庫:select database();

 

7.展示數據庫中的表: show tables;

 

8.創建數據庫:create database gloryroad;

 

9.創建表:create table test(id int,name varchar(20));

 

10:插入數據:insert into test values(1,"lilaoshi");

 

11.更新數據:update test set name="cailaoshi" where id = 2;

 

12.刪除數據庫:drop database gloryroad; (慎重操作)

 

13.刪除表的數據:delete from test;

 

14.刪除表數據和表結構:drop table test;

 

15.建一個復雜的表:CREATE TABLE `studentinfo` (   `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '不為空的自增長的主鍵ID',   `student_id` varchar(20) NOT NULL,   `name` varchar(30) NOT NULL,   `sex` char(4) DEFAULT NULL,   `tel` varchar(13) NOT NULL,   `AdmissionDate` timestamp DEFAULT '0000-00-00 00:00:00',   `status` tinyint(2) DEFAULT '0',   PRIMARY KEY (`ID`),   UNIQUE KEY `tel` (`tel`),   UNIQUE KEY `student_id` (`student_id`) ) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8 COMMENT='學生信息表';

 

遇到了一個錯誤:

 

ERROR 1067 (42000): Invalid default value for 'AdmissionDate'

 

產生的原因:

 

是因為sql_mode中的NO_ZEROR_DATE導制的,在strict mode中不允許'0000-00-00'作為合法日期

 

查看sql_mode:show variables like 'sql_mode';

 

+---------------+--------------------------------------------------------------------------------------------------------------+

| Variable_name | Value |

+---------------+--------------------------------------------------------------------------------------------------------------+

| sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |

+---------------+--------------------------------------------------------------------------------------------------------------+

 

解決辦法:set sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

 

16:創建一個關聯的表:

 

create table grade( ID int auto_increment not null, stuID varchar(20), course varchar(20) not null, score tinyint(4) default 0, primary key (ID), key idx_stuid(stuID), CONSTRAINT FK_ID FOREIGN KEY(stuID) REFERENCES studentInfo(student_id) )engine=innodb character set utf8 comment "學生成績表";

 

名詞解釋-外鍵:

 

外鍵: grade表中插入的stuID字段的數據必須在studentInfo 的student_id中存在,不在,則不讓插入。 刪除studentInfo中的student_id數據,那么grade中相關 的stuID數據必須先刪除,才能成功。

 

示例:

 

studentInfo student_id:2007123 #不能直接刪除,grade表中 刪除2007123,就可以刪除 student_id:2007123 grade: stuID:2007124 插入失敗 stuID:2007123 插入成功--》把刪掉

 

 

 

*************************************************華麗的分割線***************************************************

 

python操作數據庫的模式:

 

寫一堆參數連接數據

 

獲取游標

 

執行sql

 

關閉游標

 

關閉連接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM