国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

《MySQL高效編程》學習筆記--基礎篇

2019-11-09 13:29:21
字體:
來源:轉載
供稿:網友

1、啟動MySQL監視器創建數據庫


–啟動–

mysql -u yonghuming -p mysql -u yonghuming -p密碼 無密碼可省略 -p

–設定root密碼–

mysqladmin -u root PASSWord 密碼

退出 exit or quit

–創建數據庫與表–

用途 語法
顯示數據庫一覽 SHOW DATABASES; 不區分大小寫
刪除數據庫 DROP DATABASE 數據庫名;
創建數據庫 CREATE DATABASE 數據庫名;

注:庫名、列名、表名 在windows中不區分大小寫,在linux中區分

–創建新用戶并賦予其對數據庫的操作權限–

GRANT ALL PRIVILEGES ON 數據庫名.* TO 用戶名@localhost IDENTIFIED BY 密碼 其中 all privileges 表示所有權限 可選權限有 CREATE(創建) SELECT (檢索) UPDATE(更新)DALETE(刪除) 數據庫名.表名 *表示該數據庫下的所有表

–創建表–

指定使用的數據庫 use 數據庫; 顯示現在使用中的數據庫 select database();

創建新表

create table 表名 (域名 數據類型 列選項[,…]) 創建表時指定字符集 在 CREATE TABLE ~ 后加上 CHARSET=utf8; 顯示所有的表 show tables; 顯示表結構 desc 表名; or describe 這里寫圖片描述 這里寫圖片描述

–數據插入及顯示–

插入數據 insert into 表名(列名1,列名2,…) values (數據1,數據2,…) 顯示表中數據 select 列名1,列名2,… FROM 表名 顯示全部 SELECT * FROM 表名

–定義自增序列–

數據類型必須為int等。 列的定義后附加AUTO_INCREMENT關鍵字 使用PRIMARY KEY設置其唯一性

mysql> create table good(id int auto_increment primary key , name varchar(30)) charset=utf8;

初始化自增序列

alter table 表名 auto_increment=0;

================================================

2、在MySQL中使用SQL


–導入sql數據庫–

mysqladmin -u root -p create home //創建數據庫home mysqladmin -u root -p home < sampledb.sql //將數據導入到數據庫home

–注釋–

單行注釋 – 注釋 多行注釋 /* 注釋 */

==2.1、數據的插入、更新、刪除==

—插入 insert 命令—-

INSERT INTO 表名 (列名1,列名2,。。。)VALUES (值1,值2,。。。);

—更新 UPDATE 命令—

UPDATA 表名 SET 列名1=值1,列名2=值2,。。。WHERE 條件表達式; 更新已經存在的記錄 符合where的條件表達式

mysql> UPDATE customer SET nam='李玉芝', birth='1980-09-09' WHERE mid = 'G002'; --注意最后一個值后沒有逗號

where條件表達式可以省略,此時將對所有數據更新

mysql> UPDATE customer SET birth=NULL;

—刪除 DELETE 命令—

DELETE FROM 表名 WHERE 條件表達式; 限制條件省略時將刪除表中所有數據 TRUNCATE TABLE 命令也能夠刪除表中所有數據

—數據檢索 SELECT命令—

SELECT 列名1,列名2,。。。FROM 表名[條件表達式等];

1– 明確指定列名

mysql> SELECT nam,mid FROM customer;

2– 條件檢索

mysql> SELECT nam,birth FROM customer WHERE birth>='1980/01/01'; 比較運算符 大于 > <小于 =等于 >=大于等于 <= 小于等于 <>不相等 IS [NOT] NULL 為NULL nam is NULL [NOT] LIKE 指定目標一致(不一致) nam LIKE ‘小%’ [NOT] BETWEEN 包含在指定范圍內 (不包含) price BETWEEN 3000 AND 4000 [NOT] IN 包含在指定候補值內(不包含) mid IN (‘G0001’,’G0002’,’G0003’)

3– 模糊檢索

mysql> SELECT nam FROM customer WHERE nam LIKE '李%'; 外卡[wildcard]符號 [%] 表示0個以上的字符 [ _ ] 表示一個字符

4– NULL條件

mysql> SELECT nam FROM customer WHERE birth is NULL;

5– 多個條件表達式的組合

mysql> SELECT nam,birth,sex FROM customer WHERE sex ='1' AND birth IS NOT NULL;

6– 結果排序

mysql> SELECT nam,birth,sex FROM customer ORDER BY sex ASC, birth DESC; ORDER BY 排序表達式 [排序列名 排序方式] 升序 ASC; 降序 DESC 在MySQL和SQL Server中NULL為最小值,Oracle中為最大值

7– 取得指定件數(m到n)間記錄

mysql> SELECT nam ,birth FROM customer ORDER BY birth DESC LIMIT 2; [LIMIT 2] 表示從起始位置取2件 [LIMIT 起始位置,件數] 原則上與order by命令同時使用

8– 數據分組

mysql> SELECT sex, COUNT(mid) FROM customer GROUP BY sex; GROUP BY通常與統計函數一起使用,取得列中只能使用分組化用的列以及統計列。

【主要統計函數】

AVG() 均值 COUNT 件數 MAX MIN SUM

9– 列的別名

mysql> SELECT sex , count(mid) AS cnt FROM customer group by sex; 使用AS 指定別名

==2.2、運算符與數據庫函數==

–運算符—

算術運算符 + - * / DIV 取整 % 取余 比較運算符 > < = 布爾運算符 AND OR

–數據庫函數–

這里寫圖片描述 這里寫圖片描述這里寫圖片描述 舉例介紹:

1– LENGTH 函數 返回字節數

mysql> SELECT LENGTH('理由'); -- 返回4或6 gbk一個漢字2字節 utf8一個漢字3字節 mysql> SELECT CHAR_LENGTH('理由'); --返回2 返回bit單位長度 BIT_LENGTH

2– FLOOR/CEILING/ROUND函數

小數處理 ceiling 返回比小數值大的最小整數,FLOOR返回比小數值小的最大整數,ROUND四舍五入

mysql> SELECT CEILING(2.5);--3mysql> SELECT FLOOR(-2.5);-- -3mysql> SELECT CEILING(-2.5);-- -2 mysql> SELECT ROUND(114.566);-- 115mysql> SELECT ROUND(114.566,2);-- 114.57mysql> SELECT ROUND(114.566,-2);-- 100
3– DATE_ADD函數

參數type表示加減算的單位,進行減法運算時參數var設為負值

mysql> SELECT DATE_ADD('2017-01-31 12:00:00',INTERVAL 1 MONTH) AS newtime;+---------------------+| newtime |+---------------------+| 2017-02-28 12:00:00 |+---------------------+1 row in set (0.00 sec)mysql> SELECT DATE_ADD('2017-01-31 12:00:00',INTERVAL -10 HOUR) AS newtime;+---------------------+| newtime |+---------------------+| 2017-01-31 02:00:00 |+---------------------+1 row in set (0.00 sec)mysql> SELECT DATE_ADD('2017-01-31 12:00:00',INTERVAL '10:50' MINUTE_SECOND) AS newtime;+---------------------+| newtime |+---------------------+| 2017-01-31 12:10:50 |+---------------------+1 row in set (0.00 sec)

4– EXTRACT 函數

從日期中取得任意元素時使用

mysql> SELECT EXTRACT(YEAR_MONTH FROM '2017-01-28 12:00:00');+------------------------------------------------+| EXTRACT(YEAR_MONTH FROM '2017-01-28 12:00:00') |+------------------------------------------------+| 201701 |+------------------------------------------------+1 row in set (0.00 sec)

type有 YEAR/ QUARTER / MONTH/ MONTHNAME/ DAYOFMONTH(日) / DAYNAME(星期名) / DAYFORWEEK(星期號碼)/ HOUR /MINUTE/ SECOND /MICROSECOND等

5–CASE 函數

進行簡單的條件判斷 CASE 表達式 WHEN 比較值1 THEN 結果1 WHEN 比較值2 THEN 結果2 … [ELSE 結果N] END

mysql> SELECT nam, -> CASE sex -> WHEN 0 THEN '男' -> WHEN 1 THEN '女' -> ELSE 'OTH' -> END AS sex -> FROM customer;mysql> SELECT pname, -> CASE -> WHEN price <1000 THEN '低' -> WHEN price <=3000 THEN '一般' -> ELSE '高' -> END AS price -> FROM product;

==2.3、多個表的連接===

–內連接—

即表間主鍵與外鍵進行相連,只取得鍵值一致的數據 INNER JOIN…ON SELECT 列名1… FROM 表1 INNER JOIN 表2 ON 表1.外鍵 =表2.主鍵 [WHERE /ORDER BY 語句等]

–外連接–

左外連接

SELECT 列名1… FROM 表1 LEFT OUTER JOIN 表2 ON 表1.外鍵 =表2.主鍵 [WHERE /ORDER BY 語句等]

右外連接

SELECT 列名1… FROM 表1 RIGHT OUTER JOIN 表2 ON 表1.外鍵 =表2.主鍵 [WHERE /ORDER BY 語句等] 這里寫圖片描述

==2.4、在其他查詢的基礎上進行數據檢索==

–基本子查詢–

從產品表中查詢超過平均價的商品 mysql> SELECT * FROM product WHERE price >(select AVG(price) FROM product);

–多個返回值的子查詢–

檢索在某日沒有下單的用戶 mysql> SELECT name, address FROM user WHERE uid not in (SELECT uid FROM order_basic WHERE odate ='2010-07024');

–子查詢與EXISTS運算符–

抽出至少下過一單的用戶信息 mysql> SELECT name,address FROM user WHERE EXISTS(SELECT * FROM order_basic WHERE user.uid = order_basic.uid);

=======================================================

3、表的維護和改造


==3.1、修改表的列結構==

ALTER TABLE命令 修改種類有 MODIFY / CHANGE / ADD / DROP等

–改變列的類型–

ALTER TABLE 表名 MODIFY 列名 數據類型;

–追加新列–

ALTER TABLE 表名 ADD 列名 數據類型; – 在最后追加 ALTER TABLE 表名 ADD 列名 數據類型 FIRST; – 在開頭追加 ALTER TABLE 表名 ADD 列名2 數據類型 AFTER 列名1; – 在任意位置追加,追加在列名1后

–改變列的位置–

ALTER TABLE 表名 MODIFY 列名1 數據類型 AFTER 列名2; –調整列1到列2后面

–改變列名與類型–

ALTER TABLE 表名 CHANGE 修改前列名 修改后列名 修改后數據類型;

–刪除列–

ALTER TABLE 表名 DROP 列名;

==3.2、復制表和刪除表==

–復制表的列構造以及數據來創建新表–

CREATE TABLE 新表名 SELECT * FROM 舊表名; 此方法可能發生列屬性被改變的情況,復制完成后用DESC命令來確認表構造

–復制表的列構造創建新表–

CREATE TABLE 新表名 LIKE 舊表名;

–數據的復制–

INSERT INTO 表名 SELECT * FROM 含有數據的表; INSERT INTO 表名(列名) SELECT 列名 FROM 含有數據的表; –將舊表的某列復制到新表上

與第一種方法相同,可以加入WHERE和LIMIT等限制語句來限制復制數據的量

–表的刪除–

DROP TABLE 表名; DROP TABLE IF EXISTS 表名; – 表存在時刪除表


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武宣县| 涞源县| 通海县| 启东市| 石渠县| 普格县| 林州市| 伊宁市| 静乐县| 江山市| 武义县| 绵阳市| 五大连池市| 伊川县| 马山县| 宜君县| 绥芬河市| 额尔古纳市| 社会| 保亭| 垣曲县| 神农架林区| 公安县| 肥乡县| 嘉峪关市| 青河县| 天等县| 佛山市| 射洪县| 磐安县| 阳西县| 吐鲁番市| 丰镇市| 巴中市| 台江县| 曲麻莱县| 中西区| 广德县| 栖霞市| 崇阳县| 永川市|