mysql初始化三部曲_构建Mysql三部曲之二 概念语法

一、基本概念

SQL(Structured Query Language)结构化查询语言

SQL语言包含4个部分:

1.数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句

2.数据操作语言(DML),例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句

3.数据查询语言(DQL),例如:SELECT语句

4.数据控制语言(DCL),例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句

MySQL支持标准的SQL语句,也有自己私有的SQL语句。

SQL数据基本操作分为为创建(create)、更新(update)、读取(read)和删除(delete),即CURD,以及在此基础上的更为复杂的一些数据操作。

create:分为create和insert into,用于创建数据库(表)以及向表里添加数据记录

update:更新数据库(表)信息以及更新表内的具体数据信息记录

read:读取数据库(表)信息以及表内的具体数据信息记录

delete:删除数据库(表)信息以及表内的具体数据信息记录

Mysql只是一种管理数据库的小型管理系统(DBMS),并不是数据库数据本身。

数据库是一个保存有组织的数据的容器,使用DBMS访问数据库。

表是某中特定类型数据的结构化清单。

模式是关于数据库和表的布局及特性信息。

列是表中的一个字段,所有的表都是由一个或多个列组成。

数据类型是所允许存储数据的类型,每个表列都有相应的数据类型,它限制该列中存储的数据。

行是表中的一个记录。

主键是一列或一组列,其值能够唯一区分表中的每个行。

注意事项在处理SQL语句时,其中所有的空格都会被忽略。

mysql语句之后用”;”或”\g”结束,enter不执行命令。

数据库名不能是纯数字。

MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:

1、数据库名与表名是严格区分大小写的;

2、表的别名是严格区分大小写的;

3、列名与列的别名在所有的情况下均是忽略大小写的;

4、变量名也是严格区分大小写的;

二、Mysql数据(字段)类型

在创建表的时候,要明确定义字段对应的数据类型。MySQL主要的数据类型分为数值类型、字符串(文本)类型、时间日期类型和其他类型几类。

数值类型

数值类型说明:

150518a6a510fc46f97cd4669c622dab.png

补充说明

1.在int(integer)系列中,只能存储整型值,且可以在后面用括号指定显示的尺寸(M),如果不指定则会默认分配。如果实际值的显示宽度大于设定值,将会显示实际值而不会截断以适应显示尺寸。如smallint(3)中的3即为显示尺寸,即显示三位的数值(不包括-号)

2.int类型可以指定UNSIGNED属性,即无符号(非负),所以存储范围有两种

3.在float、double及decimal类型中,不能指定UNSIGNED属性,其显示尺寸包含了小数点精度(D),即float(3,1)保存范围为-99.9至99.9

4.decimal必须指定显示尺寸(M)和小数点精度(D),float和double都是可选的

5.在可能涵盖取值范围的基础上,尽可能选择较小的类型以提高效率和节约存储空间,如年龄,就选择tinyint(3)。该原则对于字符类型同样适用。

字符串(文本)类型

字符串(文本)类型说明:

414f7ef1281d5edcd509c80358842276.png

补充说明

char和varcha需要指定长度,不同的是,char存储时总是按照指定的长度储存,而varchar则根据实际字符串长度再加上一个字节分配空间。

时间日期类型

时间日期类型说明:

115ad03fbca8f81d9fc3e4dcd47185f5.png

补充说明

在PHP中,一般情况下对于时间都是按照UNIX时间戳以int类型存储于表中,再根据实际需要用PHP的时间函数进行处理,但不完全都是这样

三、基本语法

系统管理

连接MySQL

格式: mysql -h主机地址-u用户名-p用户密码

mysql默认没有密码,直接mysql默认以root(和系统的root没关系)身份链接本地的mysql服务

例1:连接到本机上的MySQL。

[[email protected] ~]# mysql -uroot -pmima

例2:连接到远程主机上的MYSQL。

[[email protected] ~]# mysql -uroot -h192.168.1.2-phello

修改新密码

在终端输入:mysql -u用户名-p密码,回车进入Mysql。

> use mysql;

>update user setpassword=PASSWORD(‘新密码‘) where user=‘用户名‘;

>flush privileges;#更新权限

> quit; #退出

增加新用户

格式:grant select on数据库.* to用户名@登录主机identified by ‘密码‘

例:增加一个用户jacken密码为123,让他可以在任何主机上登录,并对所有数据库有

查询、插入、修改、删除的权限。

首先用以root用户连入MySQL,然后键入以下命令:

mysql> grantselect,insert,update,delete  on *.* [email protected] identified by‘123‘;

mysql> grant allprivileges on *.* to [email protected] identified by ‘mysql‘;(有所有权限)

然后刷新权限设置。

mysql>flush privileges;

删除用户

delete from user where user=‘用户名‘ andhost=’主机’;

例子:删除本地主机上的jacken用户(远程主机的jacken用户可登录)

mysql> delete from user whereuser=‘jacken‘ and host=’localhost’;

数据库操作

显示所有的数据库

mysql> show databases;(注意:最后有个s)

创建数据库

mysql> create database test;

连接数据库

mysql> use test01;

查看当前使用的数据库

mysql> select database();

当前数据库包含的表信息

mysql> show tables; (注意:最后有个s)

删除数据库

mysql> drop database test01;

表操作

备注:操作之前使用“use ”应连接某个数据库。

建表

命令:create table ( [,.. ]);

例子:

mysql> create table MyClass(

> id int(4) not null primary keyauto_increment,

> name char(20) not null,

> sex int(4) not null default ‘0‘,

> degree double(16,2));

获取表结构

命令: desc表名,或者show columns from表名

例子:

mysql> describe MyClass

mysql> desc MyClass;

mysql> show columns from MyClass;

删除表

命令:drop table

例如:删除表名为MyClass的表

mysql> drop table MyClass;

插入数据

命令:insert into [( [,.. ])] values (值1 )[, (值n )]

例子:

mysql> insert into myclass values(‘‘,‘Tom‘,‘‘,96.45),(‘‘,‘Joan‘,‘‘,82.99),(‘‘,‘Wang‘,‘‘,96.59);

查询表中的数据

查询所有行

mysql> select * from MyClass;

查询前几行数据

例如:查看表MyClass中前2行数据

mysql> select * from MyClass order by idlimit 0,2;

或者

mysql> select * from MyClass limit 0,2;

select distinct字段from表名;去除重复的字段值

select * from表名where字段=‘值‘ and字段2

select * from表名order by字段;按照指定字段升序排列

select * from表名order by字段【desc】;按照指定字段降序排列

select * from表名order by字段【limit n】;显示前n行

select * from表名order by字段【limit n,m】;从n+1行开始,显示出m行

select FUN_NAME(字段) frombiao1;

FUN_NAME包括sum(求和)、count(*)记录数、max(最大值)、min(最小值)

having和where的区别在于,having是对聚合后的结果进行条件的过滤,而where是在聚合前就对记录进行过滤,如果逻辑允许,尽可能用where先过滤记录,这样因为结果集减少,将对聚合的效率大大提高,最后再根据逻辑看是否用having进行再过滤。

删除表中数据

命令: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字段类型其他;

alter table表名modify字段varchar(20)【first|after】;

alter table表名add字段int(3)【first|after】;

alter table表名drop字段;

alter table表名change字段字段2 int(4)【first|after】;

alter table表名rename字段2;

modify修改字段类型change修改字段名字(新名字加类型)rename修改表名

例如:在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0

mysql> alter table MyClass add passtestint(4) default ‘0‘

更改表名

命令:rename table原表名to新表名;

例如:在表MyClass名字更改为YouClass

mysql> rename table MyClass to YouClass;

更新字段内容

命令:update表名set字段名[where字段]=‘‘=新内容

update表名set字段名=replace(字段名, ‘旧内容‘, ‘新内容‘);

例如:文章前面加入4个空格

update article set content=concat(‘    ‘, content);

数据库导入导出

从数据库导出数据库文件

使用“mysqldump”命令

1)导出所有数据库

格式:mysqldump -u [数据库用户名] -p -A>[备份文件的保存路径]

2)导出数据和数据结构

格式:mysqldump -u [数据库用户名] -p [要备份的数据库名称]>[备份文件的保存路径]

举例:

例1:将数据库mydb导出到/data/mydb.sql文件中。

mysqldump -h localhost -u root -p mydb >/data/mydb.sql

然后输入密码,等待一会导出就成功了,可以到目标文件中检查是否成功。

例2:将数据库mydb中的mytable导出到/data/mytable.sql文件中。

mysqldump -h localhost -u root -p mydbmytable>/data/mytable.sql

例3:将数据库mydb的结构导出到/data/mydb_stru.sql文件中。

mysqldump -h localhost -u root -p mydb--add-drop-table > /data/mydb_stru.sql

备注:-h localhost可以省略,其一般在虚拟主机上用。

3)只导出数据不导出数据结构

格式:

mysqldump -u [数据库用户名] -p -t[要备份的数据库名称]>[备份文件的保存路径]

4)导出数据库中的Events

格式:mysqldump -u [数据库用户名] -p -E [数据库用户名]>[备份文件的保存路径]

5)导出数据库中的存储过程和函数

格式:mysqldump -u [数据库用户名] -p -R [数据库用户名]>[备份文件的保存路径]

从外部文件导入数据库中

1)使用“source”命令

首先创建数据库,然后使用该数据库。最后执行下面操作。

mysql>source [备份文件的保存路径]

2)使用“

首先创建数据库

mysql -u root–p < [备份文件的保存路径]

Other

show processlist

显示哪些线程正在运行。您也可以使用mysqladmin processlist语句得到此信息。如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程(也就是,与您正在使用的MySQL账户相关的线程)。

通配符(wildcard)

用来匹配值的一部分的特殊字符。

搜索模式(search pattern)又字面值、通配符或两者组合构成的搜索条件。

%任何字符出现任意次(>=0)

select prod_name,prod_id from productswhere prod_name LIKE ‘hi%‘;

_匹配单个字符

select prod_name,prod_id from productswhere prod_name LIKE ‘_hi‘;

正则表达式

.代表任意字符。

|  OR匹配,两个串之一,如a|b匹配a或b。

[]匹配几个字符之一,[abc]1匹配a1或b1或c1。。

-匹配范围[2-5]a匹配2a或3a或4a或5a。

\\转义,使通配符代表其本身意思。

^有两种用法,在集合中用来否定该集合,否则指定串的开始处。

$结束符

空白元字符

\\f换页

\\n换行

\\r回车

\\t制表

\\v纵向制表

重复元字符

*                          0个或多个匹配

+一个或多个匹配(等于{1,})

?                          0个或1个匹配(等于{0,1})

{n}指定数目的匹配

{n,}不少于指定数目的匹配

{n,m}匹配数目的范围(m不超过255)

本文出自 “一步步踏入Linux世界” 博客,转载请与作者联系!

原文:http://linuxnote.blog.51cto.com/9876511/1627125

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值