创建数据库 mysql> create database 数据库名称
创建表 mysql> create table 表名 ( 列的名字(id)类型(int(4))primary key(定义主键) auto_increment(描述 自增) ……, );
查看所有数据库 mysql> show databases 数据库名称
使用某个数据库 mysql> use database 数据库名称;
查看所使用数据库下所有的表 mysql> show tables
显示表的属性结构 mysql> desc 表名
删除表 mysql> drop table;
删除数据库 mysql> drop database;
MySQL的Optimizer(优化元件)在优化SQL语句时,首先需要收集一些相关信息,其中就包括表的cardinality(可以翻译为 “散列
程度”),它表示某个索引对应的列包含多少个不同的值——如果cardinality大大少于数据的实际散列程度,那么索引就基本失效了
我们可以使用SHOW INDEX语句来查看索引的散列程度:
SHOW INDEX FROM PLAYERS;
TABLE KEY_NAME COLUMN_NAME CARDINALITY
PLAYERS PRIMARY PLAYERNO 14
因为此时PLAYER表中不同的PLAYERNO数量远远多于14,索引基本失效。
通过Analyze Table语句来修复索引:ANALYZE TABLE PLAYERS; SHOW INDEX FROM PLAYERS;
结果是: TABLE KEY_NAME COLUMN_NAME CARDINALITY PLAYERS PRIMARY PLAYERNO 1000
此时索引已经修复,查询效率大大提高。
MySQL 是完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系结构的分布式数据库管理系统。
MySQL在UNIX等操作系统上是免费的,在Windows操作系统上,可免费使用其客户机程序和客户机程序库
MySQL是一个真正的多用户、多线程SQL数据库服务器。
MySQL 主要目标是快速、健壮和易用。
MySQL 具有许多吸引人之处:
1、速度。MySQL 运行速度很快。 2、容易使用 3、价格。MySQL 对多数个人用户来说是免费的
4、支持查询语言 5、性能。许多客户机可同时连接到服务器
6、连接性和安全性。MySQL 是完全网络化的,其数据库可在因特网上的任何地方访问,
因此,可以和任何地方的任何人共享数据库。而且 MySQL 还能进行访问控制
7、可移植性。MySQL 可运行在各种版本的 UNIX 以及其他非 UNIX 的系统(如 Windows 和 OS/2)上。
。最常用的客户机程序为 mysql,这是一个交互式的客户机程序,它能发布查询并看到结果。
其他的客户机程序有: mysqldump 和 mysqlimport,分别导出表的内容到某个文件或将文件的内容导入某个表;
mysqladmin 用来查看服务器的状态并完成管理任务,如告诉服务器关闭、重起服务器、刷新缓存等
MySQL支持大量的列类型,它可以被分为3类:数字类型、日期和时间类型以及字符串(字符)类型
字符串值既可以用双引号括起来,也可以是用单引号。可使用几个转义序列
。MySQL 支持说明为整数(无小数部分)或浮点数(有小数部分)的值
MySQL支持十六进制值。以十六进制形式表示的整数由“0x”后跟一个或多个十六进制数字(”0”到“9”及“a”到“f”)组成
日期和时间值是一些类似于“1999-06-17”或“12:30:43”这样的值。MySQL 还支持日期/时间的组合,如“1999-06-17 12:30:43”
NULL值可适用于各种列类型,它通常用来表示“没有值”、 “无数据”等意义,并且不同于例如数字类型的0为或字符串类型的空字符串
MySQL的数字列类型
TINYINT一个很小的整数 SMALLINT一个小整数
MEDIUMINT 一个中等大小整数 INT、INTEGER 一个正常大小整数
BIGINT一个大整数 FLOAT一个小(单精密)浮点数字
DOUBLE DOUBLE PRECISION REAL一个正常大小(双精密)浮点数字
DECIMAL NUMERIC 一个未压缩(unpack)的浮点数字,“未压缩”意味着数字作为一个字符串被存储
MySQL的时间和日期列类型
DATE一个日期,以'YYYY-MM-DD'格式来显示
TIME一个日期和时间组合,以'YYYY-MM-DD HH:MM:SS'格式来显示
DATETIME最大长度为255(2^8-1)个字符的BLOB或TEXT列
TIMESTAMP一个时间戳,以YYYMMDDHHMMSS格式来显示
DATA取值范围:“1000-01-01”到“9999-12-31”存储需求:3字节
TIME取值范围:“-838:59:59”到“838:59:59”存储需求:3字节
DATATIME取值范围:“1000-01-01 00:00:00”到“9999-12-31 23:59:59”存储需求:8字节
TIMESTAMP[(M)]取值范围:“19700101000000”到2037年的某个时刻存储需求:4字节
YEAR[(M)]取值范围:1901到2155存储需求:1字节
缺省的情况下,端口是3306,套接字的名字是MySQL
mysql.server脚本安装在MySQL安装目录下的share/mysqld目录下或可以在MySQL源代码分发的support_files目录下找到
mysql.server脚本可以被用来启动或停止服务器,通过用start或stop参数调用它:
$ mysql.server start
$ mysql.server stop
mysqladmin就方便的多,并且适用于MySQL
所有类型、平台的安装。
? 关闭数据库服务器
mysqladmin shutdown
? 重启数据库服务器
mysqladmin reload
? 获得帮助
mysqladmin –help
mysqladmin实用程序非常有使用价值
shell> mysql -h host -u user -p
Enter password: ********
********代表你的口令;当mysql显示Enter password:提示时输入它。
在建立了服务器的一个连接后,可在任何时候键入下列命令来结束会话:
quit exit
还可以键入 Control-D 来退出,至少在 UNIX 上可以这样
把你想要运行的命令放在一个文件中,然后告诉mysql从文件读取它的输入:
shell> mysql < batch-file
为什么要使用一个脚本?有很多原因:
? 如果你重复地运行查询(比如说,每天或每周),把它做成一个脚本使得你在每次执行它时避免重新键入。
? 你能通过拷贝并编辑脚本文件从类似的现有的查询生成一个新查询。
? 当你正在开发查询时,批模式也是很有用的,特别对多行命令或多行语句序列。如果你犯了一个错误,你不必重新打入所有一切,只要编辑你的脚本来改正错误,然后告诉mysql再次执行它。
? 如果你有一个产生很多输出的查询,你可以通过一个分页器而不是盯着它翻屏到你屏幕的顶端来运行输出:
$ mysql < batch-file | more
在命令行环境下可以使用mysqladmin创建和删除数据库。
创建数据库:
shell> mysqladmin create db_name
删除数据库:
shell> mysqladmin drop db_name
用SHOW/ DESCRIBE语句显示数据表的信息
句法:
SHOW TABLES [FROM db_name] [LIKE wild]
or SHOW COLUMNS FROM tbl_name [FROM db_name] [LIKE wild]
or SHOW INDEX FROM tbl_name [FROM db_name]
or SHOW TABLE STATUS [FROM db_name] [LIKE wild]
mysqlshow实用程序的用法,在得到数据库和表的信息上,使用起来非常方便。
得到已有数据库的列表:
shell> mysqlshow
列出某数据库db_name中已有的表:
shell> mysqlshow db_name
列出某数据库表db_name.tbl_name的结构信息:
shell>mysqlshow db_name tbl_name
列出一张表的索引:
shell> mysqlshow –k db_name tbl_name
增加列
alter table tbl_name add col_name type
删除列
alter table tbl_name drop col_name
改变列
alter table tbl_name modify col_name type
给列更名
mysql>alter table pet change weight wei;
给表更名
alter table tbl_name rename new_tbl
使用INSERT语句插入新数据
语法:INSERT [INTO] tbl_name [(col_name,...)] VALUES (pression,...),…
使用多个值表,可以一次提供多行数据。
Mysql>insert into worker values(tom‘,‘tom@yahoo.com‘),(paul‘,‘paul@yahoo.com‘);
从其它表中录入数据,例如:
mysql>insert into tbl_name1(col1,col2) select col3,col4 from tbl_name2;
INSERT INTO ... SELECT语句满足下列条件:
? 查询不能包含一个ORDER BY子句。
? INSERT语句的目的表不能出现在SELECT查询部分的FROM子句,因为这在ANSI SQL中被禁止让从你正在插入的表中SELECT。
使用LOAD语句批量录入数据
:LOAD DATA [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE tbl_name
LOAD DATA INFILE语句从一个文本文件中以很高的速度读入一个表中。如果指定LOCAL关键词,从客户主机读文件。如果LOCAL没指定,文件必须位于服务器上
函数GETDATE(),你可以获得当前的日期和时间
函数GETDATE(),你可以获得当前的日期和时间
CURTIME() 返回当前时间 NOW() 返回当前时期和时间
rand()函数返回一个随机的浮点值 ,使用“^”和“$”匹配名字的开始和结尾
列名在所有情况下都是忽略大小写的 表的别名是区分大小写的 表的别名是区分大小写的 ,MySQL搜索是大小写不敏感的
全连接 左连接 右连接
所有的MySQL列类型能被索引。一个表最多可有16个索引
索引有如下的几种情况:
? INDEX索引:通常意义的索引,某些情况下KEY是它的一个同义词。索引的列可以包括重复的值。
? UNIQUE索引:唯一索引,保证了列不包含重复的值,对于多列唯一索引,它保证值的组合不重复。
? PRIMARY KEY索引:也UNIQUE索引非常类似。事实上,PRIMARY KEY索引仅是一个具有PRIMARY名称的UNIQUE索引。这表示一个表只能包含一个PRIMARY KEY。
用Alter Table语句创建与删除索引
ALTER TABLE tbl_name ADD INDEX index_name (column_list)
ALTER TABLE tbl_name ADD UNIQUE index_name (column_list)
ALTER TABLE tbl_name ADD PRIMARY KEY index_name (column_list)
ALTER TABLE tbl_name DROP INDEX index_name
ALTER TABLE tbl_name DROP PRIMARY KEY
SHOW INDEX FROM student
DROP INDEX mark
用CREATE\DROP INDEX创建索引
CREATE UNIQUE INDEX index_name ON tbl_name (column_list)
CREATE INDEX index_name ON tbl_name (column_list)
删除索引语句的语法如下:DROP INDEX index_name ON tbl_name
还可以再在创建表时指定索引
CREATE TABLE tbl_name
(
…
INDEX index_name (column_list),
KEY index_name (column_list),
UNIQUE index_name (column_list),
PRIMARY KEY index_name (column_list),
…
)
数据库目录是MySQL数据库服务器存放数据文件的地方,不仅包括有关表的文件,还包括数据文件和MySQL的服务器选项文件。不同的分发,数据库目录的缺省位置是不同的。
使用SELECT INTO OUTFILE语句备份数据,并用LOAD DATA INFILE语句恢复数据
SELECT * INTO {OUTFILE | DUMPFILE} 'file_name' FROM tbl_name
LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE]
INTO TABLE tbl_name
假定表tbl_name具有一个PRIMARY KEY或UNIQUE索引,备份一个数据表的过程如下:
1、锁定数据表,避免在备份过程中,表被更新
mysql>LOCK TABLES READ tbl_name;
2、导出数据
mysql>SELECT * INTO OUTFILE ?tbl_name.bak‘ FROM tbl_name;
3、解锁表
mysql>UNLOCK TABLES;
相应的恢复备份的数据的过程如下:
1、为表增加一个写锁定:
mysql>LOCK TABLES tbl_name WRITE;
2、恢复数据
mysql>LOAD DATA INFILE ?tbl_name.bak‘
->REPLACE INTO TABLE tbl_name;
如果,你指定一个LOW_PRIORITY关键字,就不必如上要对表锁定,因为数据的导入将被推迟到没有客户读表为止:
mysql>LOAD DATA LOW_PRIORITY INFILE ?tbl_name‘
->REPLACE INTO TABLE tbl_name;
3、解锁表
mysql->UNLOCAK TABLES;
表的故障检测和修正的一般过程如下:
? 检查出错的表。如果该表检查通过,则完成任务,否则必须修复出错的数据库表。
? 在开始修复之前对表文件进行拷贝,以保证数据的安全。
? 开始修复数据库表。
? 如果修复失败,从数据库的备份或更新日志中恢复数据。
在使用myisamchk或isamchk检查或修复表。
授权表共有5个表:user、db、host、tables_priv和columns_priv
user表列出可以连接服务器的用户及其口令,并且它指定他们有哪种全局(超级用户)权限。在user表启用的任何权限均是全局权限,并适用于所有数据库
db表列出数据库,而用户有权限访问它们
host表与db表结合使用在一个较好层次上控制特定主机对数据库的访问权限,这可能比单独使用db好些。这个表不受GRANT和REVOKE语句的影响,所以,你可能发觉你根本不是用它。
授权表的内容有如下用途:
? tables_priv表 tables_priv表指定表级权限,在这里指定的一个权限适用于一个表的所有列。
? columns_priv表 columns_priv表指定列级权限。这里指定的权限适用于一个表的特定列。
使用SHOW GRANTS语句显示用户的授权 :SHOW GRANTS FOR user_name
使用GRANT语句创建用户并授权
GRANT priv_type (columns)
数 据7库安 全
h t t p : / / w w w . y u r e n n e t . c o m 163
ON what
TO user IDENTIFIED BY “password”
WITH GRANT OPTION
GRANT允许系统主管在4个权限级别上授权MySQL用户的权利:全局级别(全局权限作用于一个给定服务器上的所有数据库,。这些权限存储在mysql.user表)
数据库级别(数据库权限作用于一个给定数据库的所有表。这些权限存储在mysql.db和mysql.host表中。)
表级别(表权限作用于一个给定表的所有列。这些权限存储在mysql.tables_priv表中)
列级别(列权限作用于在一个给定表的单个列。这些权限存储在mysql.columns_priv表)
为了收回某个用户的权限,可使用REVOKE语句。除了要用FROM替换TO并且没有IDENTIFIED BY 或WITH GRANT OPTION子句外
语法:REVOKE privileges (columns) ON what FROM user;
相关推荐
### MySQL常用命令总结 本文将基于提供的部分内容对MySQL的基本操作命令进行详细解析,这些命令涵盖了数据库及表的基本管理,如创建、查询、更新等。掌握这些命令有助于更好地管理和操作MySQL数据库。 #### 一、...
### MySQL常用命令总结 #### 一、连接MySQL 在MySQL中,通过命令行连接到数据库是一种常见且实用的方法。连接MySQL的基本格式为: ```sql mysql -h 主机地址 -u 用户名 -p 用户密码 ``` - **连接到本机上的MySQL...
mysql MySql常用命令总结
MySQL常用命令总结 MySQL常用命令总结
### MySQL常用命令精要解析 #### 一、MySQL基础命令概览 MySQL是全球最流行的开源关系型数据库管理系统之一,其高效稳定、功能全面而深受广大开发者喜爱。掌握MySQL的基本命令是进行数据库管理与开发的基础。 ###...
在windows中MySql以服务形式存在,在使用前应确保此服务已经启动,未启动可用net start mysql命令启动。而Linux中启动时可用“/etc/rc.d/init.d/mysqld start”命令,注意启动者应具有管理员权限。 刚安装好的MySql...
以下是一些MySQL常用命令的详细说明: 1. **创建数据库**: - `CREATE DATABASE`: 用于创建新的数据库。例如,`CREATE DATABASE mydb;` 创建名为`mydb`的数据库。 2. **选择数据库**: - `USE`: 用于切换到指定...
以下是关于MySQL常用命令的一些详细解释: 1. **连接MySQL**: - 使用`mysql -u<username> -p`命令可以连接到本地MySQL服务器,其中`<username>`是你的用户名。如果你的密码为空,直接按回车即可。例如,`mysql -u...
对于MySQL 8.0,了解并熟练掌握常用命令对于数据库管理至关重要。以下是一些关键的MySQL命令及其详细解释: 1. **登录数据库**: 使用`mysql -u root -p`命令登录MySQL服务器,其中`root`是用户名,系统会提示输入...
这篇文档将深入探讨MySQL的常用命令,旨在为初学者提供一份全面的参考指南。 1. **连接与断开MySQL服务器** - `mysql -u username -p`: 连接到MySQL服务器,username是你在MySQL中的用户名,系统会提示输入密码。 ...
在数据库管理与操作中,MySql是一个广泛...熟悉和掌握这些常用命令,可以有效提升管理数据库的效率和准确性。同时,在实际操作中,还需要注意命令的权限要求和数据的完整性校验,防止因误操作导致数据丢失或系统故障。