第一篇:mysql教案講解
1、數據庫概述
1.1 什么是數據庫
數據庫DataBase 就是一個存儲數據的倉庫。
為了方便數據的存儲和管理,它將數據按照特定的規律存儲在磁盤上。通過數據庫管理系統,可有效地組織和管理存儲在數據庫中的數據。
1.2 文件與文件系統
所謂“文件”一般指存儲在外部介質上數據的集合,是操作系統(確切地說是文件系統)管理數據的基本單位。
1.3 文件系統和數據庫系統之間的區別和聯系
1.3.1 區別
(1)文件系統用文件將數據長期保存在外存上,數據庫系統用數據庫統一存儲數據;
(2)文件系統中的程序和數據有一定的聯系,數據庫系統中的程序和數據分離;
(3)文件系統用操作系統中的存取方法對數據進行管理,數據庫系統用DBMS統一管理和控制數據
(4)文件系統實現以文件為單位的數據共享,數據庫系統實現以記錄和字段為單位的數據共享。
1.3.2 聯系
(1)均為數據組織的管理技術;
(2)均由數據管理軟件管理數據,程序與數據之間用存取方法進行轉換;(3)數據庫系統是在文件系統的基礎上發展而來
1.3.3 讀寫數據庫與讀寫文件哪個更快 1.4 數據存儲方式
學校需要存儲學生和教師信息 公司需要存儲員工信息和公司的資料
這些數據或者信息是如何存儲的?數據存儲方式經歷了三個階段:人工管理階段、文件系統階段、數據庫系統階段(注:新興數據存儲系統--例如google的bigtable)。
1.4.1 人工管理階段
磁帶、磁盤、手工記錄
1.4.2 文件系統階段
數據存儲在計算機的磁盤上,數據以文件的形式出現,通過文件系統來管理這些文件,文件系統通過路徑和文件訪問文件中的數據
1.4.3 數據庫系統階段
使用專門的數據庫來管理數據。用戶在數據庫系統中建立數據庫,然后在數據庫中建立表,最后將數據存儲在這些表中--表是數據庫存儲數據的基本單位。
用戶通過數據庫管理系統來查詢表中的數據。1.5 常用的數據庫
甲骨文的Oracle:大型數據庫,Linux/WINDOWS/Soloras/SUSE Sybase:大型數據庫
Mysql:開源,中大型數據庫,Linux/Windows/… 微軟SQL Server:Windows Postgre SQL:安全開源免費,中型,Linux Access:
SQLITE:小型數據庫,Linux/Windows,嵌入式系統
1.6 數據庫技術構成
數據庫技術是解決數據存儲、管理、統計、查詢等處理而使用的一門廣泛技術 數據Data:是數據庫中存儲的基本對象,是描述事物的符號,如數字、文件、圖形、圖像等
數據庫Database,DB:是長期儲存在計算機內、有組織的、可共享的數據集合。數據庫管理系統 Database Management System,DBMS:是位于用戶與操作系統之間的管理數據庫的軟件(定義、管理和維護數據)。MySql是一中DBMS。數據庫系統 Database System--DBS:是指在計算機系統中引入數據庫后的系統。其組成如下:計算機系統、數據庫、數據庫管理系統及其開發工具、人員(數據庫管理員DBA、終端用戶)
通常情況下,把數據庫系統簡稱為數據庫。
SQL(Structed Query Language)語言 :結構化查詢語言,是數據庫管理系統通過SQL語句來操作數據庫中的數據。標準的SQL命令,比如“Select”、“Insert”、“Update”、“Delete”、“Create”和 “Drop”常常被用于完成絕大多數數據庫的操作。
數據庫訪問技術:
ODBC(Open Database Connectivity開放式數據庫連接)
是應用程序和數據庫系統之間的中間件,用來在數據庫管理系統中存取數據的標準應用程序接口。
它通過使用相應應用平臺上和所需數據庫對應的驅動程序與應用程序的交互來實現對數據庫的操作,避免了在應用程序中直接調用與數據庫相關的操作,從而提供了數據庫的獨立性。
JDBC / JDO(Java Data Base Connectivity,java數據庫連接)
是一種用于執行SQL語句的Java API,可以為多種關系數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成。JDBC提供了一種基準,據此可以構建更高級的工具和接口,使數據庫開發人員能夠編寫數據庫應用程序,同時,JDBC也是個商標名。
C API(C語言連接數據庫)
MySQL提供C語言使用的API.C代碼的API是隨MySQL一起發布的.它包含在mysqlclient庫中, 可以使C程序來訪問數據庫.綜上所述,數據庫技術主要包括:數據庫系統、SQL語句、數據庫訪問技術
1.7 MySQL邏輯架構
一張好的圖片會是你更容易理解MySQL各個組件的工作方式。
1、最上一層所包含的服務并不是MySQL所獨有的技術。它們都是服務于C/S程序或者是這些程序所需要的:連接處理,身份驗證,安全性等等。
2、第二層是我們所感興趣的。這是MySQL的核心部分。包括了查詢的解析,分析,優化,緩存以及所有內置的函數(如日期,時間,數學運算,加密)。還有一些功能是涉及到了存儲引擎,如存儲過程,觸發器,視圖等。
3、第三層包括了存儲過程。它們負責存儲和獲取所有存儲在MySQL中的數據。就像Linux眾多的文件系統一樣。每個存儲引擎都有自己的優點和缺陷。服務器是通過存儲引擎API來與它們交互的。這個接口隱藏了各個存儲引擎不同的地方。對于查詢層盡可能的透明。這個API包含了很多底層的操作。如開始一個事物,或者取出有特定主鍵的行。存儲引擎不能解析SQL,互相之間也不能通信。僅僅是簡單的響應服務器的請求。
連接管理和安全
在服務器內部,每個client連接都有自己的線程。這個連接的查詢都在一個單獨的線程中執行。這個線程存在于一個核心或者CPU中。服務器緩存了線程,因此不需要為每個client連接單獨創建和銷毀線程。
當clients(也就是應用程序)連接到了MySQL服務器。服務器需要對它進行身份驗證。這個身份驗證是基于用戶名,主機,以及密碼。也使用了X.509的SSL連接。clients一連接上,服務器就驗證它的權限。如這個client是否可以查詢world數據庫下的Country表的數據。這部分將在獨立的章節進行說明。
優化和執行 MySQL的解析查詢是創建了一個內部的結構(一個語法分析樹)。之后就進行了各種各樣的優化。這些優化包括了,查詢語句的重寫,讀表的順序,索引的選擇等等。你可以通過查詢語句的關鍵詞對優化器進行一定的提示。這樣做會影響到它的優化方式。你也可以讓服務器對于各種優化進行說明。這樣可以得知服務器的運行策略以及為了獲得更好的效率,可以做更多的優化工作,如查詢優化等。優化器會在以后的教程中詳細介紹。
優化器是不會關心表所用到的存儲引擎的類型,但是存儲引擎會影響到服務器優化查詢的方式。優化器需要知道存儲引擎的一些特性,這些操作的消耗以及表數據的一些統計信息。例如,一些存儲引擎支持索引,這對于查詢是非常有用的。
在解析查詢之前,要查詢緩存,這個緩存只能保存查詢信息以及結果數據。如果請求一個查詢在緩存中存在,就不需要解析,優化和執行查詢了。直接返回緩存中所存放的這個查詢的結果。
MySQL體系結構介紹:
存儲引擎負責管理數據存儲,以及MySQL的索引管理。通過定義的API,MySQL服務器能夠與存儲引擎進行通信。每個存儲引擎均是1個繼承類,每個類實例作為處理程序而被引用。
針對需要與特殊表一起工作的每個線程,處理程序是在1個處理程序的基礎上實例化的。例如,如果3個連接全都在相同的表上工作,需要創建3個處理程序實例。
一旦創建了處理程序實例,MySQL服務器將向處理程序發送命令,以便執行數據存儲和檢索任務,如打開表、操縱行和管理索引等。
能夠以累進方式創建定制存儲引擎:開發人員能夠以只讀存儲引擎啟動,隨后添加對INSERT、UPDATE和DELETE操作的支持,甚至能夠增加對索引功能、事務和其他高級操作的支持
2.Linux平臺下安裝配置MySQL MySQL語言
SQL功能強大,但是概括起來,它可以分成以下幾組:
DDL(數據定義語言): 用于定義數據的結構,比如 創建、修改或者刪除數據庫對象;
DML(數據操作語言):用于檢索或者修改數據;
DCL(數據控制語言):用于定義數據庫用戶的權限。
3.1 DDL 可以用于創建用戶和重建數據庫對象。下面是DDL命令: CREATE TABLE:創建數據庫表 ALTER TABLE :修改數據庫表 DROP TABLE :丟棄數據庫表 CREATE INDEX :創建索引 DROP INDEX:丟棄索引
3.2 DML 可以細分為以下的幾個語句: SELECT:用于檢索數據;
INSERT:用于增加數據到數據庫;
UPDATE:用于從數據庫中修改現存的數據
DELETE:用于從數據庫中刪除數據。
3.3 DCL 用于創建關系用戶訪問以及授權的對象。下面是幾個DCL命令:
ALTER PASSWORD :修改訪問授權密碼 GRANT :授權用戶訪問數據庫表 REVOKE :廢除用戶授權 CREATE SYNONYM:
3.4 表、字段、記錄
在關系型數據庫中,表就是一個數據的集合體,簡單地理解就是一個二維(行與列有簡單對應關系的)數據表格。
字段是指表格中的列,即具有相同屬性的數據集合,每個字段都必須有一個唯一的名稱,稱為字段名。例如,在表格中,如果用一列存放“性別”,“性別”就是一個字段名。記錄是指表格中的行,它由若干個字段值構成。例如,用于記錄每個成員的表中,可以有昵稱、年齡、性別、電子郵件等字段,添加進表中的每一個成員,都包含有昵稱、年齡、性別、電子郵件這些數據,每個成員的這些數據構成一條記錄。
下面給出一張學生表,表中id、name、gender、birth、class都是字段,而行中包含了這個表的一個記錄,即每個學生的ID,名字,性別,生日等:
4.MySQL數據庫基本操作
4.1 基本操作
4.1.1 連接登錄MySql 語法:mysql-u用戶名-p密碼-h服務器名稱-P端口
1)、連接到本機 mysql-u root-p Enter password: **-----------------------2)、連接到遠程主機上 mysql-h localhost-u root-p Enter password: ** 4.1.2 退出MySql操作界面
mysql> quit;mysql>exit;4.1.3 修改密碼
mysqladmin-u root –psa(舊密碼)password chx(新密碼)4.1.4 顯示當前存在的數據庫
mysql> show databases;
或者多行命令 mysql> show
-> databases->;
4.1.5 創建一個數據庫
語法:create database [if not exists] 數據庫名稱 [default character set '字符集'] mysql> create database if not exists db1 default character set 'utf8';4.1.6 刪除一個數據庫
語法:drop database [if exists] 數據庫名稱 mysql> drop database db1;4.1.7 選擇數據庫并顯示當前選擇的數據庫
mysql> use mysql;4.1.8 顯示當前數據庫中存在的表
語法:show tables [like '表達式']
mysql> show tables;4.2 SQL數據類型
smallint32 位元的整數。
decimal(p,s)32位元的實數。
Doublen 長度的字串,n不能超過 254。
varchar(n)和 char(n)一樣,不過其單位是兩個字元 double-bytes,n不能超過127。這個形態是為了支援兩個字元長度的字體,例如中文字。
vargraphic(n)包含了 年份、月份、日期。
time包含了 年、月、日、時、分、秒、千分之一秒。
4.3 主鍵、外鍵、索引
主鍵(primary key)能夠唯一標識表中某一行的屬性或屬性組。一個表只能有一個主鍵,但可以有多個候選索引。主鍵常常與外鍵構成參照完整性約束,防止出現數據不一致。主鍵可以保證記錄的唯一和主鍵域非空,數據庫管理系統對于主鍵自動生成唯一索引,所以主鍵也是一個特殊的索引。
比如學生表里有學號和姓名,姓名可能有重名的,但學號確是唯一的,你要從學生表中搜索一條紀錄如查找一個人,就只能根據學號去查找,這才能找出唯一的一個,這就是主鍵;如:id int(10)not null primary key auto_increment ;自增長的類型 外鍵(foreign key)是用于建立和加強兩個表數據之間的鏈接的一列或多列。外鍵約束主要用來維護兩個表之間數據的一致性。簡言之,表的外鍵就是另一表的主鍵,外鍵將兩表聯系起來。一般情況下,要刪除一張表中的主鍵必須首先要確保其它表中的沒有相同外鍵(即該表中的主鍵沒有一個外鍵和它相關聯)。索引(index)是用來快速地尋找那些具有特定值的記錄。主要是為了檢索的方便,是為了加快訪問速度,按一定的規則創建的,一般起到排序作用。所謂唯一性索引,這種索引和前面的“普通索引”基本相同,但有一個區別:索引列的所有值都只能出現一次,即必須唯一。總結:
主鍵一定是唯一性索引,唯一性索引并不一定就是主鍵。一個表中可以有多個唯一性索引,但只能有一個主鍵。主鍵列不允許空值,而唯一性索引列允許空值。
主鍵可以被其他字段作外鍵引用,而索引不能作為外鍵引用。
4.4 數據表操作 4.4.1 創建一個表
語法:create table [if not exists] 數據表名稱(列定義[,....])示例:
mysql> create table tb1(-> id int auto_increment primary key,-> name varchar(20)->);
列定義:
列名稱 數據類型 [null|not null] [primary key][unique][auto_increment][default 默認值]
4.4.2顯示表(db)的內容
mysql>select * from tb1;4.4.3 查看表tb1的字段描述
語法:show columns from 數據表 語法:desc[ribe] 數據表
mysql> show columns from tb1;mysql> describe tb1;mysql> desc tb1;4.4.4 修改數據表
語法如下:
ALTER TABLE “table_name“ 【改變方式】 改變方式分:
ADD :在表中增加一列,ADD 列名 數據類型
CHANGE:修改表中某一列的名字,CHANGE 列名 新列名 MODIFY:改變某一列的數據類型,MODIFY 列名 數據類型
DROP:丟棄某一列
1· 添加列
語法1:alter table 數據表名稱 add 列定義 first 語法2:alter table 數據表名稱 add 列定義 after 列名稱 語法3:alter table 數據表名稱 add(列定義,...)示例:
mysql> alter table tb1 add age int first;mysql> alter table tb1 add age2 int default 10 after id;mysql> alter table tb1 add sex tinyint default 0;2· 刪除列
語法:alter table 數據表名稱 drop 列名稱 示例:
mysql> alter table tb1 drop age 3· 修改列定義 語法:
alter table 數據表名稱 modify 列名稱 數據類型 示例:
mysql> alter table tb1 add memo varchar(100);mysql> alter table tb1 modify memo char(1);mysql> desc tb1;4· 修改列名稱及定義 語法:
alter table 數據表名稱 change 舊列名稱 新的列名稱 列定義 示例:
mysql> alter table tb1 change memo memo1 varchar(200);4.4.5 修改數據表名稱
語法:
alter table 數據表名稱 rename 新表名稱 示例:
mysql> alter table tb1 rename user;4.4.6 刪除數據表
語法:drop table [if exists] 數據表名稱 4.4.7 清空數據表
語法: TRUNCATE TABLE ”表格名“ 如清空grade表:
TRUNCATE TABLE grade 4.4.8 插入記錄
語法:
INSERT INTO “表格名”(“列1”, “列2”,...)VALUES(“值1”, “值2”,...);
例如向student表中插入一條學生記錄:
INSERT INTO student(name, gender, birth,class)VALUES(‘Sun Nan’, ‘M’, ‘1973-03-19’, 1);注:因為id字段為自增長的,所以可以不用指定值,另,插入的時候如果指定列的值為唯一屬性的話則插入相同的值時會失敗。比如說在student表中,不能存在兩條id為2的記錄,但可以存在兩條name為“Sun Nan”的記錄。
4.4.9更新記錄
格式:UPDATE “表格名” SET 列1 = [新值1], 列2=[新值2]… WHERE {條件};如我們修改“Sun Nan”同學的出生日期為“1972-08-29”,所在的班級id為2,執行的語句為:
UPDATE student SET birth=‘1972-08-29’, class=2 WHERE name=‘Sun Nam’;
4.4.10 刪除記錄
格式:DELETE FROM ”表名" WHERE {條件} 如從grade表中刪除student_id為2的記錄: DELETE FROM grade WHERE student_id=2;如果要刪除表中所有的數據: DELTE FROM grade;
5.練習
創建學生表student : create table student(id
int auto_increment,name
varchar(32),gender
int default 1,birth
varchar(20),class
int,primary key(id));創建班級表class create table class(id
int not null,class_name
varchar(32),begin_time
varchar(20),teacher
varchar(32),primary key(id));創建成績表grade: create table grade(id
int auto_increment,student_id
int,class
int,chinese
int,math
int,exam_time
varchar(20),primary key(id));
6.select 語句
SELECT語句主要被用于查詢數據庫中的一個或多個表里的數據。格式:
SELECT [ 例如: mysql> select * from user;mysql> select name from user; 許多子句及它們的結合都可以用于SELECT語句中: FROM:指定從哪些表中獲取數據 DISTINCT:消除重復的記錄行 WHERE:只返回滿足特定條件(也叫過濾器)的記錄行 ORDER BY:按照表達式列表排序記錄 LIMIT:返回特定部分的數據,而不是所有的結果集 格式: SELECT DISTINCT 6.1使用FROM ? ? ? FROM子句在SELECT語句中是可選項,它出現在語句的表達式之后 FROM子句指定語句要處理的表。表的別名 在SQL語句里,在FROM子句里引用的表可以給定一個臨時的名稱,該名稱叫做表的別名。? 示例: mysql> select id, name, sex, age from user where id = 1; mysql> select u.id, u.name, u.sex, u.age from user u where id = 1;6.2 使用DISTINCT ? 如果查詢的結果中包含重復的記錄,該重復記錄要被刪除以生成每行都是唯一的結果集。為了達到這個目的,可在SELECT關鍵字后添加DISTINCT關鍵字。? ? 在指定的列里,DISTINCT將所有的NULL值當作相同的值。示例: mysql> select distinct work from user;6.3使用WHERE ? MySQL支持許多不同類型的運算符,這依賴于操作數的數據類型,或操作數與運算符處理的值的數據類型。 – 運算 – 比較 – 邏輯 ? 示例: mysql> select * from user where age<20; mysql> select * from user where age >30 and(work='java' or work='c++');mysql> select * from user where age >30 and work in('java','c++');6.4關于NULL 如果有一個操作數的結果是NULL,則大多數運算符的求值結果也會是NULL。當NULL值表達式在函數中被用于操作數時,運算符將產生NULL。 WHERE子句也有相同的情況,WHERE子句會丟棄那些條件不是TRUE的記錄。示例: mysql> select NULL+age from user;6.5 在SELECT語句里使用ORDER BY 如果有必要讓輸出記錄按某一特定的順序返回,可以使用ORDER BY子句以顯示如何排序結果集。示例: mysql> select * from user order by age;DESC:降序 ASC:升序 示例: mysql> select * from user order by age desc;mysql> select * from user order by age asc;6.6 在SELECT語句里使用LIMIT 當一個查詢返回許多記錄行時,有必要通過增加LIMIT子句來限定只顯示部分記錄。LIMIT子句可以采用以下一個或兩個參數: LIMIT row_count LIMIT skip_count, row_count 示例: mysql> select * from user limit 5;mysql> select * from user limit 5,5;它常見的用處是獲取包含某個特定列的最小或最大值的行 示例(查找user表中年齡最大的): mysql> select * from user order by age desc limit 1; 6.7 聚集查詢結果 有可能出現這種情況,結果集里的一行對應于底層基表里的一組記錄行。這個過程叫聚合,并且這樣一個結果集被稱為聚集。計算一組值的摘要值的函數(例如AVG())被稱為“聚集”函數。MIN()求最小值 MAX()求最大值 SUM()求和 AVG()求平均數 COUNT()求條目數 示例: mysql> select min(age)from user;mysql> select max(age)from user;mysql> select sum(age)from user;mysql> select avg(age)from user;示例(使用count(*)統計user表中用戶的個數): mysql> select count(*)from user;示例(指定統計memo列,NULL值不會被統計): mysql> select count(memo)from user;6.8 用SELECT與GROUP BY分組 所有在GROUP BY子句中指定的表達式里,具有相同結合值的記錄行將按一組處理,在結果集里以一行結束。 聚集函數可以與GROUP BY一起使用將記錄分組。當帶有GROUP BY子句時,聚集函數將為每個組統計值。示例(求每個工作員工的平均年齡): mysql> select avg(age), work from user group by work;示例(求每個工作員工的總年齡): mysql> select count(*), sum(age), work from user group by work;6.9 使用UNION UNION關鍵字能夠將兩個或多個SELECT語句的結果連接起來。其語句是: SELECT … UNION SELECT … 缺省地,UNION消除結果集中的重復記錄。為了獲得所有的記錄行,可用UNION ALL取代每個UNION實例。UNION在下面情況下將很有用: 多個表中有相似的信息,并且需要從這些表中立刻獲取記錄。 需要從同一個表中獲取幾組記錄,但是表現每組的條件并不容易寫在一個單個的WHERE子句里。示例: mysql> select * from user where age < 20-> union-> select * from user where name = '張三'; MySQL學習心得 第一章 一、數據庫管理系統(DBMS)是操作和管理數據庫的大型軟件,它按一定的數據模型組織數據。 例如:Oracle、SQL Server、MySQL、Access。 二、數據庫應用系統在數據庫管理系統(DBMS)支持下建立的計算機應用系統,簡寫:DBAS。 例如:.net Java。 三、字符集從大到小排序:utf8--gbk--gb2312。 四、mysql的特點: 適用于中小型網站中,體積小、速度快、總體擁有成本低,尤其是有開放源碼這一特點。 五、目前Internet上滸的網站構架方式是LAMP(Linux+apache+mysql+php)即使用Linux作為操作系統,Apache作為Web服務器,MySQL作為數據庫,PHP作為服務器端腳本解釋器,由于4個軟件都是遵循GPL的開放源碼軟件,因此使用這種方式不用花一分錢就可以建立起一個穩定、免費的網站系統。 第二章 一、安裝過程中遇到的問題及解決方法: 安裝過程中沒有完成時計算機關機。(沒有刪除完文件)安裝完成時找不到所配置的路徑。(可以從配置文件中找到) 安裝完成后無法正常使用。(在計算機管理中重新啟動MySQL服務)安裝到一半時沒有出現下一步。(誤把配置文件刪除了)安裝到最后一步時start service錯誤。到控制面板里面先把mysql刪除.到c盤C:Program Files目錄下把mysql目錄刪除.如果在其他盤還有設置目錄也要刪除.空目錄也要刪除 到regedit把注冊表 HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/Eventlog/Applications/MySQL HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/Services/Eventlog/Applications/MySQL HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Eventlog/Applications/MySQL 有的話,全部刪除!(技巧:用F3循環查找“mysql”)如果任務管理器里有關mysql內容也刪除 把防火墻關了 重新裝mysql(這里我沒有重啟計算機) 重裝時候有必要的話,重啟計算機,停用IIS,和刪除temp里的臨時文件.實在不行的話,配置mysql時候,把mysql服務換個服務名.使用時輸入中文會出錯。(在配置時在“Character Set”選框中將latinl修改為gb2312;也可以在配置文件中修改) 二、啟動服務器的方法: ① 方法1: 在 “計算機管理”中的“服務”項目中啟動與停止。② 方法2: 使用命令(net start mysql和net stop mysql) 三、連接MySQL 格式: mysql-h主機地址-u用戶名 -p用戶密碼 ①先在打開DOS窗口,然后進入目錄 mysqlbin(如果設置了環境變量,則直接輸入命令即可。)②鍵入命令mysql-uroot-proot ③接回車即可進入到MYSQL中了 MYSQL的提示符是:mysql> 注明:直接打開Mysql command line client 四、MySQL注釋符有三種: ①#...②“--...” ③ 五、忘記密碼重新更改密碼 先停止mysql服務,修改D:MySQLMySQL Server 5.0 目錄下的my.ini文件,在[mysqld]下添加skip-grant-tables 啟動mysql服務后就可以以空密碼登錄,之后別忘記修改root密碼 use mysql update user set password=password('hanaixia')where user='root';(分號不能少)password('hanaixia')此處必須用函數設置。 修改密碼后需要重新啟動服務或者使用 flush privileges;語句,用于從mysql數據庫中的授權表重新載入權限。 把 skip-grant-tables 這一句刪掉再重啟mysql服務。 Mysql命令:在mysql的bin目錄下執行: Mysql –h host_name –u user_name –p password Use 數據庫名;選定默認數據庫(切換數據庫)查詢當前使用的數據庫:select database(); Show databases;顯示所有數據庫; Show tables ;顯示默認數據庫下的所有表; Show status;顯示服務器狀態信息 c;放棄正在輸入的命令; h;顯示命令清單; s;顯示mysql服務器狀態信息; q;退出mysql; Describe 表名:查看表結構; 檔案柜相當于數據庫,抽屜相當于表,抽屜中的文件相當于記錄; 0x:加1到9的數字或者a到f就可以構成16進制了。注意零x中的x不能大寫。字符串:單引號或者雙引號引起來的都是字符串; Tinyint是1字節; Smallint是2字節; Mediumint是3字節; Int是4字節 Bigint是8字節; 刪除主表前,先刪除子表。選擇主鍵的原則: 1)最少性:盡量選擇單個鍵做為主鍵 2)穩定性:盡量選擇數值更新少的列作為主鍵。查看自定義函數創建信息: Show create function function_name;類型總結: Tinyint :占一個字節,它的范圍是-128到127 Smallint:占2個字節,它的范圍是-2的15次方到2的15次方減一; Mediumint:占3個字節,它的范圍是-2的23次方到2的23次方減一; Int:占4個字節,它的范圍是-2的31次方到2的31次方減一; Bigint:占8個字節,它的范圍是-2的63次方到2的63次方減一; Float:占4個字節 Double:占8個字節 Decimal(m,n):占m個字節; Char(10)和char(10 char)是一樣的; 數值列的完整性約束講解: Auto increment(自動標識列):在需要產生唯一標示符號或者順序值的時候,可用此屬性。值從1開始,一般在插入null到auto increment列時,mysql會插入比當前列最大值大1的值。一個表中最多能有一個此屬性的列。對于想使用此屬性的列應該定義為not null,并定義為primary key或者定義為unique。 Null 和not null:默認是null,如果在插入數據時,指定了not null,那么在插入數據時必須要在此字段插入數據。如果指定了null ,那么在插入數據時,如果沒有給此字段插入數據,此字段就插入null.mysql-h host-u user-p menagerie 注意,剛才顯示的命令行中的menagerie不是你的 密碼。如果你想要在命令行上在-p選項后提供 密碼,則不能插入空格(例如,如-pmypassword,不是-p mypassword)。但是,不建議在命令行輸入密碼,因為這樣會暴露 密碼,能被在機器上登錄的其它用戶窺探到。 查詢當前日期:使用curdate()函數,任何表都可以的。Select curdate()from cjym;可以通過year,month,day獲取它的年月日。Select year(curdate())from cjym;Select month(curdate())from cjym;Select day(curdate())from cjym;Mysql中的_和%表示單個字符和零個或者多個字符; 有like 和not like比較操作符; 要想找出你的服務器支持哪個存儲引擎,執行下面的語句: Show engines;Select 1/7;都可以; 日期和時間類型: Time :時間; Date:日期; Datetime:日期和時間; 創建表: Create table student(Student_id int(10)not null primary key auto_increment, Student_name varchar(20));注意在創建表的時候,如果是手動寫sql語句的時候自動標示符要寫這樣的 auto_increment;有個下劃線; 更改表結構操作: 給表添加一條字段:在最前面加字段用first,在最后面加用after;默認在最后加; Alter table student add age int first;給表設定默認值: Alter table student alter column_name set default default_value;給表中的字段添加主鍵;如果主鍵存在則出現錯誤; Alter table student add primary key(column_name);刪除表中的一列: Alter table student drop column_name;刪除表中的主鍵: Alter table student drop primary key;更改表的名字: Alter table student rename as new_tablename;修改表中的字段類型: Alter table student modify sno int;運算符: Between。。and用于檢驗一個值(一個求值表達式)是否存在一個指定的范圍內; Select 10 between 1 and 100;結果是1:表示是真的; In 用于檢驗一個值(一個表達式)是否包含在一個指定的集合中。 Select 2 in(1,2,3,4,5,6),’a’ in(‘b’,’e’,.’h’);結果顯示1和0;1表示真,0表示假; Is null和is not null來測定是否為空; 特殊的運算符:<=>:mysql稱它為null安全的等于; Select null=null,null< = >null;結果顯示null和1; Regexp運算符; Mysql中的元字符; 邏輯運算符:and(&&),or(||),not(!)插入數據時,插入多行值時: 插入多行數據: Insert into 表名(列名)Select 列名 From 表名; 更改記錄的操作語法格式: Update 表名 set 列名=更新值 [where 更新條件] 刪除記錄的操作格式: Delete from 表名 [where 刪除條件]; 表和字段的引用方式有兩種: 絕對引用:數據庫名.表名(.字段名);相對引用:表名.(字段名); Where子句使用的謂詞: Between。。and。。在兩數之間 Not between ….and ….不在兩數之間 In:是否在特定的集合里。Not in :與上面相反。Like:是否匹配一個模式; Regexp:檢查一個值是否匹配一個常規表達式; 復制表: Create table student select name,age from stu;復制表后,表中的字段和stu表中的字段一樣并且記錄數也是存在的; 學習地址:http:// Mysql的存儲過程: Create procedure p()Begin End; delimiter // create procedure math_demo()begin declare i int default 0; declare d decimal(10,4)default 0; declare f float default 0; while i < 10000 do set d = d +.0001; set f = f +.0001E0; set i = i + 1; end while; select d,f;end // call math_demo(); mysql中的自定義方法的使用 delimiter // create function function_name()returns return_type;begin end;// 執行mysql自定義的函數用 Select function_name(); #mysql中的存儲過程 delimiter // create procedure math_demo()begin declare i int default 0; declare d decimal(10,4)default 0;…….return return_value; declare f float default 0; while i < 10000 do set d = d +.0001; set f = f +.0001E0; set i = i + 1; end while; select d,f;end // call math_demo();// delimiter // create function xiaoxiao()returns int begin return 2;end;// #在mysql中創建的自定義函數要加的delimiter,都要一次性選中執行。每條語句都要用分號結束。delimiter // create function xiaoxiao1()returns int begin return 2;end // #執行mysql中的自定義函數 select xiaoxiao1(); 根據一個布爾值來檢驗一個值,在這里布爾值可以是true,false,unknown; 運算符: 等號:=,<=>,不等號:!=,<>;賦值號::=;? XOR 邏輯XOR。當任意一個操作數為 NULL時,返回值為NULL。對于非 NULL 的操作數,假如一個奇數操作數為非零值,則計算所得結果為 1,否則為 0。 a XOR b 的計算等同于(a AND(NOT b))OR((NOT a)和 b)。 Coalesce();函數的使用方法: 返回值為列表中第一非null值,在沒有非null值的情況下返回null。 Greatest();函數的使用及功能說明: 當函數有2個或者2個以上的參數時,返回參數中的最大參數值,比較參數所依據的規律同least()函數相同。 Interval();函數的使用及功能說明: INTERVAL(N,N1,N2,N3,...) 假如N < N1,則返回值為0;假如N < N2 等等,則返回值為1;假如N 為NULL,則返回值為-1。所有的參數均按照整數處理。為了這個函數的正確運行,必須滿足 N1 < N2 < N3 < ……< Nn。其原因是使用了二分查找(極快速)。 Least();函數的使用及功能說明: · LEAST(value1,value2,...) 在有兩個或多個參數的情況下,返回值為最小(最小值)參數。用一下規則將自變量進行對比: o 假如返回值被用在一個 INTEGER 語境中,或是所有參數均為整數值,則將其作為整數值進行比較。 假如返回值被用在一個 REAL語境中,或所有參數均為實值,則 將其作為實值進行比較。 o 假如任意一個參數是一個區分大小寫的字符串,則將參數按照區分大小寫的字符串進行比較。 o 在其它情況下,將參數作為區分大小寫的字符串進行比較。o 假如任意一個自變量為NULL,則 LEAST()的返回值為NULL。 二,控制流函數 Case的使用: 格式1: Case value when [compare_value] then result_value when [compare_value2] then result_value2 else result_value3 end 格式2: case when value=[compare_value1] then result_value else result_value2 end ? IF(expr1,expr2,expr3) 如果 expr1 是TRUE(expr1 <> 0 and expr1 <> NULL),則 IF()的返回值為expr2;否則返回值則為 expr3。IF()的返回值為數字值或字符串值,具體情況視其所在語境而定。 ASCII()函數查看對應符號的ascii碼。 一個中國孩子的呼聲 教學目標 1.認識7個生字,會寫14個生字,正確讀寫:“執行,維護,給予,素質,凱旋,碩士,貢獻,呼吁”等詞語。2.聯系上下文理解含義深刻的句子。 3.引導學生從小樹立熱愛和平,維護和平的信念。 重難點 1.理解深刻的句子。 2.體會作者的思想感情,樹立熱愛和平,維護和平的信念。 第一課時 課時教學目標:了解戰爭知識,復習信的格式,學習第一段內容 教學過程 教具準備:生字卡片,信紙 引入新課 板書課題:一個中國孩子的呼聲 生字:犧 牲 凱 征 阿 姨 濟 貢 圣 駐 罪 惡 健 康 提出問題:1,中國孩子為什么要進行呼聲? 2,中國孩子的呼聲是什么? 先請學生回答,信的格式。整體復習信的格式 書信一般由稱謂、問候語、正文、結尾、署名、日期所構成。1 .稱謂 在首行頂格的位置寫稱謂,后加冒號。 為了表示尊敬、親切,可在稱謂前加上“尊敬的”或“親愛的”等詞。這由寫信人與收信人的關系的親疏遠近而定 2 .問候語 第二行開頭空兩格寫問候語。 運用禮貌語言,使收信人感到親切,受到尊敬。3 .正文 另起一行空兩格寫,一般一件事一段,注意要分層次敘述清楚,簡潔清晰 語言要求準確通俗,不要作過多過深的修飾,已免造成對方難于理解。4 .結尾 要根據收信人的身份,寫表示祝愿的話,以示禮貌。 給長者的信往往寫“祝您健康長壽”,給朋友寫“祝工作順利”,給晚輩寫“祝你學習進步”。 祝福語 .署名和日期 最后兩行靠右寫寫信人的姓名,姓名正下方落下寫信日期。 根據寫信人與收信人的關系,在姓名前可表明身份,如“學生 ××× ”、“兒 ×× ”等。 署名 ××年×月×日 一般書信寫作注意事項: .內容要寫得清楚明白,以免造成對方的誤會或疑問,耽誤事情。2 .用詞要熱情、自然、貼切、有禮貌。 .要按照書信的格式寫,信封寫作更要規范,避免投遞困難。4 .字跡要清楚,不能潦草,以免造成誤會和麻煩。 學習新內容 朗讀全文一遍 學習第一段內容 請學生朗讀正文第一段 聯合國第二次世界大戰結束后于1945年成立的國際組織,總部在美國紐約 回憶兩年前發生的事情,點明了爸爸的身份及他的貢獻。執行:實施,實行(政策,法律,命令,判決等中的規定事項)犧牲一般指革命戰士的死。犧的形近字(曬,棲,灑)。多音字 給,的 雙引號是加利先生說的內容。卓越:非常優秀,超出一般 從評價中說明爸爸是個很優秀的維和戰士,他熱愛和平,勇敢的用自己的生命來維和和平。 寫出爸爸為維和和平而獻出了寶貴的生命。 文章的第一部分:通過對加利先生的評價,襯托出維和觀察員的偉大,突出了戰爭的罪惡 課堂小結:信及信封的格式,教學內容 布置作業:預習下文,熟讀課文 板書設計:信的格式,講解內容 口語交際:講解 教學目標: 1、了解講解的技巧,學會講演。 2、講解練習。 3、培養學生的講解能力。教學過程: 一、導入新課 這節口語交際課的內容是講解。講解又叫解說,是針對某一事物或圍繞某一內容向聽眾進行介紹、解釋、說明。 二、教師指導 講解的基本要求是: (一)有備而講,熟悉解說對象 講解要有特定的事先準備好的講解材料,包括實物、文字、表格、圖像或多媒體軟件等。有特定的聽講對象,如導游是以游客為對象介紹觀光景點,講解要取得好的效果,首先必須熟悉所講的內容,對所講解的事物有一個透徹的了解。不僅將出來的材料要爛熟于心,而且對于不一定講出來的有關背景材料、備用知識也要有所了解。 (二)理清思路,內容詳略得當 講解要理清思路,安排好先后順序,一般有時間順序、空間順序和邏輯順序三種,都要清晰、連貫,有條不紊。確定講解內容的詳略,對聽眾熟悉和容易理解的內容,講解得要簡略一些;聽眾感興趣的和不容易理解的內容,講解得要詳細。 (三)目中有人,注重講解效果 不同的聽眾,其聽講目的、文化修養、性格興趣都不盡相同,講解時就不能“目中無人”,要根據聽眾的情況和反應隨時調整講解的內容和方式,或調動情緒,或激發興趣,或深入淺出,或變換節奏,或詳盡周到,或化繁為簡等等。 (四)通俗易懂,語言準確流暢 三、實例借鑒 2008年北京奧運會開幕式解說詞(節選)。 四、情境演練 兄弟學校的領導和老師要到你們學校參觀實訓基地或實習車間。請你當一回現場講解員,從專業、設施、規模、師資、實訓或實習的方式和成績等方面向他們做講解。 五、拓展練習 以本校第七屆田徑運動會的一項比賽為內容,進行體育比賽解說的練習。 文檔為doc格式 Mysql數據庫學習心得 由于工作中需要使用mysql,筆者通過網上學習,動手實踐,終于從一個"數據庫菜鳥"變成了能熟練操作mysql的"準大蝦"了,:)。現將學習心得整理如下。 MySQL是完...... MySql問題解決總結 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) ERROR 1045 (28000): Access denied for user 'root'@'localho...... 1 . 數據庫創建 : Create database db_name; 數據庫刪除 : Drop database db_name; 刪除時可先判斷是否存在,寫成 : drop database if exits db_name 2 . 建表 : 創建數據表...... mysql數據庫常用語句 SQL分類: DDL—數據定義語言(CREATE,ALTER,DROP,DECLARE) DML—數據操縱語言(SELECT,DELETE,UPDATE,INSERT) DCL—數據控制語言(GRANT,REVOKE,COMMIT,ROLLBACK)...... 1.安裝Mysql注意:選擇語言
2.Doc系統下進入Mysql
mysql -u用戶名 -p密碼
3.常用的命令:
1.查看mysql下所有的數據庫:show databases;
2.創建數據庫的命令:create database 數據...... MYSQL常用語句
一.連接
遠程主機:例IP:110.110.110.110 用戶名:user 密碼: abc 輸入命令:mysql -110.110.110.110user-abc;
二.修改密碼
加密碼 :mysqladmin -u root -password ab12...... MySQL主從復制的常見拓撲、原理分析以及如何提高主從復制的效率總結 一、主從復制搭建方法參考 1、MySQL5.6 數據庫主從(Master/Slave)同步安裝與配置詳解請參考:http://blog....... PHP亂碼?Mysql亂碼?怎么解決?
PHP亂碼或者mysql亂碼,多半是因為沒有統一編碼,要解決PHP/mysql亂碼,只要做到三碼合一即可.
所謂三碼,是指文件編碼,頁面編碼聲明和數據庫字符......] [
第二篇:MySQL學習心得
第三篇:mySql總結
第四篇:講解教案
第五篇:講解教案
聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。 Mysql數據庫學習心得
mysql問題解決總結
MySql知識點總結
mysql數據庫常用語句大全
Mysql常用語句小結
MYSQL常用語句[推薦閱讀]
MySQL主從復制的常見拓撲、原理分析以及如何提高主從復制的效率總結講解
PHP MySql亂碼解決方案