MariaDB/mysql基本語法



第一部分: 環境

1、啓動服務

如果是完整安裝版,則系統會添加 mysql 對應的服務,隨系統啓動而啓動。

如果是綠色版,則找到 解壓目錄,其中有 bin 目錄,該目錄包含操作 MySQL 數據庫的所有命令。

bin 目錄下的 mysqld 命令可以啓動數據庫服務,通常在 cmd 環境下,使用類似以下方式啓動:

D:\GreenApplications\MySQL-Green\bin> mysqld --character-set-server=utf8

這裏,mysqld 是啓動命令,而 character-set-server 則是啓動參數,用於指定數據庫的字符編碼。

爲了使用方便,我們已經完成一個 腳本文件: 啓動服務.bat ,在 windows 下,雙擊即可啓動服務。

服務啓動後,這個 cmd 窗口即可關閉,它並不影響 mysql 服務的運行

(任務管理器可以看到多了個 mysqld.exe 的進程,這就是 mysql 服務的進程)

2、在 cmd 環境下登入並開始操作

D:\GreenApplications\MySQL-Green\bin> mysql -u 用戶名 -p

Enter Password:

在 mysql 數據庫中,最高權限的用戶名是 root ,綠色版的密碼是 mysql

即可以通過 mysql -u root -p mysql 登入數據庫

-u 用於指定用戶名

-p 用於指定密碼

還可以指定當前登陸的環境對應的字符編碼,使用 --default-character-set=gbk 形式指定

注意這個編碼(--default-character-set)指當前的 登陸環境中所使用的字符編碼,

可以理解成是指定當前 cmd 環境下的字符編碼。

Linux Mint 16 環境下:

開啓終端

輸入 mysql -u 用戶名 -p , 比如 mysql -u root -p

所有密碼默認: algom.cn

進入到 mysql> 提示符狀態

第二部分: 權限操作

0、創建數據庫: create database 數據庫名 character set utf8;

1、創建用戶 : create user 用戶名 identified by '密碼' ;

( 這裏注意,密碼必須使用引號包起來 )

2、刪除用戶 : drop user user_name ;

3、修改用戶名: rename user old_user_name to new_user_name ;

4、授予權限:

grant 權限名 (columns) on 權限對象 to 用戶名@域 [ identified by '密碼' ] ;

(權限名稱 和 權限對象 比較多,參見 MySQL 技術內幕 第四版 12.4 )

授權舉例: 假設存在數據庫 taobao ,存在用戶 mala ,把 taobao 數據庫的所有權限授予 mala 用戶

mysql> grant all on taobao.* to mala@localhost identified by 'java' ;

mysql> grant all on dbname.* to username@localhost identified by 'password';

給 localhost域的用戶 username 管理 dbname 數據庫的所有權利,密碼爲 password 。

5、查看當前用戶: select user() ;

6、查看用戶的權限: show grants for 'username'@'localhost'

查看當前用戶的權限: show grants ;

7、修改 root 用戶的密碼

set password for 'root'@'localhost' = password('新密碼');

或者:

update user set password = password('newpass') where user = 'root';

flush privileges ;

PRIVILEGES;

第三部分: 數據庫操作

1、創建數據庫 create database <數據庫名>

例如:建立一個名爲 malajava 的數據庫

mysql> create database malajava ;

創建數據庫時可以指定數據庫的編碼集:

create database malajava character set utf8;

2、顯示所有的數據庫 show databases (注意:最後有個 s)

mysql> show databases ;

3、刪除數據庫 drop database <數據庫名>

例如:刪除名爲 malajava 的數據庫

mysql> drop database malajava ;

4、連接數據庫(選擇數據庫) use <數據庫名>

例如:如果 malajava 數據庫存在,嘗試存取它:

mysql> use malajava ;

屏幕提示:Database changed

5、當前選擇(連接)的數據庫

mysql> select database();

6、當前數據庫包含的表信息 show tables

mysql> show tables ; (注意:最後有個 s)

注意,必須先選中一個數據庫,即先使用 use 打開一個數據庫,比如: use malajava ;

7、查看創建數據庫時的相關信息

mysql> show create database databaseName ;

第四部分: 表操作

操作表事前,必須先選中相應的數據庫(使用 user databaseName 命令)

1、建表

create table tableName ( columnName type ... )

比如創建 student 表:

mysql > create table student ( id int(10) primary key , name varchar(20) ) ;

2、查看錶結構 describe

mysql > desc student ;

3、增加列: alter table 表名 add ( 字段 類型 其他 ) ;

alter table users add ( address varchar(50) );

4、修改列: alter table

修改列的寬度、類型等:

alter table users modify ( address varchar(100) ); // Oracle

alter table users modify address varchar(100) ; // MySQL

修改列名:

alter table <表名> rename column old_column_name to new_column_name ; //Oracle

alert table <表名> change old_column_name new_column_name columnType ; //MySQL

5、刪除列:

alter table users drop address ; //MySQL (不使用 括號 )

alter table users drop ( address ); //Oracle (使用 括號)

6、刪除表: d

rop table tableName ;

7、截斷表: truncate table tableName ;

8、重命名錶: rename table 原表名 to 新表名

9、查看建表時的相關信息: show create table tableName

第五部分: 數據操作 (DML)

1、查詢操作

<補充1>、查詢前 n 行記錄:

select * from 表明 order by id limit 0 , n ;

2、插入操作: insert into

批量插入: insert into table_name values (....) , (......) ;

MySQL 中的批量插入:

insert into student values

( 1 , 'hua an ' , 'M' ) ,

( 2 , 'qiuxiang' , 'F') ,

( 3 , 'wuzhuangyuan','M') ,

( 4 , 'huawen' , 'M' ) ,

( 5 , 'huawu', 'M' ) ;

Oracle 的批量插入語句:

SQL> insert all

into customer_bak ( id , uname ) values ( 26 , 'tom26' )

into customer_bak ( id , uname ) values ( 27 , 'tom27' )

into customer_bak ( id , uname ) values ( 28 , 'tom28' )

select 1 from dual;

3、更新數據: update

update student set name='華安' , sex = 'F' where id = 1 ;

4、刪除數據: delete from

delete from student where id = 3 ;

第六部分: 數據類型

int : 整數

bigint :

float / double : 浮點數

varchar 變長字符串 --> 對應 Java 中的 String

char 定長字符串 --> 對應 Java 中的 String

date / datatime / time / timestamp

update student set birthday = '1990-09-09' ; // MySQL 隱式數據類型轉換

update student set birthday = to_date( '1990-09-09' , 'yyyy-MM-dd' ) ; // Oracle 中需要顯式數據類型轉換

第七部分: 引擎、事務

1、常用引擎: MyISAM 和 InnoDB

InnoDB 是支持事務操作的 引擎,因此建表時建議使用該引擎。

create table tableName ( ...... ) engine=InnoDB ;

如果建表時沒有指定引擎,則默認爲是 MyISAM 引擎,該引擎默認不支持事務操作。

建完表後修改引擎:

alter table tableName type = InnoDB;

或者

alter table tableName engine = InnoDB;

查看修改結果:

show table status from 數據庫名 ;

或者

show create table tableName ;

2、事務設置:

設置innodb的事務級別方法是:

set 作用域 transaction isolation level 事務隔離級別

例如:

mysql> set global transaction isolation level read committed; //全局的

mysql> set session transaction isolation level read uncommitted ;

mysq

l> set session transaction isolation level read committed; //當前會話

mysql> set session transaction isolation level repeatable read ;

mysql> set session transaction isolation level serializable ;

或者可以使用:

mysql> set global tx_isolation='repeatable-read';

mysql> set session tx_isolation='serializable';

3、事務操作語句(TCL)

a>、顯式開啓一個事務: begin 或 start transaction

b>、提交事務: commit

c>、回滾事務: rollback

d>、創建保存點: savepoint pointname

f>、刪除某個事務保存點: release savepoint pointname

g>、閃回(回滾)到某個保存點: rollback to pointname

h>、設置事務隔離級別: set transaction

可設置隔離級別包括:

read uncommited : 未提交讀

read commited : 已提交讀

repeatable read : 可重複讀

serializable : 序列化

i>、禁用 mysql 的自動提交 (MySQL 默認是自動提交)

mysql> set autocommit = false ; //不要再自動提交

mysql> set autocommit = true ; //自動提交(MySQL默認)

Oracle 中,默認是不自動提交:

查看 show autocommit

改爲自動提交 set autocommit on

改爲關閉狀態 set autocommit off (默認)

4、隱式提交事務的SQL : DDL 語句 、 DCL(數據控制語言,比如 drop user 、grant 等)

5、查看當前事務的隔離級別: select @@tx_isolation ;

第八部分: 備份與恢復

在 命令 行模式下,使用 mysqldump 命令完成

1.導出整個數據庫

mysqldump -u 用戶名 -p --default-character-set=latin1 數據庫名 > 導出的文件名

(數據庫默認編碼是 latin1)

比如: mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql

2.導出一個表

mysqldump -u 用戶名 -p 數據庫名 表名> 導出的文件名

比如: mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql

3.導出一個數據庫結構

mysqldump -u wcnc -p -d –add-drop-table smgp_apps_wcnc >d:wcnc_db.sql

-d 沒有數據

–add-drop-table 在每個create 語句之前增加一個 drop table

4.導入數據庫

常用 source 命令

進入 mysql 數據庫控制檯,

如 mysql -u root -p

mysql>use 數據庫

然後使用 source 命令,後面參數爲腳本文件(如這裏用到的.sql)

mysql>source d:/malajava.sql

補充1、日期格式化 ---------------------------------------------------

-----------------

DATE_FORMAT(date, format) 根據格式串format 格式化日期或日期和時間值date,返回結果串。

可用DATE_FORMAT( ) 來格式化DATE 或DATETIME 值,以便得到所希望的格式。根據format字符串格式化date值:

%S, %s 兩位數字形式的秒( 00,01, . . ., 59)

%i 兩位數字形式的分( 00,01, . . ., 59)

%H 兩位數字形式的小時,24 小時(00,01, . . ., 23)

%h, %I 兩位數字形式的小時,12 小時(01,02, . . ., 12)

%k 數字形式的小時,24 小時(0,1, . . ., 23)

%l 數字形式的小時,12 小時(1, 2, . . ., 12)

%T 24 小時的時間形式(h h : m m : s s)

%r 12 小時的時間形式(hh:mm:ss AM 或hh:mm:ss PM)

%p AM 或P M

%W 一週中每一天的名稱( S u n d a y, Monday, . . ., Saturday)

%a 一週中每一天名稱的縮寫( Sun, Mon, . . ., Sat)

%d 兩位數字表示月中的天數( 00, 01, . . ., 31)

%e 數字形式表示月中的天數( 1, 2, . . ., 31)

%D 英文後綴表示月中的天數( 1st, 2nd, 3rd, . . .)

%w 以數字形式表示週中的天數( 0 = S u n d a y, 1=Monday, . . ., 6=Saturday)

%j 以三位數字表示年中的天數( 001, 002, . . ., 366)

% U 周(0, 1, 52),其中Sunday 爲週中的第一天

%u 周(0, 1, 52),其中Monday 爲週中的第一天

%M 月名(J a n u a r y, February, . . ., December)

%b 縮寫的月名( J a n u a r y, February, . . ., December)

%m 兩位數字表示的月份( 01, 02, . . ., 12)

%c 數字表示的月份( 1, 2, . . ., 12)

%Y 四位數字表示的年份

%y 兩位數字表示的年份

%% 直接值“%”

select date_format(日期字段,’%Y-%m-%d’) as ‘日期’ from test

--------------------------------------------------------------------

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章