一、MySQL的SQL語言叫什么
mysql中的sql語言就叫sql語言,中文名叫結構化查詢語言。
簡介:
結構化查詢語言(Structured Query Language)簡稱SQL(發音:/?es kju? ?el/ "S-Q-L"),是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用于存取數據以及查詢、更新和管理關系數據庫系統;同時也是數據庫腳本文件的擴展名。
結構化查詢語言是高級的非過程化編程語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同數據庫系統, 可以使用相同的結構化查詢語言作為數據輸入與管理的接口。結構化查詢語言語句可以嵌套,這使它具有極大的靈活性和強大的功能。
1986年10月,美國國家標準協會對SQL進行規范后,以此作為關系式數據庫管理系統的標準語言(ANSI
X3.
135-1986),1987年得到國際標準組織的支持下成為國際標準。不過各種通行的數據庫系統在其實踐過程中都對SQL規范作了某些編改和擴充。所以,實際上不同數據庫系統之間的SQL不能完全相互通用。
結構化查詢語言包含6個部分:
一:數據查詢語言(DQL:Data Query Language):
其語句,也稱為“數據檢索語句”,用以從表中獲得數據,確定數據怎樣在應用程序給出。保留字SELECT是DQL(也是所有SQL)用得最多的動詞,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。這些DQL保留字常與其他類型的SQL語句一起使用。
二:數據操作語言(DML:Data Manipulation Language):
其語句包括動詞INSERT,UPDATE和DELETE。它們分別用于添加,修改和刪除表中的行。也稱為動作查詢語言。
三:事務處理語言(TPL):
它的語句能確保被DML語句影響的表的所有行及時得以更新。TPL語句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。
四:數據控制語言(DCL):
它的語句通過GRANT或REVOKE獲得許可,確定單個用戶和用戶組對數據庫對象的訪問。某些RDBMS可用GRANT或REVOKE控制對表單個列的訪問。
五:數據定義語言(DDL):
其語句包括動詞CREATE和DROP。在數據庫中創建新表或刪除表(CREAT TABLE 或 DROP TABLE);為表加入索引等。DDL包括許多與人數據庫目錄中獲得數據有關的保留字。它也是動作查詢的一部分。
六:指針控制語言(CCL):
它的語句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于對一個或多個表單獨行的操作。
二、mysql中的sql語句
兄弟,你這是mysql,開始被你誤導啦 select a.* from mytable a,(select date(mydate) mydate,max(mydate) max_datetime from mytable where date(mydate) between '2014-07-23' and '2014-07-28' group by date(mydate)) bwhere *=*_datetimeand date(*)=*。
三、mysql的語句和sql語句是一樣的嗎
總體差不多,但有些小區別;我列給你看看:1 mysql支持enum,和set類型,sql server不支持
2 mysql不支持nchar,nvarchar,ntext類型
3 mysql的遞增語句是AUTO_INCREMENT,而mssql是identity(1,1)
4 msms默認到處表創建語句的默認值表示是((0)),而在mysql里面是不允許帶兩括號的
5 mysql需要為表指定存儲類型
6 mssql識別符是[],[type]表示他區別于關鍵字,但是mysql卻是 `,也就是按鍵1左邊的那個符號
7 mssql支持getdate()方法獲取當前時間日期,但是mysql里面可以分日期類型和時間類型,獲取當前日期是cur_date(),當前完整時間是 now()函數
8 mssql不支持replace into 語句,但是在最新的sql20008里面,也支持merge語法
9 mysql支持insert into table1 set t1 = '', t2 = '' ,但是mssql不支持這樣寫
10 mysql支持insert into tabl1 values (1,1), (1,1), (1,1), (1,1), (1,1), (1,1), (1,1)
11 mssql不支持limit語句,是非常遺憾的,只能用top 取代limt 0,N,row_number() over()函數取代limit N,M
12 mysql在創建表時要為每個表指定一個存儲引擎類型,而mssql只支持一種存儲引擎
13 mysql不支持默認值為當前時間的datetime類型(mssql很容易做到),在mysql里面是用timestamp類型
14 mssql里面檢查是否有這個表再刪除,需要這樣:
if exists (select * from *ects where id = object_id(N'uc_newpm') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
但是在mysql里面只需要 DROP TABLE IF EXISTS cdb_forums;
15 mysql支持無符號型的整數,那么比不支持無符號型的mssql就能多出一倍的最大數存儲
16 mysql不支持在mssql里面使用非常方便的varchar(max)類型,這個類型在mssql里面既可做一般數據存儲,也可以做blob數據存儲
17 mysql創建非聚集索引只需要在創建表的時候指定為key就行,比如:KEY displayorder (fid,displayorder) 在mssql里面必須要:create unique nonclustered index index_uc_protectedmembers_username_appid on *_protectedmembers
(username asc,appid asc)
18 mysql text字段類型不允許有默認值
19mysql的一個表的總共字段長度不超過65XXX。
20一個很表面的區別就是mysql的安裝特別簡單,而且文件大小才110M(非安裝版),相比微軟這個龐然大物,安裝進度來說簡直就是。..
21mysql的管理工具有幾個比較好的,mysql_front,和官方那個套件,不過都沒有SSMS的使用方便,這是mysql很大的一個缺點。
22mysql的存儲過程只是出現在最新的版本中,穩定性和性能可能不如mssql。
23 同樣的負載壓力,mysql要消耗更少的CPU和內存,mssql的確是很耗資源。
24php連接mysql和mssql的方式都差不多,只需要將函數的mysql替換成mssql即可。
25mysql支持date,time,year類型,mssql到2008才支持date和time。
四、mysql sql 語句
一、簡單查詢 簡單的Transact-SQL查詢只包括選擇列表、FROM子句和WHERE子句。
它們分別說明所查詢列、查詢的表或視圖、以及搜索條件等。 例如,下面的語句查詢testtable表中姓名為"張三"的nickname字段和email字段。
SELECT nickname,email FROM testtable WHERE name='張三' (一) 選擇列表 選擇列表(select_list)指出所查詢列,它可以是一組列名列表、星號、表達式、變量(包括局部變量和全局變量)等構成。 1、選擇所有列 例如,下面語句顯示testtable表中所有列的數據: SELECT * FROM testtable 2、選擇部分列并指定它們的顯示次序 查詢結果集合中數據的排列順序與選擇列表中所指定的列名排列順序相同。
例如: SELECT nickname,email FROM testtable 3、更改列標題 在選擇列表中,可重新指定列標題。定義格式為: 列標題=列名 列名 列標題 如果指定的列標題不是標準的標識符格式時,應使用引號定界符,例如,下列語句使用漢字顯示列標題: SELECT 昵稱=nickname,電子郵件=email FROM testtable 4、刪除重復行 SELECT語句中使用ALL或DISTINCT選項來顯示表中符合條件的所有行或刪除其中重復的數據行,默認為ALL。
使用DISTINCT選項時,對于所有重復的數據行在SELECT返回的結果集合中只保留一行。 5、限制返回的行數 使用TOP n [PERCENT]選項限制返回的數據行數,TOP n說明返回n行,而TOP n PERCENT時,說明n是表示一百分數,指定返回的行數等于總行數的百分之幾。
例如: SELECT TOP 2 * FROM testtable SELECT TOP 20 PERCENT * FROM testtable (二)FROM子句 FROM子句指定SELECT語句查詢及與查詢相關的表或視圖。在FROM子句中最多可指定256個表或視圖,它們之間用逗號分隔。
在FROM子句同時指定多個表或視圖時,如果選擇列表中存在同名列,這時應使用對象名限定這些列所屬的表或視圖。例如在usertable和citytable表中同時存在cityid列,在查詢兩個表中的cityid時應使用下面語句格式加以限定: SELECT username,* FROM usertable,citytable WHERE *=* 在FROM子句中可用以下兩種格式為表或視圖指定別名: 表名 as 別名 表名 別名 (二) FROM子句 FROM子句指定SELECT語句查詢及與查詢相關的表或視圖。
在FROM子句中最多可指定256個表或視圖,它們之間用逗號分隔。 在FROM子句同時指定多個表或視圖時,如果選擇列表中存在同名列,這時應使用對象名限定這些列所屬的表或視圖。
例如在usertable和citytable表中同時存在cityid列,在查詢兩個表中的cityid時應使用下面語句格式加以限定: SELECT username,* FROM usertable,citytable WHERE *=* 在FROM子句中可用以下兩種格式為表或視圖指定別名: 表名 as 別名 表名 別名 例如上面語句可用表的別名格式表示為: SELECT username,* FROM usertable a,citytable b WHERE *=* SELECT不僅能從表或視圖中檢索數據,它還能夠從其它查詢語句所返回的結果集合中查詢數據。 例如: SELECT *_fname+*_lname FROM authors a,titleauthor ta (SELECT title_id,title FROM titles WHERE ytd_sales>10000 ) AS t WHERE *_id=*_id AND *_id=*_id 此例中,將SELECT返回的結果集合給予一別名t,然后再從中檢索數據。
(三) 使用WHERE子句設置查詢條件 WHERE子句設置查詢條件,過濾掉不需要的數據行。例如下面語句查詢年齡大于20的數據: SELECT * FROM usertable WHERE age>20 WHERE子句可包括各種條件運算符: 比較運算符(大小比較):>、>=、=、<、<=、<>、!>、!< 范圍運算符(表達式值是否在指定的范圍):BETWEEN。
AND。 NOT BETWEEN。
AND。 列表運算符(判斷表達式是否為列表中的指定項):IN (項1,項2。
。) NOT IN (項1,項2。
。) 模式匹配符(判斷值是否與指定的字符通配格式相符):LIKE、NOT LIKE 空值判斷符(判斷表達式是否為空):IS NULL、NOT IS NULL 邏輯運算符(用于多條件的邏輯連接):NOT、AND、OR 1、范圍運算符例:age BETWEEN 10 AND 30相當于age>=10 AND age<=30 2、列表運算符例:country IN ('Germany','China') 3、模式匹配符例:常用于模糊查找,它判斷列值是否與指定的字符串格式相匹配。
可用于char、varchar、text、ntext、datetime和smalldatetime等類型查詢。 可使用以下通配字符: 百分號%:可匹配任意類型和長度的字符,如果是中文,請使用兩個百分號即%%。
下劃線_:匹配單個任意字符,它常用來限制表達式的字符長度。 方括號[]:指定一個字符、字符串或范圍,要求所匹配對象為它們中的任一個。
[^]:其取值也[] 相同,但它要求所匹配對象為指定字符以外的任一個字符。 例如: 限制以Publishing結尾,使用LIKE '%Publishing' 限制以A開頭:LIKE '[A]%' 限制以A開頭外:LIKE '[^A]%' 4、空值判斷符例WHERE age IS NULL 5、邏輯運算符:優先級為NOT、AND、OR (四)查詢結果排序 使用ORDER BY子句對。
五、MYSQL數據庫如何執行SQL語句
select @a=DRClass1, @b=DRClass2, @c=DRClass3, @d=DRClass4, @e=DRClass5 from Teacher Where TeacherID = @TeacherID create table classname(classname char(50)) insert into classname (classname) values (@a) if (@b is not null) begin insert into classname (classname) values (@b) if (@c is not null) begin insert into classname (classname) values (@c) if (@d is not null) begin insert into classname (classname) values (@d) if (@e is not null) begin insert into classname (classname) values (@e) end end end end select * from classname 以上這些SQL語句能不能轉成一個存儲過程?我自己試了下 ALTER PROCEDURE Pr_GetClass @TeacherID int, @a char(50), @b char(50), @c char(50), @d char(50), @e char(50) as select @a=DRClass1, @b=DRClass2, @c=DRClass3, @d=DRClass4, @e=DRClass5 from Teacher Where TeacherID = @TeacherID DROP TABLE classname create table classname(classname char(50)) insert into classname (classname) values (@a) if (@b is not null) begin insert into classname (classname) values (@b) if (@c is not null) begin insert into classname (classname) values (@c) if (@d is not null) begin insert into classname (classname) values (@d) if (@e is not null) begin insert into classname (classname) values (@e) end end end end select * from classname 但是這樣的話,這個存儲過程就有6個變量,實際上應該只提供一個變量就可以了 主要的問題就是自己沒搞清楚 @a,@b,@C,@d 等是臨時變量,是放在as后面重新做一些申明的,而不是放在開頭整個存儲過程的變量定義。
(標準化越來越近了):namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 實戰SQL語句收集(不斷更新中--) 前言:這里將我編程實踐中遇到的有價值的sql語句一路記下來,一方面方便自己查用,一方面也夯實下即將遺忘的回憶。整個過程中我會不斷更新,直到不能再加為止,同時,這里只記錄最實用的咚咚,不效仿學院派的那一套。
六、mysql中的sql語句存在關鍵字怎么辦
1. 用逗引將關鍵字的字段引起來,insert into tb_test `use` values ('test');逗引就是數字鍵旁邊的那個,在英文輸入法下按下建議:數據庫表的設計避過關鍵字。
2. 如果sql語句中存在關鍵字,可以用反勾號(Esc下面的那個鍵)做轉義;
3. ` 是 MySQL 的轉義符,避免和 mysql 的本身的關鍵字沖突,只要你不在列名、表名中使用 mysql 的保留字或中文,就不需要轉義。
4. 所有的數據庫都有類似的設置,不過mysql用的是`而已。通常用來說明其中的內容是數據庫名、表名、字段名,不是關鍵字。例如:select from from table;
5. 第一個from是字段名,最后的table表名,但是同時也是mysql關鍵字,這樣執行的時候就會報錯,所以應該使用。
七、mysql中的sql語句
兄弟,你這是mysql,開始被你誤導啦
select a.* from mytable a,
(select date(mydate) mydate,max(mydate) max_datetime from mytable where date(mydate) between '2014-07-23' and '2014-07-28' group by date(mydate)) b
where *=*_datetime
and date(*)=*
轉載請注明出處華閱文章網 » mysql中sql語句