日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql ddl脚本_MySQL学习之路(1):SQL脚本语言

發(fā)布時(shí)間:2025/4/5 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql ddl脚本_MySQL学习之路(1):SQL脚本语言 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

使用MySQL數(shù)據(jù)庫(kù),首先安裝MySQL數(shù)據(jù)庫(kù),本文所有SQL腳本在MySQL上測(cè)試和執(zhí)行。

安裝Mysql服務(wù)器;

安裝Mysql workbench客戶端,可以以圖形化界面管理mysql;

安裝phpMyadmin客戶端,可以通過bs方式圖形化管理Mysql;

1. Mysql服務(wù)器操作:

windows下為例,win+r 進(jìn)入cmd界面

啟動(dòng)服務(wù)器:net start mysql

停止服務(wù)器:net stop mysql

連接服務(wù)器:mysql-h localhost -u root -p password

2. Database基本操作

create database db_bookstore; //創(chuàng)建數(shù)據(jù)庫(kù):use database db_bookstore; //使用數(shù)據(jù)庫(kù):drop database db_bookstore; //刪除數(shù)據(jù)庫(kù):

3. DDL 表操作

(1)創(chuàng)建表

creat table table_name(id int not null auto_increment primary key,

namechar(50)

)if not exists;

(2)查看表結(jié)構(gòu)

show columns from tb_name from db_name;desc table_name;

(3)刪除表:

drop table tb_name if exists;

(4)修改表: alter tb_name alter/modify/change [column] ...

ALTER COLUMN:設(shè)置或刪除列的默認(rèn)值(操作速度非常快)

例子:

alter table film alter column rental_duration set default 5;alter table film alter column rental_duration drop default;

CHANGE COLUMN:列的重命名、列類型的變更以及列位置的移動(dòng)

例子:

ALTER TABLE MyTable CHANGE COLUMN foo bar VARCHAR(32) NOT NULLFIRST;ALTER TABLE MyTable CHANGE COLUMN foo bar VARCHAR(32) NOT NULL AFTER baz;

MODIFY COLUMN:除了不能給列重命名之外,他干的活和CHANGE COLUMN是一樣的

例子:

ALTER TABLE MyTable MODIFY COLUMN foo VARCHAR(32) NOT NULL AFTER baz;

(5)重命名表

ALTER tb_name RENAME [AS]new_tb_name;

RENAMETABLE tb_name TO new_tb_name;

注意:[]內(nèi)的是可以選擇的,包括change,modify,alter后滿的COLUMN

4. DML語言:數(shù)據(jù)操縱語言

(1)插入

INSERT INTO tb_name(field1,...) VALUES(value1,...);

(2)修改

UPDATE tb_name SET f1=v1,f2=v2...;

(3)刪除

DELETE FROM tb_name WHERE condition

5.DQL:數(shù)據(jù)查詢,SELECT專題

SELECT f1,f2,... FROMtb_nameWHEREprimary_constraintGROUP BYgrouping_columnsORDER BY column_name DESC/ASC

HAVINGsecdonary_constraint

LIMITcount;

關(guān)鍵語法:

SELECT *

SELECT DISTINCT *

SELECT TOP count *

(1)單表查詢

SELECT * FROM tb_name; //所有字段SELECT id,name FROM tb_name; //指定字段SELECT * FROM tb_name WHERE id<5 // 查詢符合條件的字段

(2)IN, NOT IN, BETWEEN AND (這是指明字段的范圍,后面還有一個(gè)IN用于子查詢)

SELECT * FROM tb_name WHERE id IN(1,2,3);SELECT * FROM tb_name WHERE id NOT IN(1,2,3);SELECT * FROM tb_name WHERE id BETWEEN 1 AND 5;

(3)使用LIKE + 通配符

%:匹配一個(gè)或者多個(gè)字符

_: 匹配任意單個(gè)字符

SELECT * FROM tb_name WHERE user LIKE 'm%r_';// 以m開頭,中間若干個(gè)字符,r后面一個(gè)字符結(jié)尾

(4)空值查詢IS NULL,IS NOT NULL

SELECT * FROM tb_name WHERE row IS NULL;SELECT * FROM tb_name WHERE row IS NOT NULL;

(5)多條件查詢AND, OR

SELECT * FROM tb_name WHERE id=1 AND name='Jack';SELECT * FROM tb_name WHERE id=1 OR name='Jack';

(6)去掉重復(fù)行

SELECT DISTINCT * FROM tb_name;

(7)使用ORDER BY [ASC/DESC]

SELECT * FROM tb_name ORDER BY id DESC

SELECT * FROM tb_name ORDER BY id ASC

(8)GROUP BY 子句

注意:沒有出現(xiàn)在GROUP BY子句中的字段,不能出現(xiàn)在SELECT 子句中,聚合函數(shù)除外

如果SELECT 子句出現(xiàn)GROUP BY中沒有出現(xiàn)的字段,則結(jié)果只顯示每一組的一條記錄;

一般形式為:

SELECT field,func_name(field) FROM tb_name GROUP BY field;

(9)多字段分組: 2個(gè)字段的笛卡爾積

SELECT field1,field2 FROM tb_name GROUP BY field1,field2;

(10)LIMIT限制結(jié)果集

SELECT * FROM db_name WHERE id<5 LIMIT 3; //顯示結(jié)果的3行SELECT * FROM db_name WHERE id<5 LIMIT 5,10; // 從第5行開始,的10行

(11)聚合函數(shù):MIN(),AGV,MAX,COUNT

聚合函數(shù)的特點(diǎn)是根據(jù)一組數(shù)據(jù)計(jì)算出一個(gè)值,聚合函數(shù)只能對(duì)非NULL值進(jìn)行計(jì)算,NULL值被忽略;

(12)連接查詢:

理解:就是有至少2張表,查詢結(jié)果是兩張表滿足某種條件的拼接;

不帶查詢條件,則是2張表的笛卡爾積;

①內(nèi)連接查詢,最常見的是等值連接

SELECT * FROM tb_left,tb_right WHERE tb_left.id=tb_right.id;SELECT * FROM tb_left INNER JOIN tb_right WHERE tb_left.id=tb_right.id;

②外連接查詢:

左外連接: 內(nèi)連接結(jié)果,還包含不符合條件的左表數(shù)據(jù),右表相應(yīng)列加NULL

SELECT * FROM tb_left LEFT [OUTER] JOIN tb_right WHERE tb_left.id=tb_right.id;

右外連接:

SELECT * FROM tb_left RIGHT [OUTER] JOIN tb_right WHERE tb_left.id=tb_right.id;

全外連接:

SELECT * FROM tb_left FULL OUTER JOIN tb_right WHERE tb_left.id=tb_right.id;

(13)子查詢:

①IN

SELECT * FROM tb_name WHERE id IN(SELECT id FROM tb_2);

②ANY

SELECT * FROM tb_name WHERE id

③ALL

SELECT * FROM tb_name WHERE id

④EXISTS 子查詢返回一個(gè)bool值

SELECT * FROM tb_1 WHERE row>=90 AND EXISTS(SELECT * FROM tb_2 WHERE score='優(yōu)秀');// 如果有score為優(yōu)秀的記錄,則查詢 row>=90的記錄

⑤關(guān)系運(yùn)算,子查詢返回唯一值

SELECT * FROM tb_name WHERE id >(SELECT id FROM tb_2 WHERE id=1);

注:子查詢一般都是一個(gè)單列列表,SELECT list FROM tb_name; list為單列列表

使用EXISTS時(shí)候除外;

使用關(guān)系運(yùn)算符是子查詢返回唯一值;

(14)合并查詢結(jié)果

UNION: 合并查詢結(jié)果,除去相同的行

UNION ALL : 合并查詢結(jié)果,簡(jiǎn)單的把兩個(gè)集合的元素混合

SELECT id,name UNION SELECT id,author; //正確SELECT id,name UNION SELECT id; // 錯(cuò)誤,字段數(shù)目不同,無法UNION

注意:前提條件是,左邊和右邊的字段列表的字段數(shù)必須相同

6. Mysql函數(shù)

6.1 數(shù)學(xué)函數(shù)

(1)ABS(X) 取絕對(duì)值

SELECT ABS(-1); // 結(jié)果為1

(2)取整函數(shù)

CEIL(); //向上取整FLOOR(); // 向下取整

(3)隨機(jī)數(shù)生成器

RAND(); // 0-1隨機(jī)數(shù)RAND(X); // 產(chǎn)生0-1隨機(jī)數(shù),x相同時(shí),隨機(jī)數(shù)相同

(4)符號(hào)檢測(cè)器

SIGN(X); // 返回-1,0,1作為參數(shù)的符號(hào)

(5)圓周率

SIGN(X); // 返回-1,0,1作為參數(shù)的符號(hào)

(6)小數(shù)位截?cái)嗪瘮?shù)

TRUNCATE(X,Y) // 保留x后y位小數(shù)

(7)圓整(向最近的整數(shù)靠近)

ROUND(X) //返回離X最近的整數(shù)ROUND(X,Y) //返回x,后面保留y位小數(shù),截?cái)鄷r(shí)四舍五入// 例如ROUND(3.1415,3)=3.142

(8)平方、開方

POW(X,Y) //x的y次方SQRT(X); //對(duì)x開平方

MOD(X,Y)// 求余數(shù)

(9)指數(shù)對(duì)數(shù)

EXP(X); //e的x次方LOG(X);LOG10(X);

(10)弧度角度轉(zhuǎn)換

DEGREES(radians) // 弧度---角度

RADIANS(degree) // 度數(shù)---弧度

(11)三角函數(shù)

SIN(X); //x是弧度ASIN(X);COS(X);ACOS(X);TAN(X);ATAN(X);COT(X);

6.2 字符串函數(shù)

(1)長(zhǎng)度

CHAR_LENGTH(str);

(2)轉(zhuǎn)換大小寫

UPPER(str);UCASE(str);LOWER(str);LCASE(str);

(3)修剪函數(shù)(針對(duì)前導(dǎo)、結(jié)尾空格)

LTRIM(s);RTRIM(s);TRIM(s);//刪除引導(dǎo)空格;結(jié)尾空格;引導(dǎo)和結(jié)尾空格

TRIM(s1from s_src); //刪除s2開始和結(jié)尾處的s1

(4)替換、子串、反轉(zhuǎn)

REPLACE(s,s1,s2); //用s2替換s中的s1SUBSTRING(s,n,len); //s處n開始長(zhǎng)度為len的字符串LEFT(s,n),RIGHT(s,n) //返回左邊或者右邊長(zhǎng)度為n的字符串REVERSE(s); //字符串倒序

更多請(qǐng)參考:PHP 學(xué)習(xí)路線圖《MySQL快速入門》

6.3 日期和時(shí)間函數(shù)---------DATE

|----------TIME

(1)日期、時(shí)間

CURRENT_DATE(); // 2014-08-07

CURRENT_TIME(); // 10:30:30

(2)日期和時(shí)間(時(shí)間戳)

NOW(); // 2014-08-07 10:30:30

CURRENT_TIMESTAMP();// 2014-08-07 10:30:30LOCALTIME();// 2014-08-07 10:30:30LOCALTIMESTAMP();// 2014-08-07 10:30:30SYSDATE();// 2014-08-07 10:30:30

(3)以秒形式的時(shí)間戳

UNIX_TIMESTAMP(); //當(dāng)前UNIX時(shí)間戳

UNIX_TIMESTAMP(d);

FROM_UNIXTIME(d);

(4)年月日、時(shí)分秒

YEAR(d);MONTH(d);DAY(d);

HOUR(t);

MINUTE(t);

SECOND(t);

(5)工具函數(shù)

DATEDIFF(d1,d2) // d1-d2 的天數(shù),d1是最近的日期,d2是早些的日期

ADDDATE(d,n);

SUBDATE(d,n);

更多請(qǐng)參考:PHP 學(xué)習(xí)路線圖《MySQL快速入門》

6.4 條件判斷函數(shù)

6.5 系統(tǒng)信息函數(shù)

(1)版本號(hào)、連接數(shù)

VERSION(); //獲取版本

CONNECTION_ID();// 獲取連接數(shù)

(2)當(dāng)前數(shù)據(jù)庫(kù)名

DATABASE();SCHEMA(); // 當(dāng)前數(shù)據(jù)庫(kù)

(3)當(dāng)前用戶

USER();SYSTEM_USER();SESSON_USER(); //當(dāng)前用戶CURRENT_USER();

(4)字符集

CHARSET();

(5)最后插入的ID

LAST_INSERT_ID();

6.6 加密函數(shù)

MD5(str); //普通數(shù)據(jù)加密

PASSWORD(s);//不可逆加密,對(duì)用戶名加密

ENCODE(str_dst,pass_str);//用pass_str加密str_dst,返回二進(jìn)制數(shù),用blob類型存儲(chǔ)

DECODE(crypt_str,psss_str);// 用pass_str解密crpyt_str,加密和解密用的pass_str相同

總結(jié)

以上是生活随笔為你收集整理的mysql ddl脚本_MySQL学习之路(1):SQL脚本语言的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。