Mysql數據庫敕令年夜全。本站提示廣大學習愛好者:(Mysql數據庫敕令年夜全)文章只能為提供參考,不一定能成為您想要的結果。以下是Mysql數據庫敕令年夜全正文
1. 履行一個SQL劇本文件
sqlplus user/pass@servicename<file_name.sql
或
SQL>start file_names
或
SQL>@ file_name
我們可以將多條sql語句保留在一個文本文件中,如許當要履行這個文件中的一切的sql語句時,用下面的任一敕令便可,這相似於dos中的批處置。
@與@@的差別是甚麼?
@等於start敕令,用來運轉一個sql劇本文件。
@敕令挪用以後目次下的,或指定全途徑,或可以經由過程SQLPATH情況變量搜索到的劇本文件。該敕令應用是普通要指定要履行的文件的全途徑,不然從缺省途徑(可用SQLPATH變量指定)下讀取指定的文件 www.111Cn.net。
@@用在sql劇本文件中,用來講明用@@履行的sql劇本文件與@@地點的文件在統一目次下,而不消指定要履行sql劇本文件的全途徑,也不是從SQLPATH情況變量指定的途徑中尋覓sql劇本文件,該敕令普通用在劇本文件中。
如:在c:temp目次下有文件start.sql和nest_start.sql,start.sql劇本文件的內容為:
@@nest_start.sql – - 相當於@ c:tempnest_start.sql
則我們在sql*plus中,如許履行:
SQL> @ c:tempstart.sql
2. 從新運轉上一次運轉的sql語句
SQL>/
3. 將顯示的內容輸入到指定文件
SQL> SPOOL file_name
在屏幕上的一切內容都輸出到該文件中,包含你輸出的sql語句。
平日情形下,我們應用SPOOL辦法,將數據庫中的表導出為文本文件的時刻會采取兩種辦法,以下述:
辦法一:采取以下格局劇本
set colsep ‘|'; –設置|為列分隔符 set trimspool on; set linesize 120; set pagesize 2000; set newpage 1; set heading off; set term off; set num 18; set feedback off; spool 途徑+文件名; select * from tablename; spool off;
辦法二:采取以下劇本
set trimspool on set linesize 120 set pagesize 2000 set newpage 1 set heading off set term off spool 途徑+文件名 select col1||','||col2||','||col3||','||col4||'..' from tablename; spool off
附一些根本敕令
1、獲得數據庫名和創立日期
SELECT name, created, log_mode, open_mode FROM v$database;
2、ORACLE數據庫的盤算機的主機名,ORACLE數據庫的實例名及ORACLE數據庫治理體系的版本信息
SELECT host_name, instance_name, version FROM v$instance;
3、為了曉得oracle數據庫版本的一些特別信息
select * from v$version;
4、獲得掌握文件名字
select * from v$controlfile;
5、獲得Oracle數據庫的重做日記設置裝備擺設信息
SELECT group#, members, bytes, status, archived FROM v$log;
select GROUP#,MEMBER from v$logfile;
6、獲得oracle的每一個重做日記(成員)文件所寄存的詳細地位
select * from v$logfile;
7、曉得ORACLE數據庫的備份和恢復戰略和歸檔文件的詳細地位
archive log list
8、曉得ORACLE數據庫中究竟有若干表空間和每一個表空間的狀況
select tablespace_name, block_size, status, contents, logging from dba_tablespaces; select tablespace_name, status from dba_tablespaces;
9、曉得每一個表空間存在哪一個磁盤上和文件的名字等信息
SELECT file_id, file_name, tablespace_name, status, bytes from dba_data_files; select file_name, tablespace_name from dba_data_files;
10、曉得Oracle數據庫體系上究竟有若干用戶和都是甚麼時刻創立的
select username,created from dba_users; select username, DEFAULT_TABLESPACE from dba_users;
11、從掌握文件中掏出信息觸及到以下一些相干的敕令
select * from v$archived select * from v$archived_log select * from v$backup select * from v$database select * from v$datafile select * from v$log select * from v$logfile select * from v$loghist select * from v$tablespace select * from v$tempfile
12、掌握文件由兩年夜部分構成:可重用的部分和弗成重用的部門。可重用的部門的年夜小可用
CONTROL_FILE_RECORD_KEEP_TIME參數來掌握,該參數的默許值為7天,便可重用的部分的內容保存7天,一周以後這部分的內容能夠被籠罩。可重用的部分是供恢復治理器來應用的,這部分的內容可以主動擴大。Oracle數據庫治理員可使用CREAT DATABASE或 CREAT CONTROLFILE語句中的以下症結字(參數)來直接影響弗成重用的部分的年夜小:
MAXDATAFILES MAXINSTANCES MAXLOGFILES MAXLOGHISTORY MAXLOGMEMBERS
13、檢查掌握文件的設置裝備擺設
SELECT type, record_size, records_total, records_used FROM v$controlfile_record_section;
14、假如您的顯示被分紅了兩部門,您須要應用相似於set pagesize 100的SQL*Plus敕令先格局化輸入。有關的格局化輸入敕令有以下這些:
record_size: 為每一個記載的字節數。
records_total:為該段所分派的記載個數。
records_used:為該段所應用的記載個數。
15、曉得掌握文件中的一切數據文件(DATAFILE),表空間(TABLESPACE),和重做日記(REDO LOG)所應用的記載情形
SELECT type, record_size, records_total, records_used FROM v$controlfile_record_section WHERE type IN ( ‘DATAFILE', ‘TABLESPACE', ‘REDO LOG');
16、獲得掌握文件名字
select value from v$parameter where name ='control_files'; 或許:select * from v$controlfile
17、若何在一個曾經裝置的Oracle數據庫中添加或挪動掌握文件呢?
以下是在一個曾經裝置的Oracle數據庫中添加或挪動掌握文件的詳細步調:
a、應用數據字典v$controlfile來獲得現有掌握文件名字。
b、正常封閉Oracle數據庫。
c、將新的掌握文件名添加到參數文件的CONTROL_FILES參數中。
d、應用操作體系的復制敕令將現有掌握文件復制到指定地位。
e、從新啟動Oracle數據庫。
f、應用數據字典v$controlfile來驗證新的掌握文件名字能否准確。
g、假如有誤重做上述操作,假如無誤刪除無用的舊掌握文件。
注: 假如您應用了辦事器初始化參數文件(SPFILE),您不克不及封閉Oracle數據庫並且應當在第3步應用alter system set control_files的Oracle敕令來轉變掌握文件的地位。
SQL> alter system set control_files = ‘D:Disk3CONTROL01.CTL', ‘D:Disk6CONTROL02.CTL', ‘D:Disk9CONTROL03.CTL' SCOPE=SPFILE;
18、因為掌握文件是一個極端種要的文件,除以上所說的將掌握文件的多個正本存在分歧的硬盤上的掩護辦法外,在數據庫的構造變更以後,您應立刻對掌握文件停止備份。可以用Oracle敕令來對掌握文件停止備份:
alter database backup controlfile to ‘D:backupcontrol.bak';
19、您也可將備份到一個追蹤文件中。該追蹤文件包括有重建掌握文件所需的SQL語句。可以使用以下SQL語句來發生這一追蹤文件:
alter database backup controlfile to trace;
20、正常封閉oracle敕令
shutdown immeditae
PS:oracle客戶端銜接的文件設置裝備擺設:
oracle的目次/network/ADMIN/tnsnames.ora
內容:
MIMI(客戶端銜接的稱號) = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.254)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = NTDB.RUNNER) ) )
修正表構造
alter table m_gl_gls3_history add (aaaaa varchar2(20),bbbbb varchar2(10)) alter table m_gl_gls3_history modify (aaaaa varchar2(10)) --要轉變表中的字段的類型或減少字段長度,該字段的一切記載值必需為空。 --假如改字段存在記載值,則該字段長度只能擴展,不克不及減少。 alter table m_gl_gls3_history drop (aaaaa , bbbbb )
留意:這裡用到CONCAT()函數,用來把字符串串接起來。別的,我們還用到之前學到的AS給成果列'CONCAT(f_name, " ", l_name)'起了個化名。
5.1 創立數據表
敕令:create table <表名> ( <字段名1> <類型1> [,..<字段名n> <類型n>]);
例如,樹立一個名為MyClass的表,
字段名 數字類型 數據寬度 能否為空 能否主鍵 主動增長 默許值
id int 4 否 primary key auto_increment name char 20 否 sex int 4 否 0 degree double 16 是 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));
5.3 刪除數據表
敕令:drop table <表名>
例如:刪除表名為 MyClass 的表
mysql> drop table MyClass;
DROP TABLE用於撤消一個或多個表。您必需有每一個表的DROP權限。一切的表數據和表界說會被撤消,所以應用本語句要當心!
留意:關於一個帶分區的表,DROP TABLE會永遠性地撤消表界說,撤消各分區,並撤消貯存在這些分區中的一切數據。DROP TABLE還會撤消與被撤消的表有聯系關系的分區界說(.par)文件。
對與不存在的表,應用IF EXISTS用於避免毛病產生。當應用IF EXISTS時,關於每一個不存在的表,會生成一個NOTE。
RESTRICT和CASCADE可使分區更輕易。今朝,RESTRICT和CASCADE不起感化。
5.4 表拔出數據
敕令:insert into <表名> [( <字段名1>[,..<字段名n > ])] values ( 值1 )[, ( 值n )]
例如:往表 MyClass中拔出二筆記錄, 這二筆記錄表現:編號為1的名為Tom的成就為96.45, 編號為2 的名為Joan 的成就為82.99, 編號為3 的名為Wang 的成就為96.5。
mysql> insert into MyClass values(1,'Tom',96.45),(2,'Joan',82.99), (2,'Wang', 96.59);
留意:insert into每次只能向表中拔出一筆記錄。
5.5 查詢表中的數據
1)、查詢一切行
敕令: select <字段1,字段2,...> from < 表名 > where < 表達式 >
例如:檢查表 MyClass 中一切數據
mysql> select * from MyClass;
2)、查詢前幾行數據
例如:檢查表 MyClass 中前2行數據
mysql> select * from MyClass order by id limit 0,2;
select普通合營where應用,以查詢更准確更龐雜的數據。
5.6 刪除表中數據
敕令:delete from 表名 where 表達式
例如:刪除表 MyClass中編號為1 的記載
mysql> delete from MyClass where id=1;
上面是一個刪除數據前後表的比較。
FirstName LastName Age Peter Griffin 35 Glenn Quagmire 33
上面以PHP代碼為例刪除 "Persons" 表中一切 LastName='Griffin' 的記載:
<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); mysql_query("DELETE FROM Persons WHERE LastName='Griffin'"); mysql_close($con); ?>
在此次刪除以後,表是如許的:
FirstName LastName Age Glenn Quagmire 33
5.7 修正表中數據
語法:update 表名 set 字段=新值,… where 前提
mysql> update MyClass set name='Mary' where id=1;
例子1:單表的MySQL UPDATE語句:
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition] [ORDER BY ...] [LIMIT row_count]
例子2:多表的UPDATE語句:
UPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition]
UPDATE語法可以用新值更新原有表行中的各列。SET子句指導要修正哪些列和要賜與哪些值。WHERE子句指定應更新哪些行。假如沒有WHERE子句,則更新一切的行。假如指定了ORDER BY子句,則依照被指定的次序對行停止更新。LIMIT子句用於給定一個限值,限制可以被更新的行的數量。
5.8 增長字段
敕令:alter table 表名 add字段 類型 其他;
例如:在表MyClass中添加了一個字段passtest,類型為int(4),默許值為0
mysql> alter table MyClass add passtest int(4) default '0'
加索引
mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]);
例子:
mysql> alter table employee add index emp_name (name);
加主症結字的索引
mysql> alter table 表名 add primary key (字段名);
例子:
mysql> alter table employee add primary key(id);
加獨一限制前提的索引
mysql> alter table 表名 add unique 索引名 (字段名);
例子:
mysql> alter table employee add unique emp_name2(cardnumber);
刪除某個索引
mysql> alter table 表名 drop index 索引名;
例子:
mysql>alter table employee drop index emp_name;
增長字段:
mysql> ALTER TABLE table_name ADD field_name field_type;
修正原字段稱號及類型:
mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;
刪除字段:
MySQL ALTER TABLE table_name DROP field_name;
5.9 修正表名
敕令:rename table 原表名 to 新表名;
例如:在表MyClass名字更改成YouClass
mysql> rename table MyClass to YouClass;
當你履行 RENAME 時,你不克不及有任何鎖定的表或運動的事務。你異樣也必需有對原初表的 ALTER 和 DROP 權限,和對新表的 CREATE 和 INSERT 權限。
假如在多表改名中,MySQL 遭受就任何毛病,它將對一切被改名的表停止發展改名,將每件事物退回到最後狀況。
RENAME TABLE 在 MySQL 3.23.23 中被參加。
6、備份數據庫
敕令在DOS的[url=file://\\mysql\\bin]\\mysql\\bin[/url]目次下履行
1.導出全部數據庫
導出文件默許是存在mysql\bin目次下
mysqldump -u 用戶名 -p 數據庫名 > 導出的文件名
mysqldump -u user_name -p123456 database_name > outfile_name.sql
2.導出一個表
mysqldump -u 用戶名 -p 數據庫名 表名> 導出的文件名
mysqldump -u user_name -p database_name table_name > outfile_name.sql
3.導出一個數據庫構造
mysqldump -u user_name -p -d –add-drop-table database_name > outfile_name.sql
-d 沒稀有據 –add-drop-table 在每一個create語句之前增長一個drop table
4.帶說話參數導出
mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt database_name > outfile_name.sql
例如,將aaa庫備份到文件back_aaa中:
[root@test1 root]# cd /home/data/mysql
[root@test1 mysql]# mysqldump -u root -p --opt aaa > back_aaa
7.1 一個建庫和建表的實例1
drop database if exists school; //假如存在SCHOOL則刪除 create database school; //樹立庫SCHOOL use school; //翻開庫SCHOOL create table teacher //樹立表TEACHER ( id int(3) auto_increment not null primary key, name char(10) not null, address varchar(50) default ‘深圳', year date ); //建表停止 //以下為拔出字段 insert into teacher values(”,'allen','年夜連一中','1976-10-10′); insert into teacher values(”,'jack','年夜連二中','1975-12-23′);
假如你在mysql提醒符鍵入下面的敕令也能夠,但不便利調試。
1、你可以將以上敕令原樣寫入一個文本文件中,假定為school.sql,然後復制到c:\\下,並在DOS狀況進入目次[url=file://\\mysql\\bin]\\mysql\\bin[/url],然後鍵入以下敕令:
mysql -uroot -p暗碼 < c:\\school.sql
假如勝利,空出一行無任何顯示;若有毛病,會有提醒。(以上敕令曾經調試,你只需將//的正文去失落便可應用)。
2、或許進入敕令行後應用 mysql> source c:\\school.sql; 也能夠將school.sql文件導入數據庫中。
7.2 一個建庫和建表的實例2
drop database if exists school; //假如存在SCHOOL則刪除 create database school; //樹立庫SCHOOL use school; //翻開庫SCHOOL create table teacher //樹立表TEACHER ( id int(3) auto_increment not null primary key, name char(10) not null, address varchar(50) default ''深圳'', year date ); //建表停止 //以下為拔出字段 insert into teacher values('''',''glchengang'',''深圳一中'',''1976-10-10''); insert into teacher values('''',''jack'',''深圳一中'',''1975-12-23'');
注:在建表中
1、將ID設為長度為3的數字字段:int(3);並讓它每一個記載主動加一:auto_increment;其實不能為空:not null;並且讓他成為主字段primary key。
2、將NAME設為長度為10的字符字段
3、將ADDRESS設為長度50的字符字段,並且缺省值為深圳。
4、將YEAR設為日期字段。