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語句是一樣的嗎
總體差不多,但有些小區別;我列給你看看: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 語句怎么寫
Mysql常用命令詳解Mysql安裝目錄數據庫目錄/var/lib/mysql/配置文件/usr/share/mysql(*命令及配置文件)相關命令/usr/bin(mysqladmin mysqldump等命令)啟動腳本/etc/init.d/mysql(啟動腳本文件mysql的目錄)系統管理連接MySQL格式: mysql -h 主機地址 -u用戶名 -p用戶密碼例 1:連接到本機上的 MySQL。
hadoop@ubuntu:~$ mysql -uroot -pmysql;例 2:連接到遠程主機上的 MYSQL。hadoop@ubuntu:~$ mysql -h 127.0.0.1 -uroot -pmysql;修改新密碼在終端輸入:mysql -u用戶名 -p密碼,回車進入Mysql。
> use mysql;> update user set password=PASSWORD('新密碼') where user='用戶名';> flush privileges; #更新權限> quit; #退出增加新用戶格式:grant select on 數據庫.* to 用戶名@登錄主機 identified by '密碼'舉例:例 1:增加一個用戶 test1 密碼為 abc,讓他可以在任何主機上登錄,并對所有數據庫有查詢、插入、修改、刪除的權限。首先用以 root 用戶連入 MySQL,然后鍵入以下命令:mysql>grant select,insert,update,delete on *.* to root@localhost identified by 'mysql';或者grant all privileges on *.* to root@localhost identified by 'mysql';然后刷新權限設置。
flush privileges;例 2:如果你不想 root 有密碼操作數據庫“mydb”里的數據表,可以再打一個命令將密碼消掉。grant select,insert,update,delete on mydb.* to root@localhost identified by '';刪除用戶hadoop@ubuntu:~$ mysql -u用戶名 -p密碼mysql>delete from user where user='用戶名' and host='localhost';mysql>flush privileges;//刪除用戶的數據庫mysql>drop database dbname;數據庫操作顯示所有的數據庫mysql> show databases;(注意:最后有個 s)創建數據庫mysql> create database test;連接數據庫mysql> use test;查看當前使用的數據庫mysql> select database();當前數據庫包含的表信息mysql> show tables; (注意:最后有個 s)刪除數據庫mysql> drop database test;表操作備注:操作之前使用“use ”應連接某個數據庫。
建表命令:create table ( [,.. ]);例子:mysql> create table MyClass(> id int(4) not null primary key auto_increment,> name char(20) not null,> sex int(4) not null default '0',> degree double(16,2));獲取表結構命令: desc 表名,或者show columns from 表名例子:mysql> describe MyClassmysql> desc MyClass;mysql> show columns from MyClass;刪除表命令:drop table 例如:刪除表名為 MyClass 的表mysql> drop table MyClass;插入數據命令:insert into [( [,.. ])] values ( 值 1 )[, ( 值 n )]例子:mysql> insert into MyClass values(1,'Tom',96.45),(2,'Joan',82.99), (2,'Wang', 96.59);查詢表中的數據查詢所有行mysql> select * from MyClass;查詢前幾行數據例如:查看表 MyClass 中前 2 行數據mysql> select * from MyClass order by id limit 0,2;或者mysql> select * from MyClass limit 0,2;刪除表中數據命令:delete from 表名 where 表達式例如:刪除表 MyClass 中編號為 1 的記錄mysql> delete from MyClass where id=1;修改表中數據命令:update 表名 set 字段=新值,。 where 條件mysql> update MyClass set name='Mary' where id=1;在表中增加字段命令:alter table 表名 add 字段 類型 其他;例如:在表 MyClass 中添加了一個字段 passtest,類型為 int(4),默認值為 0mysql> alter table MyClass add passtest int(4) default '0'更改表名命令:rename table 原表名 to 新表名;例如:在表 MyClass 名字更改為 YouClassmysql> rename table MyClass to YouClass;更新字段內容命令:update 表名 set 字段名 = 新內容update 表名 set 字段名 = replace(字段名, '舊內容', '新內容');例如:文章前面加入 4 個空格update article set content=concat(' ', content);數據庫導入導出從數據庫導出數據庫文件使用“mysqldump”命令首先進入 DOS 界面,然后進行下面操作。
1)導出所有數據庫格式:mysqldump -u [數據庫用戶名] -p -A>[備份文件的保存路徑]2)導出數據和數據結構格式:mysqldump -u [數據庫用戶名] -p [要備份的數據庫名稱]>[備份文件的保存路徑]舉例:例 1:將數據庫 mydb 導出到 e:\MySQL\* 文件中。打開開始->運行->輸入“cmd”,進入命令行模式。
c:\> mysqldump -h localhost -u root -p mydb >e:\MySQL\*然后輸入密碼,等待一會導出就成功了,可以到目標文件中檢查是否成功。例 2:將數據庫 mydb 中的 mytable 導出到 e:\MySQL\* 文件中。
c:\> mysqldump -h localhost -u root -p mydb mytable>e:\MySQL\*例 3:將數據庫 mydb 的結構導出到 e:\MySQL\mydb_* 文件中。c:\> mysqldump -h localhost -u root -p mydb --add-drop-table >e:\MySQL\mydb_*備注:-h localhost 可以省略,其一般在虛擬主機上用。
3)只導出數據不導出數據結構格式:mysqldump -u [數據庫用戶名] -p -t [要備份的數據庫名稱]>[備份文件的保存路徑]4)導出數據庫中的Events格式:mysqldump -u [數據庫用戶名] -p -E [數據庫用戶名]>[備份文件的保存路徑]5)導出數據。
MySql 比較全面的sql語句,誰有
SQL分類:DDL—數據定義語言(CREATE,ALTER,DROP,DECLARE)DML—數據操縱語言(SELECT,DELETE,UPDATE,INSERT)DCL—數據控制語言(GRANT,REVOKE,COMMIT,ROLLBACK)首先,簡要介紹基礎語句:1、說明:創建數據庫CREATE DATABASE database-name2、說明:刪除數據庫drop database dbname3、說明:備份sql server--- 創建 備份數據的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_*'--- 開始 備份BACKUP DATABASE pubs TO testBack4、說明:創建新表create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)根據已有的表創建新表:A:create table tab_new like tab_old (使用舊表創建新表)B:create table tab_new as select col1,col2… from tab_old definition only5、說明:刪除新表drop table tabname6、說明:增加一個列Alter table tabname add column col type注:列增加后將不能刪除。
DB2中列加上后數據類型也不能改變,唯一能改變的是增加varchar類型的長度。7、說明:添加主鍵: Alter table tabname add primary key(col)說明:刪除主鍵: Alter table tabname drop primary key(col)8、說明:創建索引:create [unique] index idxname on tabname(col….)刪除索引:drop index idxname注:索引是不可更改的,想更改必須刪除重新建。
9、說明:創建視圖:create view viewname as select statement刪除視圖:drop view viewname10、說明:幾個簡單的基本的sql語句選擇:select * from table1 where 范圍插入:insert into table1(field1,field2) values(value1,value2)刪除:delete from table1 where 范圍更新:update table1 set field1=value1 where 范圍查找:select * from table1 where field1 like '%value1%' ---like的語法很精妙,查資料!排序:select * from table1 order by field1,field2 [desc]總數:select count * as totalcount from table1求和:select sum(field1) as sumvalue from table1平均:select avg(field1) as avgvalue from table1最大:select max(field1) as maxvalue from table1最小:select min(field1) as minvalue from table111、說明:幾個高級查詢運算詞A: UNION 運算符UNION 運算符通過組合其他兩個結果表(例如 TABLE1 和 TABLE2)并消去表中任何重復行而派生出一個結果表。當 ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重復行。
兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2。B: EXCEPT 運算符EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重復行而派生出一個結果表。
當 ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重復行。C: INTERSECT 運算符INTERSECT 運算符通過只包括 TABLE1 和 TABLE2 中都有的行并消除所有重復行而派生出一個結果表。
當 ALL 隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重復行。注:使用運算詞的幾個查詢結果行必須是一致的。
12、說明:使用外連接A、left outer join:左外連接(左連接):結果集幾包括連接表的匹配行,也包括左連接表的所有行。SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = *:right outer join:右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有行。
C:full outer join:全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。其次,大家來看一些不錯的sql語句1、說明:復制表(只復制結構,源表名:a 新表名:b) (Access可用)法一:select * into b from a where 11法二:select top 0 * into b from a2、說明:拷貝表(拷貝數據,源表名:a 目標表名:b) (Access可用)insert into b(a, b, c) select d,e,f from a;3、說明:跨數據庫之間表的拷貝(具體數據使用絕對路徑) (Access可用)insert into b(a, b, c) select d,e,f from b in '具體數據庫' where 條件例子:..from b in '"&*h(".")&"\*" &"' where..4、說明:子查詢(表名1:a 表名2:b)select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)5、說明:顯示文章、提交人和最后回復時間select *,*me,*e from table a,(select max(adddate) adddate from table where *=*) b6、說明:外連接查詢(表名1:a 表名2:b)select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c7、說明:在線視圖查詢(表名1:a )select * from (SELECT a,b,c FROM a) T where t.a > 1;8、說明:between的用法,between限制查詢數據范圍時包括了邊界值,not between不包括select * from table1 where time between time1 and time2select a,b,c, from table1 where a not between 數值1 and 數值29、說明:in 的使用方法select * from table1 where a [not] in ('值1','值2','值4','值6')10、說明:兩張關聯表,刪除主表中已經在副表中沒有的信息delete from table1 where not exists ( select * from table2 where *1=*1 )11、說明。
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語句
mysql要實現定時執行sql語句就要用到Event具體操作如下:先看看看event 事件是否開啟show variables like '%sche%';如沒開啟,則開啟。
需要數據庫超級權限set global event_scheduler =1;創建存儲過程 update_a (注:就是你要執行的sql語句)mysql> create procedure update_a() update a set a.y_avg=(select avg(*) from b where a.a_id=b.a_id);創建一個定時任務:event e_updateA mysql> create event if not exists e_updateA -> on schedule every 60 second ---設置60秒執行一次 -> on schedule at date_add(now(),interval 1 minute) ---在一分鐘后執行 -> on completion preserve -> do call update_a(); ---執行update_a()存儲過程創建Event之后,sql語句就定時執行一次。關閉事件任務mysql> alter event e_updateA ON -> COMPLETION PRESERVE DISABLE;開啟事件任務mysql> alter event e_updateA ON -> COMPLETION PRESERVE ENABLE;如還有問題再聯系我。
mysql 按月份統計,sql 語句怎么寫
里上圖 表 aaa, 要按月份查找,a 出現的次數,代碼如下 SELECTCAST(YEAR(rq) as varchar) + '-' + CAST(MONTH(rq) as varchar) AS date,count(*) AS '次數'FROM aaawhere a="a"GROUP BYCAST(YEAR(rq) as varchar) + '-' + CAST(MONTH(rq) as varchar); 結果如下圖,看看是不是你要的 。
MySQL和SQL server 的語句相同么
SQL 標準語法的語句是相同的。
只有數據庫管理系統專有子句或函數是不同的。比如 MY sql 的 limit 與sql server中的TOP 功能相近,語法不同。
MY sql 取當前日期用cur_date(),sql server中的則用getdate()MY sql還支持多條記錄插入的寫法:insert into tabl1 values (1,1), (1,1), (1,1), (1,1), (1,1), (1,1), (1,1)還有一些小區別,就不一一列舉。就實際使用而言,這些差別可以忽略。
轉載請注明出處華閱文章網 » mysqlsql語句