欢迎投稿

今日深度:

MariaDB/mysql基本语法,mariadbmysql

MariaDB/mysql基本语法,mariadbmysql




第一部分: 环境

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

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

www.htsjk.Com true http://www.htsjk.com/mariadb/26998.html NewsArticle MariaDB/mysql基本语法,mariadbmysql  第一部分: 环境 1、启动服务 如果是完整安装版,则系统会添加 mysql 对应的服务,随系统启动而启动。 如果是绿色版,则找到 解压目录,其中有...
相关文章
    暂无相关文章
评论暂时关闭